gdb/
[platform/upstream/binutils.git] / gdb / gdbtypes.c
1 /* Support routines for manipulating internal types for GDB.
2
3    Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
4
5    Contributed by Cygnus Support, using pieces from other GDB modules.
6
7    This file is part of GDB.
8
9    This program is free software; you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation; either version 3 of the License, or
12    (at your option) any later version.
13
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
18
19    You should have received a copy of the GNU General Public License
20    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
21
22 #include "defs.h"
23 #include "gdb_string.h"
24 #include "bfd.h"
25 #include "symtab.h"
26 #include "symfile.h"
27 #include "objfiles.h"
28 #include "gdbtypes.h"
29 #include "expression.h"
30 #include "language.h"
31 #include "target.h"
32 #include "value.h"
33 #include "demangle.h"
34 #include "complaints.h"
35 #include "gdbcmd.h"
36 #include "cp-abi.h"
37 #include "gdb_assert.h"
38 #include "hashtab.h"
39 #include "exceptions.h"
40
41 /* Initialize BADNESS constants.  */
42
43 const struct rank LENGTH_MISMATCH_BADNESS = {100,0};
44
45 const struct rank TOO_FEW_PARAMS_BADNESS = {100,0};
46 const struct rank INCOMPATIBLE_TYPE_BADNESS = {100,0};
47
48 const struct rank EXACT_MATCH_BADNESS = {0,0};
49
50 const struct rank INTEGER_PROMOTION_BADNESS = {1,0};
51 const struct rank FLOAT_PROMOTION_BADNESS = {1,0};
52 const struct rank BASE_PTR_CONVERSION_BADNESS = {1,0};
53 const struct rank INTEGER_CONVERSION_BADNESS = {2,0};
54 const struct rank FLOAT_CONVERSION_BADNESS = {2,0};
55 const struct rank INT_FLOAT_CONVERSION_BADNESS = {2,0};
56 const struct rank VOID_PTR_CONVERSION_BADNESS = {2,0};
57 const struct rank BOOL_PTR_CONVERSION_BADNESS = {3,0};
58 const struct rank BASE_CONVERSION_BADNESS = {2,0};
59 const struct rank REFERENCE_CONVERSION_BADNESS = {2,0};
60 const struct rank NULL_POINTER_CONVERSION_BADNESS = {2,0};
61 const struct rank NS_POINTER_CONVERSION_BADNESS = {10,0};
62
63 /* Floatformat pairs.  */
64 const struct floatformat *floatformats_ieee_half[BFD_ENDIAN_UNKNOWN] = {
65   &floatformat_ieee_half_big,
66   &floatformat_ieee_half_little
67 };
68 const struct floatformat *floatformats_ieee_single[BFD_ENDIAN_UNKNOWN] = {
69   &floatformat_ieee_single_big,
70   &floatformat_ieee_single_little
71 };
72 const struct floatformat *floatformats_ieee_double[BFD_ENDIAN_UNKNOWN] = {
73   &floatformat_ieee_double_big,
74   &floatformat_ieee_double_little
75 };
76 const struct floatformat *floatformats_ieee_double_littlebyte_bigword[BFD_ENDIAN_UNKNOWN] = {
77   &floatformat_ieee_double_big,
78   &floatformat_ieee_double_littlebyte_bigword
79 };
80 const struct floatformat *floatformats_i387_ext[BFD_ENDIAN_UNKNOWN] = {
81   &floatformat_i387_ext,
82   &floatformat_i387_ext
83 };
84 const struct floatformat *floatformats_m68881_ext[BFD_ENDIAN_UNKNOWN] = {
85   &floatformat_m68881_ext,
86   &floatformat_m68881_ext
87 };
88 const struct floatformat *floatformats_arm_ext[BFD_ENDIAN_UNKNOWN] = {
89   &floatformat_arm_ext_big,
90   &floatformat_arm_ext_littlebyte_bigword
91 };
92 const struct floatformat *floatformats_ia64_spill[BFD_ENDIAN_UNKNOWN] = {
93   &floatformat_ia64_spill_big,
94   &floatformat_ia64_spill_little
95 };
96 const struct floatformat *floatformats_ia64_quad[BFD_ENDIAN_UNKNOWN] = {
97   &floatformat_ia64_quad_big,
98   &floatformat_ia64_quad_little
99 };
100 const struct floatformat *floatformats_vax_f[BFD_ENDIAN_UNKNOWN] = {
101   &floatformat_vax_f,
102   &floatformat_vax_f
103 };
104 const struct floatformat *floatformats_vax_d[BFD_ENDIAN_UNKNOWN] = {
105   &floatformat_vax_d,
106   &floatformat_vax_d
107 };
108 const struct floatformat *floatformats_ibm_long_double[BFD_ENDIAN_UNKNOWN] = {
109   &floatformat_ibm_long_double,
110   &floatformat_ibm_long_double
111 };
112
113 /* Should opaque types be resolved?  */
114
115 static int opaque_type_resolution = 1;
116
117 /* A flag to enable printing of debugging information of C++
118    overloading.  */
119
120 unsigned int overload_debug = 0;
121
122 /* A function to show whether opaque types are resolved.  */
123
124 static void
125 show_opaque_type_resolution (struct ui_file *file, int from_tty,
126                              struct cmd_list_element *c, 
127                              const char *value)
128 {
129   fprintf_filtered (file, _("Resolution of opaque struct/class/union types "
130                             "(if set before loading symbols) is %s.\n"),
131                     value);
132 }
133
134 /* A function to show whether C++ overload debugging is enabled.  */
135
136 static void
137 show_overload_debug (struct ui_file *file, int from_tty,
138                      struct cmd_list_element *c, const char *value)
139 {
140   fprintf_filtered (file, _("Debugging of C++ overloading is %s.\n"), 
141                     value);
142 }
143
144 \f
145 /* Allocate a new OBJFILE-associated type structure and fill it
146    with some defaults.  Space for the type structure is allocated
147    on the objfile's objfile_obstack.  */
148
149 struct type *
150 alloc_type (struct objfile *objfile)
151 {
152   struct type *type;
153
154   gdb_assert (objfile != NULL);
155
156   /* Alloc the structure and start off with all fields zeroed.  */
157   type = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct type);
158   TYPE_MAIN_TYPE (type) = OBSTACK_ZALLOC (&objfile->objfile_obstack,
159                                           struct main_type);
160   OBJSTAT (objfile, n_types++);
161
162   TYPE_OBJFILE_OWNED (type) = 1;
163   TYPE_OWNER (type).objfile = objfile;
164
165   /* Initialize the fields that might not be zero.  */
166
167   TYPE_CODE (type) = TYPE_CODE_UNDEF;
168   TYPE_VPTR_FIELDNO (type) = -1;
169   TYPE_CHAIN (type) = type;     /* Chain back to itself.  */
170
171   return type;
172 }
173
174 /* Allocate a new GDBARCH-associated type structure and fill it
175    with some defaults.  Space for the type structure is allocated
176    on the heap.  */
177
178 struct type *
179 alloc_type_arch (struct gdbarch *gdbarch)
180 {
181   struct type *type;
182
183   gdb_assert (gdbarch != NULL);
184
185   /* Alloc the structure and start off with all fields zeroed.  */
186
187   type = XZALLOC (struct type);
188   TYPE_MAIN_TYPE (type) = XZALLOC (struct main_type);
189
190   TYPE_OBJFILE_OWNED (type) = 0;
191   TYPE_OWNER (type).gdbarch = gdbarch;
192
193   /* Initialize the fields that might not be zero.  */
194
195   TYPE_CODE (type) = TYPE_CODE_UNDEF;
196   TYPE_VPTR_FIELDNO (type) = -1;
197   TYPE_CHAIN (type) = type;     /* Chain back to itself.  */
198
199   return type;
200 }
201
202 /* If TYPE is objfile-associated, allocate a new type structure
203    associated with the same objfile.  If TYPE is gdbarch-associated,
204    allocate a new type structure associated with the same gdbarch.  */
205
206 struct type *
207 alloc_type_copy (const struct type *type)
208 {
209   if (TYPE_OBJFILE_OWNED (type))
210     return alloc_type (TYPE_OWNER (type).objfile);
211   else
212     return alloc_type_arch (TYPE_OWNER (type).gdbarch);
213 }
214
215 /* If TYPE is gdbarch-associated, return that architecture.
216    If TYPE is objfile-associated, return that objfile's architecture.  */
217
218 struct gdbarch *
219 get_type_arch (const struct type *type)
220 {
221   if (TYPE_OBJFILE_OWNED (type))
222     return get_objfile_arch (TYPE_OWNER (type).objfile);
223   else
224     return TYPE_OWNER (type).gdbarch;
225 }
226
227 /* Alloc a new type instance structure, fill it with some defaults,
228    and point it at OLDTYPE.  Allocate the new type instance from the
229    same place as OLDTYPE.  */
230
231 static struct type *
232 alloc_type_instance (struct type *oldtype)
233 {
234   struct type *type;
235
236   /* Allocate the structure.  */
237
238   if (! TYPE_OBJFILE_OWNED (oldtype))
239     type = XZALLOC (struct type);
240   else
241     type = OBSTACK_ZALLOC (&TYPE_OBJFILE (oldtype)->objfile_obstack,
242                            struct type);
243
244   TYPE_MAIN_TYPE (type) = TYPE_MAIN_TYPE (oldtype);
245
246   TYPE_CHAIN (type) = type;     /* Chain back to itself for now.  */
247
248   return type;
249 }
250
251 /* Clear all remnants of the previous type at TYPE, in preparation for
252    replacing it with something else.  Preserve owner information.  */
253
254 static void
255 smash_type (struct type *type)
256 {
257   int objfile_owned = TYPE_OBJFILE_OWNED (type);
258   union type_owner owner = TYPE_OWNER (type);
259
260   memset (TYPE_MAIN_TYPE (type), 0, sizeof (struct main_type));
261
262   /* Restore owner information.  */
263   TYPE_OBJFILE_OWNED (type) = objfile_owned;
264   TYPE_OWNER (type) = owner;
265
266   /* For now, delete the rings.  */
267   TYPE_CHAIN (type) = type;
268
269   /* For now, leave the pointer/reference types alone.  */
270 }
271
272 /* Lookup a pointer to a type TYPE.  TYPEPTR, if nonzero, points
273    to a pointer to memory where the pointer type should be stored.
274    If *TYPEPTR is zero, update it to point to the pointer type we return.
275    We allocate new memory if needed.  */
276
277 struct type *
278 make_pointer_type (struct type *type, struct type **typeptr)
279 {
280   struct type *ntype;   /* New type */
281   struct type *chain;
282
283   ntype = TYPE_POINTER_TYPE (type);
284
285   if (ntype)
286     {
287       if (typeptr == 0)
288         return ntype;           /* Don't care about alloc, 
289                                    and have new type.  */
290       else if (*typeptr == 0)
291         {
292           *typeptr = ntype;     /* Tracking alloc, and have new type.  */
293           return ntype;
294         }
295     }
296
297   if (typeptr == 0 || *typeptr == 0)    /* We'll need to allocate one.  */
298     {
299       ntype = alloc_type_copy (type);
300       if (typeptr)
301         *typeptr = ntype;
302     }
303   else                  /* We have storage, but need to reset it.  */
304     {
305       ntype = *typeptr;
306       chain = TYPE_CHAIN (ntype);
307       smash_type (ntype);
308       TYPE_CHAIN (ntype) = chain;
309     }
310
311   TYPE_TARGET_TYPE (ntype) = type;
312   TYPE_POINTER_TYPE (type) = ntype;
313
314   /* FIXME!  Assumes the machine has only one representation for pointers!  */
315
316   TYPE_LENGTH (ntype)
317     = gdbarch_ptr_bit (get_type_arch (type)) / TARGET_CHAR_BIT;
318   TYPE_CODE (ntype) = TYPE_CODE_PTR;
319
320   /* Mark pointers as unsigned.  The target converts between pointers
321      and addresses (CORE_ADDRs) using gdbarch_pointer_to_address and
322      gdbarch_address_to_pointer.  */
323   TYPE_UNSIGNED (ntype) = 1;
324
325   /* Update the length of all the other variants of this type.  */
326   chain = TYPE_CHAIN (ntype);
327   while (chain != ntype)
328     {
329       TYPE_LENGTH (chain) = TYPE_LENGTH (ntype);
330       chain = TYPE_CHAIN (chain);
331     }
332
333   return ntype;
334 }
335
336 /* Given a type TYPE, return a type of pointers to that type.
337    May need to construct such a type if this is the first use.  */
338
339 struct type *
340 lookup_pointer_type (struct type *type)
341 {
342   return make_pointer_type (type, (struct type **) 0);
343 }
344
345 /* Lookup a C++ `reference' to a type TYPE.  TYPEPTR, if nonzero,
346    points to a pointer to memory where the reference type should be
347    stored.  If *TYPEPTR is zero, update it to point to the reference
348    type we return.  We allocate new memory if needed.  */
349
350 struct type *
351 make_reference_type (struct type *type, struct type **typeptr)
352 {
353   struct type *ntype;   /* New type */
354   struct type *chain;
355
356   ntype = TYPE_REFERENCE_TYPE (type);
357
358   if (ntype)
359     {
360       if (typeptr == 0)
361         return ntype;           /* Don't care about alloc, 
362                                    and have new type.  */
363       else if (*typeptr == 0)
364         {
365           *typeptr = ntype;     /* Tracking alloc, and have new type.  */
366           return ntype;
367         }
368     }
369
370   if (typeptr == 0 || *typeptr == 0)    /* We'll need to allocate one.  */
371     {
372       ntype = alloc_type_copy (type);
373       if (typeptr)
374         *typeptr = ntype;
375     }
376   else                  /* We have storage, but need to reset it.  */
377     {
378       ntype = *typeptr;
379       chain = TYPE_CHAIN (ntype);
380       smash_type (ntype);
381       TYPE_CHAIN (ntype) = chain;
382     }
383
384   TYPE_TARGET_TYPE (ntype) = type;
385   TYPE_REFERENCE_TYPE (type) = ntype;
386
387   /* FIXME!  Assume the machine has only one representation for
388      references, and that it matches the (only) representation for
389      pointers!  */
390
391   TYPE_LENGTH (ntype) =
392     gdbarch_ptr_bit (get_type_arch (type)) / TARGET_CHAR_BIT;
393   TYPE_CODE (ntype) = TYPE_CODE_REF;
394
395   if (!TYPE_REFERENCE_TYPE (type))      /* Remember it, if don't have one.  */
396     TYPE_REFERENCE_TYPE (type) = ntype;
397
398   /* Update the length of all the other variants of this type.  */
399   chain = TYPE_CHAIN (ntype);
400   while (chain != ntype)
401     {
402       TYPE_LENGTH (chain) = TYPE_LENGTH (ntype);
403       chain = TYPE_CHAIN (chain);
404     }
405
406   return ntype;
407 }
408
409 /* Same as above, but caller doesn't care about memory allocation
410    details.  */
411
412 struct type *
413 lookup_reference_type (struct type *type)
414 {
415   return make_reference_type (type, (struct type **) 0);
416 }
417
418 /* Lookup a function type that returns type TYPE.  TYPEPTR, if
419    nonzero, points to a pointer to memory where the function type
420    should be stored.  If *TYPEPTR is zero, update it to point to the
421    function type we return.  We allocate new memory if needed.  */
422
423 struct type *
424 make_function_type (struct type *type, struct type **typeptr)
425 {
426   struct type *ntype;   /* New type */
427
428   if (typeptr == 0 || *typeptr == 0)    /* We'll need to allocate one.  */
429     {
430       ntype = alloc_type_copy (type);
431       if (typeptr)
432         *typeptr = ntype;
433     }
434   else                  /* We have storage, but need to reset it.  */
435     {
436       ntype = *typeptr;
437       smash_type (ntype);
438     }
439
440   TYPE_TARGET_TYPE (ntype) = type;
441
442   TYPE_LENGTH (ntype) = 1;
443   TYPE_CODE (ntype) = TYPE_CODE_FUNC;
444
445   INIT_FUNC_SPECIFIC (ntype);
446
447   return ntype;
448 }
449
450 /* Given a type TYPE, return a type of functions that return that type.
451    May need to construct such a type if this is the first use.  */
452
453 struct type *
454 lookup_function_type (struct type *type)
455 {
456   return make_function_type (type, (struct type **) 0);
457 }
458
459 /* Given a type TYPE and argument types, return the appropriate
460    function type.  If the final type in PARAM_TYPES is NULL, make a
461    varargs function.  */
462
463 struct type *
464 lookup_function_type_with_arguments (struct type *type,
465                                      int nparams,
466                                      struct type **param_types)
467 {
468   struct type *fn = make_function_type (type, (struct type **) 0);
469   int i;
470
471   if (nparams > 0)
472     {
473       if (param_types[nparams - 1] == NULL)
474         {
475           --nparams;
476           TYPE_VARARGS (fn) = 1;
477         }
478       else if (TYPE_CODE (check_typedef (param_types[nparams - 1]))
479                == TYPE_CODE_VOID)
480         {
481           --nparams;
482           /* Caller should have ensured this.  */
483           gdb_assert (nparams == 0);
484           TYPE_PROTOTYPED (fn) = 1;
485         }
486     }
487
488   TYPE_NFIELDS (fn) = nparams;
489   TYPE_FIELDS (fn) = TYPE_ZALLOC (fn, nparams * sizeof (struct field));
490   for (i = 0; i < nparams; ++i)
491     TYPE_FIELD_TYPE (fn, i) = param_types[i];
492
493   return fn;
494 }
495
496 /* Identify address space identifier by name --
497    return the integer flag defined in gdbtypes.h.  */
498
499 int
500 address_space_name_to_int (struct gdbarch *gdbarch, char *space_identifier)
501 {
502   int type_flags;
503
504   /* Check for known address space delimiters.  */
505   if (!strcmp (space_identifier, "code"))
506     return TYPE_INSTANCE_FLAG_CODE_SPACE;
507   else if (!strcmp (space_identifier, "data"))
508     return TYPE_INSTANCE_FLAG_DATA_SPACE;
509   else if (gdbarch_address_class_name_to_type_flags_p (gdbarch)
510            && gdbarch_address_class_name_to_type_flags (gdbarch,
511                                                         space_identifier,
512                                                         &type_flags))
513     return type_flags;
514   else
515     error (_("Unknown address space specifier: \"%s\""), space_identifier);
516 }
517
518 /* Identify address space identifier by integer flag as defined in 
519    gdbtypes.h -- return the string version of the adress space name.  */
520
521 const char *
522 address_space_int_to_name (struct gdbarch *gdbarch, int space_flag)
523 {
524   if (space_flag & TYPE_INSTANCE_FLAG_CODE_SPACE)
525     return "code";
526   else if (space_flag & TYPE_INSTANCE_FLAG_DATA_SPACE)
527     return "data";
528   else if ((space_flag & TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
529            && gdbarch_address_class_type_flags_to_name_p (gdbarch))
530     return gdbarch_address_class_type_flags_to_name (gdbarch, space_flag);
531   else
532     return NULL;
533 }
534
535 /* Create a new type with instance flags NEW_FLAGS, based on TYPE.
536
537    If STORAGE is non-NULL, create the new type instance there.
538    STORAGE must be in the same obstack as TYPE.  */
539
540 static struct type *
541 make_qualified_type (struct type *type, int new_flags,
542                      struct type *storage)
543 {
544   struct type *ntype;
545
546   ntype = type;
547   do
548     {
549       if (TYPE_INSTANCE_FLAGS (ntype) == new_flags)
550         return ntype;
551       ntype = TYPE_CHAIN (ntype);
552     }
553   while (ntype != type);
554
555   /* Create a new type instance.  */
556   if (storage == NULL)
557     ntype = alloc_type_instance (type);
558   else
559     {
560       /* If STORAGE was provided, it had better be in the same objfile
561          as TYPE.  Otherwise, we can't link it into TYPE's cv chain:
562          if one objfile is freed and the other kept, we'd have
563          dangling pointers.  */
564       gdb_assert (TYPE_OBJFILE (type) == TYPE_OBJFILE (storage));
565
566       ntype = storage;
567       TYPE_MAIN_TYPE (ntype) = TYPE_MAIN_TYPE (type);
568       TYPE_CHAIN (ntype) = ntype;
569     }
570
571   /* Pointers or references to the original type are not relevant to
572      the new type.  */
573   TYPE_POINTER_TYPE (ntype) = (struct type *) 0;
574   TYPE_REFERENCE_TYPE (ntype) = (struct type *) 0;
575
576   /* Chain the new qualified type to the old type.  */
577   TYPE_CHAIN (ntype) = TYPE_CHAIN (type);
578   TYPE_CHAIN (type) = ntype;
579
580   /* Now set the instance flags and return the new type.  */
581   TYPE_INSTANCE_FLAGS (ntype) = new_flags;
582
583   /* Set length of new type to that of the original type.  */
584   TYPE_LENGTH (ntype) = TYPE_LENGTH (type);
585
586   return ntype;
587 }
588
589 /* Make an address-space-delimited variant of a type -- a type that
590    is identical to the one supplied except that it has an address
591    space attribute attached to it (such as "code" or "data").
592
593    The space attributes "code" and "data" are for Harvard
594    architectures.  The address space attributes are for architectures
595    which have alternately sized pointers or pointers with alternate
596    representations.  */
597
598 struct type *
599 make_type_with_address_space (struct type *type, int space_flag)
600 {
601   int new_flags = ((TYPE_INSTANCE_FLAGS (type)
602                     & ~(TYPE_INSTANCE_FLAG_CODE_SPACE
603                         | TYPE_INSTANCE_FLAG_DATA_SPACE
604                         | TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL))
605                    | space_flag);
606
607   return make_qualified_type (type, new_flags, NULL);
608 }
609
610 /* Make a "c-v" variant of a type -- a type that is identical to the
611    one supplied except that it may have const or volatile attributes
612    CNST is a flag for setting the const attribute
613    VOLTL is a flag for setting the volatile attribute
614    TYPE is the base type whose variant we are creating.
615
616    If TYPEPTR and *TYPEPTR are non-zero, then *TYPEPTR points to
617    storage to hold the new qualified type; *TYPEPTR and TYPE must be
618    in the same objfile.  Otherwise, allocate fresh memory for the new
619    type whereever TYPE lives.  If TYPEPTR is non-zero, set it to the
620    new type we construct.  */
621
622 struct type *
623 make_cv_type (int cnst, int voltl, 
624               struct type *type, 
625               struct type **typeptr)
626 {
627   struct type *ntype;   /* New type */
628
629   int new_flags = (TYPE_INSTANCE_FLAGS (type)
630                    & ~(TYPE_INSTANCE_FLAG_CONST 
631                        | TYPE_INSTANCE_FLAG_VOLATILE));
632
633   if (cnst)
634     new_flags |= TYPE_INSTANCE_FLAG_CONST;
635
636   if (voltl)
637     new_flags |= TYPE_INSTANCE_FLAG_VOLATILE;
638
639   if (typeptr && *typeptr != NULL)
640     {
641       /* TYPE and *TYPEPTR must be in the same objfile.  We can't have
642          a C-V variant chain that threads across objfiles: if one
643          objfile gets freed, then the other has a broken C-V chain.
644
645          This code used to try to copy over the main type from TYPE to
646          *TYPEPTR if they were in different objfiles, but that's
647          wrong, too: TYPE may have a field list or member function
648          lists, which refer to types of their own, etc. etc.  The
649          whole shebang would need to be copied over recursively; you
650          can't have inter-objfile pointers.  The only thing to do is
651          to leave stub types as stub types, and look them up afresh by
652          name each time you encounter them.  */
653       gdb_assert (TYPE_OBJFILE (*typeptr) == TYPE_OBJFILE (type));
654     }
655   
656   ntype = make_qualified_type (type, new_flags, 
657                                typeptr ? *typeptr : NULL);
658
659   if (typeptr != NULL)
660     *typeptr = ntype;
661
662   return ntype;
663 }
664
665 /* Replace the contents of ntype with the type *type.  This changes the
666    contents, rather than the pointer for TYPE_MAIN_TYPE (ntype); thus
667    the changes are propogated to all types in the TYPE_CHAIN.
668
669    In order to build recursive types, it's inevitable that we'll need
670    to update types in place --- but this sort of indiscriminate
671    smashing is ugly, and needs to be replaced with something more
672    controlled.  TYPE_MAIN_TYPE is a step in this direction; it's not
673    clear if more steps are needed.  */
674
675 void
676 replace_type (struct type *ntype, struct type *type)
677 {
678   struct type *chain;
679
680   /* These two types had better be in the same objfile.  Otherwise,
681      the assignment of one type's main type structure to the other
682      will produce a type with references to objects (names; field
683      lists; etc.) allocated on an objfile other than its own.  */
684   gdb_assert (TYPE_OBJFILE (ntype) == TYPE_OBJFILE (ntype));
685
686   *TYPE_MAIN_TYPE (ntype) = *TYPE_MAIN_TYPE (type);
687
688   /* The type length is not a part of the main type.  Update it for
689      each type on the variant chain.  */
690   chain = ntype;
691   do
692     {
693       /* Assert that this element of the chain has no address-class bits
694          set in its flags.  Such type variants might have type lengths
695          which are supposed to be different from the non-address-class
696          variants.  This assertion shouldn't ever be triggered because
697          symbol readers which do construct address-class variants don't
698          call replace_type().  */
699       gdb_assert (TYPE_ADDRESS_CLASS_ALL (chain) == 0);
700
701       TYPE_LENGTH (chain) = TYPE_LENGTH (type);
702       chain = TYPE_CHAIN (chain);
703     }
704   while (ntype != chain);
705
706   /* Assert that the two types have equivalent instance qualifiers.
707      This should be true for at least all of our debug readers.  */
708   gdb_assert (TYPE_INSTANCE_FLAGS (ntype) == TYPE_INSTANCE_FLAGS (type));
709 }
710
711 /* Implement direct support for MEMBER_TYPE in GNU C++.
712    May need to construct such a type if this is the first use.
713    The TYPE is the type of the member.  The DOMAIN is the type
714    of the aggregate that the member belongs to.  */
715
716 struct type *
717 lookup_memberptr_type (struct type *type, struct type *domain)
718 {
719   struct type *mtype;
720
721   mtype = alloc_type_copy (type);
722   smash_to_memberptr_type (mtype, domain, type);
723   return mtype;
724 }
725
726 /* Return a pointer-to-method type, for a method of type TO_TYPE.  */
727
728 struct type *
729 lookup_methodptr_type (struct type *to_type)
730 {
731   struct type *mtype;
732
733   mtype = alloc_type_copy (to_type);
734   smash_to_methodptr_type (mtype, to_type);
735   return mtype;
736 }
737
738 /* Allocate a stub method whose return type is TYPE.  This apparently
739    happens for speed of symbol reading, since parsing out the
740    arguments to the method is cpu-intensive, the way we are doing it.
741    So, we will fill in arguments later.  This always returns a fresh
742    type.  */
743
744 struct type *
745 allocate_stub_method (struct type *type)
746 {
747   struct type *mtype;
748
749   mtype = alloc_type_copy (type);
750   TYPE_CODE (mtype) = TYPE_CODE_METHOD;
751   TYPE_LENGTH (mtype) = 1;
752   TYPE_STUB (mtype) = 1;
753   TYPE_TARGET_TYPE (mtype) = type;
754   /*  _DOMAIN_TYPE (mtype) = unknown yet */
755   return mtype;
756 }
757
758 /* Create a range type using either a blank type supplied in
759    RESULT_TYPE, or creating a new type, inheriting the objfile from
760    INDEX_TYPE.
761
762    Indices will be of type INDEX_TYPE, and will range from LOW_BOUND
763    to HIGH_BOUND, inclusive.
764
765    FIXME: Maybe we should check the TYPE_CODE of RESULT_TYPE to make
766    sure it is TYPE_CODE_UNDEF before we bash it into a range type?  */
767
768 struct type *
769 create_range_type (struct type *result_type, struct type *index_type,
770                    LONGEST low_bound, LONGEST high_bound)
771 {
772   if (result_type == NULL)
773     result_type = alloc_type_copy (index_type);
774   TYPE_CODE (result_type) = TYPE_CODE_RANGE;
775   TYPE_TARGET_TYPE (result_type) = index_type;
776   if (TYPE_STUB (index_type))
777     TYPE_TARGET_STUB (result_type) = 1;
778   else
779     TYPE_LENGTH (result_type) = TYPE_LENGTH (check_typedef (index_type));
780   TYPE_RANGE_DATA (result_type) = (struct range_bounds *)
781     TYPE_ZALLOC (result_type, sizeof (struct range_bounds));
782   TYPE_LOW_BOUND (result_type) = low_bound;
783   TYPE_HIGH_BOUND (result_type) = high_bound;
784
785   if (low_bound >= 0)
786     TYPE_UNSIGNED (result_type) = 1;
787
788   return result_type;
789 }
790
791 /* Set *LOWP and *HIGHP to the lower and upper bounds of discrete type
792    TYPE.  Return 1 if type is a range type, 0 if it is discrete (and
793    bounds will fit in LONGEST), or -1 otherwise.  */
794
795 int
796 get_discrete_bounds (struct type *type, LONGEST *lowp, LONGEST *highp)
797 {
798   CHECK_TYPEDEF (type);
799   switch (TYPE_CODE (type))
800     {
801     case TYPE_CODE_RANGE:
802       *lowp = TYPE_LOW_BOUND (type);
803       *highp = TYPE_HIGH_BOUND (type);
804       return 1;
805     case TYPE_CODE_ENUM:
806       if (TYPE_NFIELDS (type) > 0)
807         {
808           /* The enums may not be sorted by value, so search all
809              entries.  */
810           int i;
811
812           *lowp = *highp = TYPE_FIELD_ENUMVAL (type, 0);
813           for (i = 0; i < TYPE_NFIELDS (type); i++)
814             {
815               if (TYPE_FIELD_ENUMVAL (type, i) < *lowp)
816                 *lowp = TYPE_FIELD_ENUMVAL (type, i);
817               if (TYPE_FIELD_ENUMVAL (type, i) > *highp)
818                 *highp = TYPE_FIELD_ENUMVAL (type, i);
819             }
820
821           /* Set unsigned indicator if warranted.  */
822           if (*lowp >= 0)
823             {
824               TYPE_UNSIGNED (type) = 1;
825             }
826         }
827       else
828         {
829           *lowp = 0;
830           *highp = -1;
831         }
832       return 0;
833     case TYPE_CODE_BOOL:
834       *lowp = 0;
835       *highp = 1;
836       return 0;
837     case TYPE_CODE_INT:
838       if (TYPE_LENGTH (type) > sizeof (LONGEST))        /* Too big */
839         return -1;
840       if (!TYPE_UNSIGNED (type))
841         {
842           *lowp = -(1 << (TYPE_LENGTH (type) * TARGET_CHAR_BIT - 1));
843           *highp = -*lowp - 1;
844           return 0;
845         }
846       /* ... fall through for unsigned ints ...  */
847     case TYPE_CODE_CHAR:
848       *lowp = 0;
849       /* This round-about calculation is to avoid shifting by
850          TYPE_LENGTH (type) * TARGET_CHAR_BIT, which will not work
851          if TYPE_LENGTH (type) == sizeof (LONGEST).  */
852       *highp = 1 << (TYPE_LENGTH (type) * TARGET_CHAR_BIT - 1);
853       *highp = (*highp - 1) | *highp;
854       return 0;
855     default:
856       return -1;
857     }
858 }
859
860 /* Assuming TYPE is a simple, non-empty array type, compute its upper
861    and lower bound.  Save the low bound into LOW_BOUND if not NULL.
862    Save the high bound into HIGH_BOUND if not NULL.
863
864    Return 1 if the operation was successful.  Return zero otherwise,
865    in which case the values of LOW_BOUND and HIGH_BOUNDS are unmodified.
866
867    We now simply use get_discrete_bounds call to get the values
868    of the low and high bounds.
869    get_discrete_bounds can return three values:
870    1, meaning that index is a range,
871    0, meaning that index is a discrete type,
872    or -1 for failure.  */
873
874 int
875 get_array_bounds (struct type *type, LONGEST *low_bound, LONGEST *high_bound)
876 {
877   struct type *index = TYPE_INDEX_TYPE (type);
878   LONGEST low = 0;
879   LONGEST high = 0;
880   int res;
881
882   if (index == NULL)
883     return 0;
884
885   res = get_discrete_bounds (index, &low, &high);
886   if (res == -1)
887     return 0;
888
889   /* Check if the array bounds are undefined.  */
890   if (res == 1
891       && ((low_bound && TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED (type))
892           || (high_bound && TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))))
893     return 0;
894
895   if (low_bound)
896     *low_bound = low;
897
898   if (high_bound)
899     *high_bound = high;
900
901   return 1;
902 }
903
904 /* Create an array type using either a blank type supplied in
905    RESULT_TYPE, or creating a new type, inheriting the objfile from
906    RANGE_TYPE.
907
908    Elements will be of type ELEMENT_TYPE, the indices will be of type
909    RANGE_TYPE.
910
911    FIXME: Maybe we should check the TYPE_CODE of RESULT_TYPE to make
912    sure it is TYPE_CODE_UNDEF before we bash it into an array
913    type?  */
914
915 struct type *
916 create_array_type (struct type *result_type, 
917                    struct type *element_type,
918                    struct type *range_type)
919 {
920   LONGEST low_bound, high_bound;
921
922   if (result_type == NULL)
923     result_type = alloc_type_copy (range_type);
924
925   TYPE_CODE (result_type) = TYPE_CODE_ARRAY;
926   TYPE_TARGET_TYPE (result_type) = element_type;
927   if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
928     low_bound = high_bound = 0;
929   CHECK_TYPEDEF (element_type);
930   /* Be careful when setting the array length.  Ada arrays can be
931      empty arrays with the high_bound being smaller than the low_bound.
932      In such cases, the array length should be zero.  */
933   if (high_bound < low_bound)
934     TYPE_LENGTH (result_type) = 0;
935   else
936     TYPE_LENGTH (result_type) =
937       TYPE_LENGTH (element_type) * (high_bound - low_bound + 1);
938   TYPE_NFIELDS (result_type) = 1;
939   TYPE_FIELDS (result_type) =
940     (struct field *) TYPE_ZALLOC (result_type, sizeof (struct field));
941   TYPE_INDEX_TYPE (result_type) = range_type;
942   TYPE_VPTR_FIELDNO (result_type) = -1;
943
944   /* TYPE_FLAG_TARGET_STUB will take care of zero length arrays.  */
945   if (TYPE_LENGTH (result_type) == 0)
946     TYPE_TARGET_STUB (result_type) = 1;
947
948   return result_type;
949 }
950
951 struct type *
952 lookup_array_range_type (struct type *element_type,
953                          int low_bound, int high_bound)
954 {
955   struct gdbarch *gdbarch = get_type_arch (element_type);
956   struct type *index_type = builtin_type (gdbarch)->builtin_int;
957   struct type *range_type
958     = create_range_type (NULL, index_type, low_bound, high_bound);
959
960   return create_array_type (NULL, element_type, range_type);
961 }
962
963 /* Create a string type using either a blank type supplied in
964    RESULT_TYPE, or creating a new type.  String types are similar
965    enough to array of char types that we can use create_array_type to
966    build the basic type and then bash it into a string type.
967
968    For fixed length strings, the range type contains 0 as the lower
969    bound and the length of the string minus one as the upper bound.
970
971    FIXME: Maybe we should check the TYPE_CODE of RESULT_TYPE to make
972    sure it is TYPE_CODE_UNDEF before we bash it into a string
973    type?  */
974
975 struct type *
976 create_string_type (struct type *result_type,
977                     struct type *string_char_type,
978                     struct type *range_type)
979 {
980   result_type = create_array_type (result_type,
981                                    string_char_type,
982                                    range_type);
983   TYPE_CODE (result_type) = TYPE_CODE_STRING;
984   return result_type;
985 }
986
987 struct type *
988 lookup_string_range_type (struct type *string_char_type,
989                           int low_bound, int high_bound)
990 {
991   struct type *result_type;
992
993   result_type = lookup_array_range_type (string_char_type,
994                                          low_bound, high_bound);
995   TYPE_CODE (result_type) = TYPE_CODE_STRING;
996   return result_type;
997 }
998
999 struct type *
1000 create_set_type (struct type *result_type, struct type *domain_type)
1001 {
1002   if (result_type == NULL)
1003     result_type = alloc_type_copy (domain_type);
1004
1005   TYPE_CODE (result_type) = TYPE_CODE_SET;
1006   TYPE_NFIELDS (result_type) = 1;
1007   TYPE_FIELDS (result_type) = TYPE_ZALLOC (result_type, sizeof (struct field));
1008
1009   if (!TYPE_STUB (domain_type))
1010     {
1011       LONGEST low_bound, high_bound, bit_length;
1012
1013       if (get_discrete_bounds (domain_type, &low_bound, &high_bound) < 0)
1014         low_bound = high_bound = 0;
1015       bit_length = high_bound - low_bound + 1;
1016       TYPE_LENGTH (result_type)
1017         = (bit_length + TARGET_CHAR_BIT - 1) / TARGET_CHAR_BIT;
1018       if (low_bound >= 0)
1019         TYPE_UNSIGNED (result_type) = 1;
1020     }
1021   TYPE_FIELD_TYPE (result_type, 0) = domain_type;
1022
1023   return result_type;
1024 }
1025
1026 /* Convert ARRAY_TYPE to a vector type.  This may modify ARRAY_TYPE
1027    and any array types nested inside it.  */
1028
1029 void
1030 make_vector_type (struct type *array_type)
1031 {
1032   struct type *inner_array, *elt_type;
1033   int flags;
1034
1035   /* Find the innermost array type, in case the array is
1036      multi-dimensional.  */
1037   inner_array = array_type;
1038   while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
1039     inner_array = TYPE_TARGET_TYPE (inner_array);
1040
1041   elt_type = TYPE_TARGET_TYPE (inner_array);
1042   if (TYPE_CODE (elt_type) == TYPE_CODE_INT)
1043     {
1044       flags = TYPE_INSTANCE_FLAGS (elt_type) | TYPE_INSTANCE_FLAG_NOTTEXT;
1045       elt_type = make_qualified_type (elt_type, flags, NULL);
1046       TYPE_TARGET_TYPE (inner_array) = elt_type;
1047     }
1048
1049   TYPE_VECTOR (array_type) = 1;
1050 }
1051
1052 struct type *
1053 init_vector_type (struct type *elt_type, int n)
1054 {
1055   struct type *array_type;
1056
1057   array_type = lookup_array_range_type (elt_type, 0, n - 1);
1058   make_vector_type (array_type);
1059   return array_type;
1060 }
1061
1062 /* Smash TYPE to be a type of pointers to members of DOMAIN with type
1063    TO_TYPE.  A member pointer is a wierd thing -- it amounts to a
1064    typed offset into a struct, e.g. "an int at offset 8".  A MEMBER
1065    TYPE doesn't include the offset (that's the value of the MEMBER
1066    itself), but does include the structure type into which it points
1067    (for some reason).
1068
1069    When "smashing" the type, we preserve the objfile that the old type
1070    pointed to, since we aren't changing where the type is actually
1071    allocated.  */
1072
1073 void
1074 smash_to_memberptr_type (struct type *type, struct type *domain,
1075                          struct type *to_type)
1076 {
1077   smash_type (type);
1078   TYPE_TARGET_TYPE (type) = to_type;
1079   TYPE_DOMAIN_TYPE (type) = domain;
1080   /* Assume that a data member pointer is the same size as a normal
1081      pointer.  */
1082   TYPE_LENGTH (type)
1083     = gdbarch_ptr_bit (get_type_arch (to_type)) / TARGET_CHAR_BIT;
1084   TYPE_CODE (type) = TYPE_CODE_MEMBERPTR;
1085 }
1086
1087 /* Smash TYPE to be a type of pointer to methods type TO_TYPE.
1088
1089    When "smashing" the type, we preserve the objfile that the old type
1090    pointed to, since we aren't changing where the type is actually
1091    allocated.  */
1092
1093 void
1094 smash_to_methodptr_type (struct type *type, struct type *to_type)
1095 {
1096   smash_type (type);
1097   TYPE_TARGET_TYPE (type) = to_type;
1098   TYPE_DOMAIN_TYPE (type) = TYPE_DOMAIN_TYPE (to_type);
1099   TYPE_LENGTH (type) = cplus_method_ptr_size (to_type);
1100   TYPE_CODE (type) = TYPE_CODE_METHODPTR;
1101 }
1102
1103 /* Smash TYPE to be a type of method of DOMAIN with type TO_TYPE.
1104    METHOD just means `function that gets an extra "this" argument'.
1105
1106    When "smashing" the type, we preserve the objfile that the old type
1107    pointed to, since we aren't changing where the type is actually
1108    allocated.  */
1109
1110 void
1111 smash_to_method_type (struct type *type, struct type *domain,
1112                       struct type *to_type, struct field *args,
1113                       int nargs, int varargs)
1114 {
1115   smash_type (type);
1116   TYPE_TARGET_TYPE (type) = to_type;
1117   TYPE_DOMAIN_TYPE (type) = domain;
1118   TYPE_FIELDS (type) = args;
1119   TYPE_NFIELDS (type) = nargs;
1120   if (varargs)
1121     TYPE_VARARGS (type) = 1;
1122   TYPE_LENGTH (type) = 1;       /* In practice, this is never needed.  */
1123   TYPE_CODE (type) = TYPE_CODE_METHOD;
1124 }
1125
1126 /* Return a typename for a struct/union/enum type without "struct ",
1127    "union ", or "enum ".  If the type has a NULL name, return NULL.  */
1128
1129 const char *
1130 type_name_no_tag (const struct type *type)
1131 {
1132   if (TYPE_TAG_NAME (type) != NULL)
1133     return TYPE_TAG_NAME (type);
1134
1135   /* Is there code which expects this to return the name if there is
1136      no tag name?  My guess is that this is mainly used for C++ in
1137      cases where the two will always be the same.  */
1138   return TYPE_NAME (type);
1139 }
1140
1141 /* A wrapper of type_name_no_tag which calls error if the type is anonymous.
1142    Since GCC PR debug/47510 DWARF provides associated information to detect the
1143    anonymous class linkage name from its typedef.
1144
1145    Parameter TYPE should not yet have CHECK_TYPEDEF applied, this function will
1146    apply it itself.  */
1147
1148 const char *
1149 type_name_no_tag_or_error (struct type *type)
1150 {
1151   struct type *saved_type = type;
1152   const char *name;
1153   struct objfile *objfile;
1154
1155   CHECK_TYPEDEF (type);
1156
1157   name = type_name_no_tag (type);
1158   if (name != NULL)
1159     return name;
1160
1161   name = type_name_no_tag (saved_type);
1162   objfile = TYPE_OBJFILE (saved_type);
1163   error (_("Invalid anonymous type %s [in module %s], GCC PR debug/47510 bug?"),
1164          name ? name : "<anonymous>", objfile ? objfile->name : "<arch>");
1165 }
1166
1167 /* Lookup a typedef or primitive type named NAME, visible in lexical
1168    block BLOCK.  If NOERR is nonzero, return zero if NAME is not
1169    suitably defined.  */
1170
1171 struct type *
1172 lookup_typename (const struct language_defn *language,
1173                  struct gdbarch *gdbarch, const char *name,
1174                  const struct block *block, int noerr)
1175 {
1176   struct symbol *sym;
1177   struct type *type;
1178
1179   sym = lookup_symbol (name, block, VAR_DOMAIN, 0);
1180   if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
1181     return SYMBOL_TYPE (sym);
1182
1183   type = language_lookup_primitive_type_by_name (language, gdbarch, name);
1184   if (type)
1185     return type;
1186
1187   if (noerr)
1188     return NULL;
1189   error (_("No type named %s."), name);
1190 }
1191
1192 struct type *
1193 lookup_unsigned_typename (const struct language_defn *language,
1194                           struct gdbarch *gdbarch, const char *name)
1195 {
1196   char *uns = alloca (strlen (name) + 10);
1197
1198   strcpy (uns, "unsigned ");
1199   strcpy (uns + 9, name);
1200   return lookup_typename (language, gdbarch, uns, (struct block *) NULL, 0);
1201 }
1202
1203 struct type *
1204 lookup_signed_typename (const struct language_defn *language,
1205                         struct gdbarch *gdbarch, const char *name)
1206 {
1207   struct type *t;
1208   char *uns = alloca (strlen (name) + 8);
1209
1210   strcpy (uns, "signed ");
1211   strcpy (uns + 7, name);
1212   t = lookup_typename (language, gdbarch, uns, (struct block *) NULL, 1);
1213   /* If we don't find "signed FOO" just try again with plain "FOO".  */
1214   if (t != NULL)
1215     return t;
1216   return lookup_typename (language, gdbarch, name, (struct block *) NULL, 0);
1217 }
1218
1219 /* Lookup a structure type named "struct NAME",
1220    visible in lexical block BLOCK.  */
1221
1222 struct type *
1223 lookup_struct (const char *name, struct block *block)
1224 {
1225   struct symbol *sym;
1226
1227   sym = lookup_symbol (name, block, STRUCT_DOMAIN, 0);
1228
1229   if (sym == NULL)
1230     {
1231       error (_("No struct type named %s."), name);
1232     }
1233   if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_STRUCT)
1234     {
1235       error (_("This context has class, union or enum %s, not a struct."),
1236              name);
1237     }
1238   return (SYMBOL_TYPE (sym));
1239 }
1240
1241 /* Lookup a union type named "union NAME",
1242    visible in lexical block BLOCK.  */
1243
1244 struct type *
1245 lookup_union (const char *name, struct block *block)
1246 {
1247   struct symbol *sym;
1248   struct type *t;
1249
1250   sym = lookup_symbol (name, block, STRUCT_DOMAIN, 0);
1251
1252   if (sym == NULL)
1253     error (_("No union type named %s."), name);
1254
1255   t = SYMBOL_TYPE (sym);
1256
1257   if (TYPE_CODE (t) == TYPE_CODE_UNION)
1258     return t;
1259
1260   /* If we get here, it's not a union.  */
1261   error (_("This context has class, struct or enum %s, not a union."), 
1262          name);
1263 }
1264
1265 /* Lookup an enum type named "enum NAME",
1266    visible in lexical block BLOCK.  */
1267
1268 struct type *
1269 lookup_enum (const char *name, struct block *block)
1270 {
1271   struct symbol *sym;
1272
1273   sym = lookup_symbol (name, block, STRUCT_DOMAIN, 0);
1274   if (sym == NULL)
1275     {
1276       error (_("No enum type named %s."), name);
1277     }
1278   if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_ENUM)
1279     {
1280       error (_("This context has class, struct or union %s, not an enum."), 
1281              name);
1282     }
1283   return (SYMBOL_TYPE (sym));
1284 }
1285
1286 /* Lookup a template type named "template NAME<TYPE>",
1287    visible in lexical block BLOCK.  */
1288
1289 struct type *
1290 lookup_template_type (char *name, struct type *type, 
1291                       struct block *block)
1292 {
1293   struct symbol *sym;
1294   char *nam = (char *) 
1295     alloca (strlen (name) + strlen (TYPE_NAME (type)) + 4);
1296
1297   strcpy (nam, name);
1298   strcat (nam, "<");
1299   strcat (nam, TYPE_NAME (type));
1300   strcat (nam, " >");   /* FIXME, extra space still introduced in gcc?  */
1301
1302   sym = lookup_symbol (nam, block, VAR_DOMAIN, 0);
1303
1304   if (sym == NULL)
1305     {
1306       error (_("No template type named %s."), name);
1307     }
1308   if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_STRUCT)
1309     {
1310       error (_("This context has class, union or enum %s, not a struct."),
1311              name);
1312     }
1313   return (SYMBOL_TYPE (sym));
1314 }
1315
1316 /* Given a type TYPE, lookup the type of the component of type named
1317    NAME.
1318
1319    TYPE can be either a struct or union, or a pointer or reference to
1320    a struct or union.  If it is a pointer or reference, its target
1321    type is automatically used.  Thus '.' and '->' are interchangable,
1322    as specified for the definitions of the expression element types
1323    STRUCTOP_STRUCT and STRUCTOP_PTR.
1324
1325    If NOERR is nonzero, return zero if NAME is not suitably defined.
1326    If NAME is the name of a baseclass type, return that type.  */
1327
1328 struct type *
1329 lookup_struct_elt_type (struct type *type, char *name, int noerr)
1330 {
1331   int i;
1332   char *typename;
1333
1334   for (;;)
1335     {
1336       CHECK_TYPEDEF (type);
1337       if (TYPE_CODE (type) != TYPE_CODE_PTR
1338           && TYPE_CODE (type) != TYPE_CODE_REF)
1339         break;
1340       type = TYPE_TARGET_TYPE (type);
1341     }
1342
1343   if (TYPE_CODE (type) != TYPE_CODE_STRUCT 
1344       && TYPE_CODE (type) != TYPE_CODE_UNION)
1345     {
1346       typename = type_to_string (type);
1347       make_cleanup (xfree, typename);
1348       error (_("Type %s is not a structure or union type."), typename);
1349     }
1350
1351 #if 0
1352   /* FIXME: This change put in by Michael seems incorrect for the case
1353      where the structure tag name is the same as the member name.
1354      I.e. when doing "ptype bell->bar" for "struct foo { int bar; int
1355      foo; } bell;" Disabled by fnf.  */
1356   {
1357     char *typename;
1358
1359     typename = type_name_no_tag (type);
1360     if (typename != NULL && strcmp (typename, name) == 0)
1361       return type;
1362   }
1363 #endif
1364
1365   for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
1366     {
1367       const char *t_field_name = TYPE_FIELD_NAME (type, i);
1368
1369       if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
1370         {
1371           return TYPE_FIELD_TYPE (type, i);
1372         }
1373      else if (!t_field_name || *t_field_name == '\0')
1374         {
1375           struct type *subtype 
1376             = lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name, 1);
1377
1378           if (subtype != NULL)
1379             return subtype;
1380         }
1381     }
1382
1383   /* OK, it's not in this class.  Recursively check the baseclasses.  */
1384   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1385     {
1386       struct type *t;
1387
1388       t = lookup_struct_elt_type (TYPE_BASECLASS (type, i), name, 1);
1389       if (t != NULL)
1390         {
1391           return t;
1392         }
1393     }
1394
1395   if (noerr)
1396     {
1397       return NULL;
1398     }
1399
1400   typename = type_to_string (type);
1401   make_cleanup (xfree, typename);
1402   error (_("Type %s has no component named %s."), typename, name);
1403 }
1404
1405 /* Lookup the vptr basetype/fieldno values for TYPE.
1406    If found store vptr_basetype in *BASETYPEP if non-NULL, and return
1407    vptr_fieldno.  Also, if found and basetype is from the same objfile,
1408    cache the results.
1409    If not found, return -1 and ignore BASETYPEP.
1410    Callers should be aware that in some cases (for example,
1411    the type or one of its baseclasses is a stub type and we are
1412    debugging a .o file, or the compiler uses DWARF-2 and is not GCC),
1413    this function will not be able to find the
1414    virtual function table pointer, and vptr_fieldno will remain -1 and
1415    vptr_basetype will remain NULL or incomplete.  */
1416
1417 int
1418 get_vptr_fieldno (struct type *type, struct type **basetypep)
1419 {
1420   CHECK_TYPEDEF (type);
1421
1422   if (TYPE_VPTR_FIELDNO (type) < 0)
1423     {
1424       int i;
1425
1426       /* We must start at zero in case the first (and only) baseclass
1427          is virtual (and hence we cannot share the table pointer).  */
1428       for (i = 0; i < TYPE_N_BASECLASSES (type); i++)
1429         {
1430           struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
1431           int fieldno;
1432           struct type *basetype;
1433
1434           fieldno = get_vptr_fieldno (baseclass, &basetype);
1435           if (fieldno >= 0)
1436             {
1437               /* If the type comes from a different objfile we can't cache
1438                  it, it may have a different lifetime.  PR 2384 */
1439               if (TYPE_OBJFILE (type) == TYPE_OBJFILE (basetype))
1440                 {
1441                   TYPE_VPTR_FIELDNO (type) = fieldno;
1442                   TYPE_VPTR_BASETYPE (type) = basetype;
1443                 }
1444               if (basetypep)
1445                 *basetypep = basetype;
1446               return fieldno;
1447             }
1448         }
1449
1450       /* Not found.  */
1451       return -1;
1452     }
1453   else
1454     {
1455       if (basetypep)
1456         *basetypep = TYPE_VPTR_BASETYPE (type);
1457       return TYPE_VPTR_FIELDNO (type);
1458     }
1459 }
1460
1461 static void
1462 stub_noname_complaint (void)
1463 {
1464   complaint (&symfile_complaints, _("stub type has NULL name"));
1465 }
1466
1467 /* Find the real type of TYPE.  This function returns the real type,
1468    after removing all layers of typedefs, and completing opaque or stub
1469    types.  Completion changes the TYPE argument, but stripping of
1470    typedefs does not.
1471
1472    Instance flags (e.g. const/volatile) are preserved as typedefs are
1473    stripped.  If necessary a new qualified form of the underlying type
1474    is created.
1475
1476    NOTE: This will return a typedef if TYPE_TARGET_TYPE for the typedef has
1477    not been computed and we're either in the middle of reading symbols, or
1478    there was no name for the typedef in the debug info.
1479
1480    NOTE: Lookup of opaque types can throw errors for invalid symbol files.
1481    QUITs in the symbol reading code can also throw.
1482    Thus this function can throw an exception.
1483
1484    If TYPE is a TYPE_CODE_TYPEDEF, its length is updated to the length of
1485    the target type.
1486
1487    If this is a stubbed struct (i.e. declared as struct foo *), see if
1488    we can find a full definition in some other file.  If so, copy this
1489    definition, so we can use it in future.  There used to be a comment
1490    (but not any code) that if we don't find a full definition, we'd
1491    set a flag so we don't spend time in the future checking the same
1492    type.  That would be a mistake, though--we might load in more
1493    symbols which contain a full definition for the type.  */
1494
1495 struct type *
1496 check_typedef (struct type *type)
1497 {
1498   struct type *orig_type = type;
1499   /* While we're removing typedefs, we don't want to lose qualifiers.
1500      E.g., const/volatile.  */
1501   int instance_flags = TYPE_INSTANCE_FLAGS (type);
1502
1503   gdb_assert (type);
1504
1505   while (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
1506     {
1507       if (!TYPE_TARGET_TYPE (type))
1508         {
1509           const char *name;
1510           struct symbol *sym;
1511
1512           /* It is dangerous to call lookup_symbol if we are currently
1513              reading a symtab.  Infinite recursion is one danger.  */
1514           if (currently_reading_symtab)
1515             return make_qualified_type (type, instance_flags, NULL);
1516
1517           name = type_name_no_tag (type);
1518           /* FIXME: shouldn't we separately check the TYPE_NAME and
1519              the TYPE_TAG_NAME, and look in STRUCT_DOMAIN and/or
1520              VAR_DOMAIN as appropriate?  (this code was written before
1521              TYPE_NAME and TYPE_TAG_NAME were separate).  */
1522           if (name == NULL)
1523             {
1524               stub_noname_complaint ();
1525               return make_qualified_type (type, instance_flags, NULL);
1526             }
1527           sym = lookup_symbol (name, 0, STRUCT_DOMAIN, 0);
1528           if (sym)
1529             TYPE_TARGET_TYPE (type) = SYMBOL_TYPE (sym);
1530           else                                  /* TYPE_CODE_UNDEF */
1531             TYPE_TARGET_TYPE (type) = alloc_type_arch (get_type_arch (type));
1532         }
1533       type = TYPE_TARGET_TYPE (type);
1534
1535       /* Preserve the instance flags as we traverse down the typedef chain.
1536
1537          Handling address spaces/classes is nasty, what do we do if there's a
1538          conflict?
1539          E.g., what if an outer typedef marks the type as class_1 and an inner
1540          typedef marks the type as class_2?
1541          This is the wrong place to do such error checking.  We leave it to
1542          the code that created the typedef in the first place to flag the
1543          error.  We just pick the outer address space (akin to letting the
1544          outer cast in a chain of casting win), instead of assuming
1545          "it can't happen".  */
1546       {
1547         const int ALL_SPACES = (TYPE_INSTANCE_FLAG_CODE_SPACE
1548                                 | TYPE_INSTANCE_FLAG_DATA_SPACE);
1549         const int ALL_CLASSES = TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL;
1550         int new_instance_flags = TYPE_INSTANCE_FLAGS (type);
1551
1552         /* Treat code vs data spaces and address classes separately.  */
1553         if ((instance_flags & ALL_SPACES) != 0)
1554           new_instance_flags &= ~ALL_SPACES;
1555         if ((instance_flags & ALL_CLASSES) != 0)
1556           new_instance_flags &= ~ALL_CLASSES;
1557
1558         instance_flags |= new_instance_flags;
1559       }
1560     }
1561
1562   /* If this is a struct/class/union with no fields, then check
1563      whether a full definition exists somewhere else.  This is for
1564      systems where a type definition with no fields is issued for such
1565      types, instead of identifying them as stub types in the first
1566      place.  */
1567
1568   if (TYPE_IS_OPAQUE (type) 
1569       && opaque_type_resolution 
1570       && !currently_reading_symtab)
1571     {
1572       const char *name = type_name_no_tag (type);
1573       struct type *newtype;
1574
1575       if (name == NULL)
1576         {
1577           stub_noname_complaint ();
1578           return make_qualified_type (type, instance_flags, NULL);
1579         }
1580       newtype = lookup_transparent_type (name);
1581
1582       if (newtype)
1583         {
1584           /* If the resolved type and the stub are in the same
1585              objfile, then replace the stub type with the real deal.
1586              But if they're in separate objfiles, leave the stub
1587              alone; we'll just look up the transparent type every time
1588              we call check_typedef.  We can't create pointers between
1589              types allocated to different objfiles, since they may
1590              have different lifetimes.  Trying to copy NEWTYPE over to
1591              TYPE's objfile is pointless, too, since you'll have to
1592              move over any other types NEWTYPE refers to, which could
1593              be an unbounded amount of stuff.  */
1594           if (TYPE_OBJFILE (newtype) == TYPE_OBJFILE (type))
1595             type = make_qualified_type (newtype,
1596                                         TYPE_INSTANCE_FLAGS (type),
1597                                         type);
1598           else
1599             type = newtype;
1600         }
1601     }
1602   /* Otherwise, rely on the stub flag being set for opaque/stubbed
1603      types.  */
1604   else if (TYPE_STUB (type) && !currently_reading_symtab)
1605     {
1606       const char *name = type_name_no_tag (type);
1607       /* FIXME: shouldn't we separately check the TYPE_NAME and the
1608          TYPE_TAG_NAME, and look in STRUCT_DOMAIN and/or VAR_DOMAIN
1609          as appropriate?  (this code was written before TYPE_NAME and
1610          TYPE_TAG_NAME were separate).  */
1611       struct symbol *sym;
1612
1613       if (name == NULL)
1614         {
1615           stub_noname_complaint ();
1616           return make_qualified_type (type, instance_flags, NULL);
1617         }
1618       sym = lookup_symbol (name, 0, STRUCT_DOMAIN, 0);
1619       if (sym)
1620         {
1621           /* Same as above for opaque types, we can replace the stub
1622              with the complete type only if they are in the same
1623              objfile.  */
1624           if (TYPE_OBJFILE (SYMBOL_TYPE(sym)) == TYPE_OBJFILE (type))
1625             type = make_qualified_type (SYMBOL_TYPE (sym),
1626                                         TYPE_INSTANCE_FLAGS (type),
1627                                         type);
1628           else
1629             type = SYMBOL_TYPE (sym);
1630         }
1631     }
1632
1633   if (TYPE_TARGET_STUB (type))
1634     {
1635       struct type *range_type;
1636       struct type *target_type = check_typedef (TYPE_TARGET_TYPE (type));
1637
1638       if (TYPE_STUB (target_type) || TYPE_TARGET_STUB (target_type))
1639         {
1640           /* Nothing we can do.  */
1641         }
1642       else if (TYPE_CODE (type) == TYPE_CODE_ARRAY
1643                && TYPE_NFIELDS (type) == 1
1644                && (TYPE_CODE (range_type = TYPE_INDEX_TYPE (type))
1645                    == TYPE_CODE_RANGE))
1646         {
1647           /* Now recompute the length of the array type, based on its
1648              number of elements and the target type's length.
1649              Watch out for Ada null Ada arrays where the high bound
1650              is smaller than the low bound.  */
1651           const LONGEST low_bound = TYPE_LOW_BOUND (range_type);
1652           const LONGEST high_bound = TYPE_HIGH_BOUND (range_type);
1653           ULONGEST len;
1654
1655           if (high_bound < low_bound)
1656             len = 0;
1657           else
1658             {
1659               /* For now, we conservatively take the array length to be 0
1660                  if its length exceeds UINT_MAX.  The code below assumes
1661                  that for x < 0, (ULONGEST) x == -x + ULONGEST_MAX + 1,
1662                  which is technically not guaranteed by C, but is usually true
1663                  (because it would be true if x were unsigned with its
1664                  high-order bit on).  It uses the fact that
1665                  high_bound-low_bound is always representable in
1666                  ULONGEST and that if high_bound-low_bound+1 overflows,
1667                  it overflows to 0.  We must change these tests if we 
1668                  decide to increase the representation of TYPE_LENGTH
1669                  from unsigned int to ULONGEST.  */
1670               ULONGEST ulow = low_bound, uhigh = high_bound;
1671               ULONGEST tlen = TYPE_LENGTH (target_type);
1672
1673               len = tlen * (uhigh - ulow + 1);
1674               if (tlen == 0 || (len / tlen - 1 + ulow) != uhigh 
1675                   || len > UINT_MAX)
1676                 len = 0;
1677             }
1678           TYPE_LENGTH (type) = len;
1679           TYPE_TARGET_STUB (type) = 0;
1680         }
1681       else if (TYPE_CODE (type) == TYPE_CODE_RANGE)
1682         {
1683           TYPE_LENGTH (type) = TYPE_LENGTH (target_type);
1684           TYPE_TARGET_STUB (type) = 0;
1685         }
1686     }
1687
1688   type = make_qualified_type (type, instance_flags, NULL);
1689
1690   /* Cache TYPE_LENGTH for future use.  */
1691   TYPE_LENGTH (orig_type) = TYPE_LENGTH (type);
1692
1693   return type;
1694 }
1695
1696 /* Parse a type expression in the string [P..P+LENGTH).  If an error
1697    occurs, silently return a void type.  */
1698
1699 static struct type *
1700 safe_parse_type (struct gdbarch *gdbarch, char *p, int length)
1701 {
1702   struct ui_file *saved_gdb_stderr;
1703   struct type *type = NULL; /* Initialize to keep gcc happy.  */
1704   volatile struct gdb_exception except;
1705
1706   /* Suppress error messages.  */
1707   saved_gdb_stderr = gdb_stderr;
1708   gdb_stderr = ui_file_new ();
1709
1710   /* Call parse_and_eval_type() without fear of longjmp()s.  */
1711   TRY_CATCH (except, RETURN_MASK_ERROR)
1712     {
1713       type = parse_and_eval_type (p, length);
1714     }
1715
1716   if (except.reason < 0)
1717     type = builtin_type (gdbarch)->builtin_void;
1718
1719   /* Stop suppressing error messages.  */
1720   ui_file_delete (gdb_stderr);
1721   gdb_stderr = saved_gdb_stderr;
1722
1723   return type;
1724 }
1725
1726 /* Ugly hack to convert method stubs into method types.
1727
1728    He ain't kiddin'.  This demangles the name of the method into a
1729    string including argument types, parses out each argument type,
1730    generates a string casting a zero to that type, evaluates the
1731    string, and stuffs the resulting type into an argtype vector!!!
1732    Then it knows the type of the whole function (including argument
1733    types for overloading), which info used to be in the stab's but was
1734    removed to hack back the space required for them.  */
1735
1736 static void
1737 check_stub_method (struct type *type, int method_id, int signature_id)
1738 {
1739   struct gdbarch *gdbarch = get_type_arch (type);
1740   struct fn_field *f;
1741   char *mangled_name = gdb_mangle_name (type, method_id, signature_id);
1742   char *demangled_name = cplus_demangle (mangled_name,
1743                                          DMGL_PARAMS | DMGL_ANSI);
1744   char *argtypetext, *p;
1745   int depth = 0, argcount = 1;
1746   struct field *argtypes;
1747   struct type *mtype;
1748
1749   /* Make sure we got back a function string that we can use.  */
1750   if (demangled_name)
1751     p = strchr (demangled_name, '(');
1752   else
1753     p = NULL;
1754
1755   if (demangled_name == NULL || p == NULL)
1756     error (_("Internal: Cannot demangle mangled name `%s'."), 
1757            mangled_name);
1758
1759   /* Now, read in the parameters that define this type.  */
1760   p += 1;
1761   argtypetext = p;
1762   while (*p)
1763     {
1764       if (*p == '(' || *p == '<')
1765         {
1766           depth += 1;
1767         }
1768       else if (*p == ')' || *p == '>')
1769         {
1770           depth -= 1;
1771         }
1772       else if (*p == ',' && depth == 0)
1773         {
1774           argcount += 1;
1775         }
1776
1777       p += 1;
1778     }
1779
1780   /* If we read one argument and it was ``void'', don't count it.  */
1781   if (strncmp (argtypetext, "(void)", 6) == 0)
1782     argcount -= 1;
1783
1784   /* We need one extra slot, for the THIS pointer.  */
1785
1786   argtypes = (struct field *)
1787     TYPE_ALLOC (type, (argcount + 1) * sizeof (struct field));
1788   p = argtypetext;
1789
1790   /* Add THIS pointer for non-static methods.  */
1791   f = TYPE_FN_FIELDLIST1 (type, method_id);
1792   if (TYPE_FN_FIELD_STATIC_P (f, signature_id))
1793     argcount = 0;
1794   else
1795     {
1796       argtypes[0].type = lookup_pointer_type (type);
1797       argcount = 1;
1798     }
1799
1800   if (*p != ')')                /* () means no args, skip while.  */
1801     {
1802       depth = 0;
1803       while (*p)
1804         {
1805           if (depth <= 0 && (*p == ',' || *p == ')'))
1806             {
1807               /* Avoid parsing of ellipsis, they will be handled below.
1808                  Also avoid ``void'' as above.  */
1809               if (strncmp (argtypetext, "...", p - argtypetext) != 0
1810                   && strncmp (argtypetext, "void", p - argtypetext) != 0)
1811                 {
1812                   argtypes[argcount].type =
1813                     safe_parse_type (gdbarch, argtypetext, p - argtypetext);
1814                   argcount += 1;
1815                 }
1816               argtypetext = p + 1;
1817             }
1818
1819           if (*p == '(' || *p == '<')
1820             {
1821               depth += 1;
1822             }
1823           else if (*p == ')' || *p == '>')
1824             {
1825               depth -= 1;
1826             }
1827
1828           p += 1;
1829         }
1830     }
1831
1832   TYPE_FN_FIELD_PHYSNAME (f, signature_id) = mangled_name;
1833
1834   /* Now update the old "stub" type into a real type.  */
1835   mtype = TYPE_FN_FIELD_TYPE (f, signature_id);
1836   TYPE_DOMAIN_TYPE (mtype) = type;
1837   TYPE_FIELDS (mtype) = argtypes;
1838   TYPE_NFIELDS (mtype) = argcount;
1839   TYPE_STUB (mtype) = 0;
1840   TYPE_FN_FIELD_STUB (f, signature_id) = 0;
1841   if (p[-2] == '.')
1842     TYPE_VARARGS (mtype) = 1;
1843
1844   xfree (demangled_name);
1845 }
1846
1847 /* This is the external interface to check_stub_method, above.  This
1848    function unstubs all of the signatures for TYPE's METHOD_ID method
1849    name.  After calling this function TYPE_FN_FIELD_STUB will be
1850    cleared for each signature and TYPE_FN_FIELDLIST_NAME will be
1851    correct.
1852
1853    This function unfortunately can not die until stabs do.  */
1854
1855 void
1856 check_stub_method_group (struct type *type, int method_id)
1857 {
1858   int len = TYPE_FN_FIELDLIST_LENGTH (type, method_id);
1859   struct fn_field *f = TYPE_FN_FIELDLIST1 (type, method_id);
1860   int j, found_stub = 0;
1861
1862   for (j = 0; j < len; j++)
1863     if (TYPE_FN_FIELD_STUB (f, j))
1864       {
1865         found_stub = 1;
1866         check_stub_method (type, method_id, j);
1867       }
1868
1869   /* GNU v3 methods with incorrect names were corrected when we read
1870      in type information, because it was cheaper to do it then.  The
1871      only GNU v2 methods with incorrect method names are operators and
1872      destructors; destructors were also corrected when we read in type
1873      information.
1874
1875      Therefore the only thing we need to handle here are v2 operator
1876      names.  */
1877   if (found_stub && strncmp (TYPE_FN_FIELD_PHYSNAME (f, 0), "_Z", 2) != 0)
1878     {
1879       int ret;
1880       char dem_opname[256];
1881
1882       ret = cplus_demangle_opname (TYPE_FN_FIELDLIST_NAME (type, 
1883                                                            method_id),
1884                                    dem_opname, DMGL_ANSI);
1885       if (!ret)
1886         ret = cplus_demangle_opname (TYPE_FN_FIELDLIST_NAME (type, 
1887                                                              method_id),
1888                                      dem_opname, 0);
1889       if (ret)
1890         TYPE_FN_FIELDLIST_NAME (type, method_id) = xstrdup (dem_opname);
1891     }
1892 }
1893
1894 /* Ensure it is in .rodata (if available) by workarounding GCC PR 44690.  */
1895 const struct cplus_struct_type cplus_struct_default = { };
1896
1897 void
1898 allocate_cplus_struct_type (struct type *type)
1899 {
1900   if (HAVE_CPLUS_STRUCT (type))
1901     /* Structure was already allocated.  Nothing more to do.  */
1902     return;
1903
1904   TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_CPLUS_STUFF;
1905   TYPE_RAW_CPLUS_SPECIFIC (type) = (struct cplus_struct_type *)
1906     TYPE_ALLOC (type, sizeof (struct cplus_struct_type));
1907   *(TYPE_RAW_CPLUS_SPECIFIC (type)) = cplus_struct_default;
1908 }
1909
1910 const struct gnat_aux_type gnat_aux_default =
1911   { NULL };
1912
1913 /* Set the TYPE's type-specific kind to TYPE_SPECIFIC_GNAT_STUFF,
1914    and allocate the associated gnat-specific data.  The gnat-specific
1915    data is also initialized to gnat_aux_default.  */
1916
1917 void
1918 allocate_gnat_aux_type (struct type *type)
1919 {
1920   TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_GNAT_STUFF;
1921   TYPE_GNAT_SPECIFIC (type) = (struct gnat_aux_type *)
1922     TYPE_ALLOC (type, sizeof (struct gnat_aux_type));
1923   *(TYPE_GNAT_SPECIFIC (type)) = gnat_aux_default;
1924 }
1925
1926 /* Helper function to initialize the standard scalar types.
1927
1928    If NAME is non-NULL, then we make a copy of the string pointed
1929    to by name in the objfile_obstack for that objfile, and initialize
1930    the type name to that copy.  There are places (mipsread.c in particular),
1931    where init_type is called with a NULL value for NAME).  */
1932
1933 struct type *
1934 init_type (enum type_code code, int length, int flags,
1935            char *name, struct objfile *objfile)
1936 {
1937   struct type *type;
1938
1939   type = alloc_type (objfile);
1940   TYPE_CODE (type) = code;
1941   TYPE_LENGTH (type) = length;
1942
1943   gdb_assert (!(flags & (TYPE_FLAG_MIN - 1)));
1944   if (flags & TYPE_FLAG_UNSIGNED)
1945     TYPE_UNSIGNED (type) = 1;
1946   if (flags & TYPE_FLAG_NOSIGN)
1947     TYPE_NOSIGN (type) = 1;
1948   if (flags & TYPE_FLAG_STUB)
1949     TYPE_STUB (type) = 1;
1950   if (flags & TYPE_FLAG_TARGET_STUB)
1951     TYPE_TARGET_STUB (type) = 1;
1952   if (flags & TYPE_FLAG_STATIC)
1953     TYPE_STATIC (type) = 1;
1954   if (flags & TYPE_FLAG_PROTOTYPED)
1955     TYPE_PROTOTYPED (type) = 1;
1956   if (flags & TYPE_FLAG_INCOMPLETE)
1957     TYPE_INCOMPLETE (type) = 1;
1958   if (flags & TYPE_FLAG_VARARGS)
1959     TYPE_VARARGS (type) = 1;
1960   if (flags & TYPE_FLAG_VECTOR)
1961     TYPE_VECTOR (type) = 1;
1962   if (flags & TYPE_FLAG_STUB_SUPPORTED)
1963     TYPE_STUB_SUPPORTED (type) = 1;
1964   if (flags & TYPE_FLAG_FIXED_INSTANCE)
1965     TYPE_FIXED_INSTANCE (type) = 1;
1966   if (flags & TYPE_FLAG_GNU_IFUNC)
1967     TYPE_GNU_IFUNC (type) = 1;
1968
1969   if (name)
1970     TYPE_NAME (type) = obsavestring (name, strlen (name),
1971                                      &objfile->objfile_obstack);
1972
1973   /* C++ fancies.  */
1974
1975   if (name && strcmp (name, "char") == 0)
1976     TYPE_NOSIGN (type) = 1;
1977
1978   switch (code)
1979     {
1980       case TYPE_CODE_STRUCT:
1981       case TYPE_CODE_UNION:
1982       case TYPE_CODE_NAMESPACE:
1983         INIT_CPLUS_SPECIFIC (type);
1984         break;
1985       case TYPE_CODE_FLT:
1986         TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_FLOATFORMAT;
1987         break;
1988       case TYPE_CODE_FUNC:
1989         INIT_FUNC_SPECIFIC (type);
1990         break;
1991     }
1992   return type;
1993 }
1994 \f
1995 /* Queries on types.  */
1996
1997 int
1998 can_dereference (struct type *t)
1999 {
2000   /* FIXME: Should we return true for references as well as
2001      pointers?  */
2002   CHECK_TYPEDEF (t);
2003   return
2004     (t != NULL
2005      && TYPE_CODE (t) == TYPE_CODE_PTR
2006      && TYPE_CODE (TYPE_TARGET_TYPE (t)) != TYPE_CODE_VOID);
2007 }
2008
2009 int
2010 is_integral_type (struct type *t)
2011 {
2012   CHECK_TYPEDEF (t);
2013   return
2014     ((t != NULL)
2015      && ((TYPE_CODE (t) == TYPE_CODE_INT)
2016          || (TYPE_CODE (t) == TYPE_CODE_ENUM)
2017          || (TYPE_CODE (t) == TYPE_CODE_FLAGS)
2018          || (TYPE_CODE (t) == TYPE_CODE_CHAR)
2019          || (TYPE_CODE (t) == TYPE_CODE_RANGE)
2020          || (TYPE_CODE (t) == TYPE_CODE_BOOL)));
2021 }
2022
2023 /* Return true if TYPE is scalar.  */
2024
2025 static int
2026 is_scalar_type (struct type *type)
2027 {
2028   CHECK_TYPEDEF (type);
2029
2030   switch (TYPE_CODE (type))
2031     {
2032     case TYPE_CODE_ARRAY:
2033     case TYPE_CODE_STRUCT:
2034     case TYPE_CODE_UNION:
2035     case TYPE_CODE_SET:
2036     case TYPE_CODE_STRING:
2037       return 0;
2038     default:
2039       return 1;
2040     }
2041 }
2042
2043 /* Return true if T is scalar, or a composite type which in practice has
2044    the memory layout of a scalar type.  E.g., an array or struct with only
2045    one scalar element inside it, or a union with only scalar elements.  */
2046
2047 int
2048 is_scalar_type_recursive (struct type *t)
2049 {
2050   CHECK_TYPEDEF (t);
2051
2052   if (is_scalar_type (t))
2053     return 1;
2054   /* Are we dealing with an array or string of known dimensions?  */
2055   else if ((TYPE_CODE (t) == TYPE_CODE_ARRAY
2056             || TYPE_CODE (t) == TYPE_CODE_STRING) && TYPE_NFIELDS (t) == 1
2057            && TYPE_CODE (TYPE_INDEX_TYPE (t)) == TYPE_CODE_RANGE)
2058     {
2059       LONGEST low_bound, high_bound;
2060       struct type *elt_type = check_typedef (TYPE_TARGET_TYPE (t));
2061
2062       get_discrete_bounds (TYPE_INDEX_TYPE (t), &low_bound, &high_bound);
2063
2064       return high_bound == low_bound && is_scalar_type_recursive (elt_type);
2065     }
2066   /* Are we dealing with a struct with one element?  */
2067   else if (TYPE_CODE (t) == TYPE_CODE_STRUCT && TYPE_NFIELDS (t) == 1)
2068     return is_scalar_type_recursive (TYPE_FIELD_TYPE (t, 0));
2069   else if (TYPE_CODE (t) == TYPE_CODE_UNION)
2070     {
2071       int i, n = TYPE_NFIELDS (t);
2072
2073       /* If all elements of the union are scalar, then the union is scalar.  */
2074       for (i = 0; i < n; i++)
2075         if (!is_scalar_type_recursive (TYPE_FIELD_TYPE (t, i)))
2076           return 0;
2077
2078       return 1;
2079     }
2080
2081   return 0;
2082 }
2083
2084 /* A helper function which returns true if types A and B represent the
2085    "same" class type.  This is true if the types have the same main
2086    type, or the same name.  */
2087
2088 int
2089 class_types_same_p (const struct type *a, const struct type *b)
2090 {
2091   return (TYPE_MAIN_TYPE (a) == TYPE_MAIN_TYPE (b)
2092           || (TYPE_NAME (a) && TYPE_NAME (b)
2093               && !strcmp (TYPE_NAME (a), TYPE_NAME (b))));
2094 }
2095
2096 /* If BASE is an ancestor of DCLASS return the distance between them.
2097    otherwise return -1;
2098    eg:
2099
2100    class A {};
2101    class B: public A {};
2102    class C: public B {};
2103    class D: C {};
2104
2105    distance_to_ancestor (A, A, 0) = 0
2106    distance_to_ancestor (A, B, 0) = 1
2107    distance_to_ancestor (A, C, 0) = 2
2108    distance_to_ancestor (A, D, 0) = 3
2109
2110    If PUBLIC is 1 then only public ancestors are considered,
2111    and the function returns the distance only if BASE is a public ancestor
2112    of DCLASS.
2113    Eg:
2114
2115    distance_to_ancestor (A, D, 1) = -1.  */
2116
2117 static int
2118 distance_to_ancestor (struct type *base, struct type *dclass, int public)
2119 {
2120   int i;
2121   int d;
2122
2123   CHECK_TYPEDEF (base);
2124   CHECK_TYPEDEF (dclass);
2125
2126   if (class_types_same_p (base, dclass))
2127     return 0;
2128
2129   for (i = 0; i < TYPE_N_BASECLASSES (dclass); i++)
2130     {
2131       if (public && ! BASETYPE_VIA_PUBLIC (dclass, i))
2132         continue;
2133
2134       d = distance_to_ancestor (base, TYPE_BASECLASS (dclass, i), public);
2135       if (d >= 0)
2136         return 1 + d;
2137     }
2138
2139   return -1;
2140 }
2141
2142 /* Check whether BASE is an ancestor or base class or DCLASS
2143    Return 1 if so, and 0 if not.
2144    Note: If BASE and DCLASS are of the same type, this function
2145    will return 1. So for some class A, is_ancestor (A, A) will
2146    return 1.  */
2147
2148 int
2149 is_ancestor (struct type *base, struct type *dclass)
2150 {
2151   return distance_to_ancestor (base, dclass, 0) >= 0;
2152 }
2153
2154 /* Like is_ancestor, but only returns true when BASE is a public
2155    ancestor of DCLASS.  */
2156
2157 int
2158 is_public_ancestor (struct type *base, struct type *dclass)
2159 {
2160   return distance_to_ancestor (base, dclass, 1) >= 0;
2161 }
2162
2163 /* A helper function for is_unique_ancestor.  */
2164
2165 static int
2166 is_unique_ancestor_worker (struct type *base, struct type *dclass,
2167                            int *offset,
2168                            const gdb_byte *valaddr, int embedded_offset,
2169                            CORE_ADDR address, struct value *val)
2170 {
2171   int i, count = 0;
2172
2173   CHECK_TYPEDEF (base);
2174   CHECK_TYPEDEF (dclass);
2175
2176   for (i = 0; i < TYPE_N_BASECLASSES (dclass) && count < 2; ++i)
2177     {
2178       struct type *iter;
2179       int this_offset;
2180
2181       iter = check_typedef (TYPE_BASECLASS (dclass, i));
2182
2183       this_offset = baseclass_offset (dclass, i, valaddr, embedded_offset,
2184                                       address, val);
2185
2186       if (class_types_same_p (base, iter))
2187         {
2188           /* If this is the first subclass, set *OFFSET and set count
2189              to 1.  Otherwise, if this is at the same offset as
2190              previous instances, do nothing.  Otherwise, increment
2191              count.  */
2192           if (*offset == -1)
2193             {
2194               *offset = this_offset;
2195               count = 1;
2196             }
2197           else if (this_offset == *offset)
2198             {
2199               /* Nothing.  */
2200             }
2201           else
2202             ++count;
2203         }
2204       else
2205         count += is_unique_ancestor_worker (base, iter, offset,
2206                                             valaddr,
2207                                             embedded_offset + this_offset,
2208                                             address, val);
2209     }
2210
2211   return count;
2212 }
2213
2214 /* Like is_ancestor, but only returns true if BASE is a unique base
2215    class of the type of VAL.  */
2216
2217 int
2218 is_unique_ancestor (struct type *base, struct value *val)
2219 {
2220   int offset = -1;
2221
2222   return is_unique_ancestor_worker (base, value_type (val), &offset,
2223                                     value_contents_for_printing (val),
2224                                     value_embedded_offset (val),
2225                                     value_address (val), val) == 1;
2226 }
2227
2228 \f
2229 /* Overload resolution.  */
2230
2231 /* Return the sum of the rank of A with the rank of B.  */
2232
2233 struct rank
2234 sum_ranks (struct rank a, struct rank b)
2235 {
2236   struct rank c;
2237   c.rank = a.rank + b.rank;
2238   c.subrank = a.subrank + b.subrank;
2239   return c;
2240 }
2241
2242 /* Compare rank A and B and return:
2243    0 if a = b
2244    1 if a is better than b
2245   -1 if b is better than a.  */
2246
2247 int
2248 compare_ranks (struct rank a, struct rank b)
2249 {
2250   if (a.rank == b.rank)
2251     {
2252       if (a.subrank == b.subrank)
2253         return 0;
2254       if (a.subrank < b.subrank)
2255         return 1;
2256       if (a.subrank > b.subrank)
2257         return -1;
2258     }
2259
2260   if (a.rank < b.rank)
2261     return 1;
2262
2263   /* a.rank > b.rank */
2264   return -1;
2265 }
2266
2267 /* Functions for overload resolution begin here.  */
2268
2269 /* Compare two badness vectors A and B and return the result.
2270    0 => A and B are identical
2271    1 => A and B are incomparable
2272    2 => A is better than B
2273    3 => A is worse than B  */
2274
2275 int
2276 compare_badness (struct badness_vector *a, struct badness_vector *b)
2277 {
2278   int i;
2279   int tmp;
2280   short found_pos = 0;          /* any positives in c? */
2281   short found_neg = 0;          /* any negatives in c? */
2282
2283   /* differing lengths => incomparable */
2284   if (a->length != b->length)
2285     return 1;
2286
2287   /* Subtract b from a */
2288   for (i = 0; i < a->length; i++)
2289     {
2290       tmp = compare_ranks (b->rank[i], a->rank[i]);
2291       if (tmp > 0)
2292         found_pos = 1;
2293       else if (tmp < 0)
2294         found_neg = 1;
2295     }
2296
2297   if (found_pos)
2298     {
2299       if (found_neg)
2300         return 1;               /* incomparable */
2301       else
2302         return 3;               /* A > B */
2303     }
2304   else
2305     /* no positives */
2306     {
2307       if (found_neg)
2308         return 2;               /* A < B */
2309       else
2310         return 0;               /* A == B */
2311     }
2312 }
2313
2314 /* Rank a function by comparing its parameter types (PARMS, length
2315    NPARMS), to the types of an argument list (ARGS, length NARGS).
2316    Return a pointer to a badness vector.  This has NARGS + 1
2317    entries.  */
2318
2319 struct badness_vector *
2320 rank_function (struct type **parms, int nparms, 
2321                struct value **args, int nargs)
2322 {
2323   int i;
2324   struct badness_vector *bv;
2325   int min_len = nparms < nargs ? nparms : nargs;
2326
2327   bv = xmalloc (sizeof (struct badness_vector));
2328   bv->length = nargs + 1;       /* add 1 for the length-match rank.  */
2329   bv->rank = xmalloc ((nargs + 1) * sizeof (int));
2330
2331   /* First compare the lengths of the supplied lists.
2332      If there is a mismatch, set it to a high value.  */
2333
2334   /* pai/1997-06-03 FIXME: when we have debug info about default
2335      arguments and ellipsis parameter lists, we should consider those
2336      and rank the length-match more finely.  */
2337
2338   LENGTH_MATCH (bv) = (nargs != nparms)
2339                       ? LENGTH_MISMATCH_BADNESS
2340                       : EXACT_MATCH_BADNESS;
2341
2342   /* Now rank all the parameters of the candidate function.  */
2343   for (i = 1; i <= min_len; i++)
2344     bv->rank[i] = rank_one_type (parms[i - 1], value_type (args[i - 1]),
2345                                  args[i - 1]);
2346
2347   /* If more arguments than parameters, add dummy entries.  */
2348   for (i = min_len + 1; i <= nargs; i++)
2349     bv->rank[i] = TOO_FEW_PARAMS_BADNESS;
2350
2351   return bv;
2352 }
2353
2354 /* Compare the names of two integer types, assuming that any sign
2355    qualifiers have been checked already.  We do it this way because
2356    there may be an "int" in the name of one of the types.  */
2357
2358 static int
2359 integer_types_same_name_p (const char *first, const char *second)
2360 {
2361   int first_p, second_p;
2362
2363   /* If both are shorts, return 1; if neither is a short, keep
2364      checking.  */
2365   first_p = (strstr (first, "short") != NULL);
2366   second_p = (strstr (second, "short") != NULL);
2367   if (first_p && second_p)
2368     return 1;
2369   if (first_p || second_p)
2370     return 0;
2371
2372   /* Likewise for long.  */
2373   first_p = (strstr (first, "long") != NULL);
2374   second_p = (strstr (second, "long") != NULL);
2375   if (first_p && second_p)
2376     return 1;
2377   if (first_p || second_p)
2378     return 0;
2379
2380   /* Likewise for char.  */
2381   first_p = (strstr (first, "char") != NULL);
2382   second_p = (strstr (second, "char") != NULL);
2383   if (first_p && second_p)
2384     return 1;
2385   if (first_p || second_p)
2386     return 0;
2387
2388   /* They must both be ints.  */
2389   return 1;
2390 }
2391
2392 /* Compares type A to type B returns 1 if the represent the same type
2393    0 otherwise.  */
2394
2395 static int
2396 types_equal (struct type *a, struct type *b)
2397 {
2398   /* Identical type pointers.  */
2399   /* However, this still doesn't catch all cases of same type for b
2400      and a.  The reason is that builtin types are different from
2401      the same ones constructed from the object.  */
2402   if (a == b)
2403     return 1;
2404
2405   /* Resolve typedefs */
2406   if (TYPE_CODE (a) == TYPE_CODE_TYPEDEF)
2407     a = check_typedef (a);
2408   if (TYPE_CODE (b) == TYPE_CODE_TYPEDEF)
2409     b = check_typedef (b);
2410
2411   /* If after resolving typedefs a and b are not of the same type
2412      code then they are not equal.  */
2413   if (TYPE_CODE (a) != TYPE_CODE (b))
2414     return 0;
2415
2416   /* If a and b are both pointers types or both reference types then
2417      they are equal of the same type iff the objects they refer to are
2418      of the same type.  */
2419   if (TYPE_CODE (a) == TYPE_CODE_PTR
2420       || TYPE_CODE (a) == TYPE_CODE_REF)
2421     return types_equal (TYPE_TARGET_TYPE (a),
2422                         TYPE_TARGET_TYPE (b));
2423
2424   /* Well, damnit, if the names are exactly the same, I'll say they
2425      are exactly the same.  This happens when we generate method
2426      stubs.  The types won't point to the same address, but they
2427      really are the same.  */
2428
2429   if (TYPE_NAME (a) && TYPE_NAME (b)
2430       && strcmp (TYPE_NAME (a), TYPE_NAME (b)) == 0)
2431     return 1;
2432
2433   /* Check if identical after resolving typedefs.  */
2434   if (a == b)
2435     return 1;
2436
2437   return 0;
2438 }
2439
2440 /* Compare one type (PARM) for compatibility with another (ARG).
2441  * PARM is intended to be the parameter type of a function; and
2442  * ARG is the supplied argument's type.  This function tests if
2443  * the latter can be converted to the former.
2444  * VALUE is the argument's value or NULL if none (or called recursively)
2445  *
2446  * Return 0 if they are identical types;
2447  * Otherwise, return an integer which corresponds to how compatible
2448  * PARM is to ARG.  The higher the return value, the worse the match.
2449  * Generally the "bad" conversions are all uniformly assigned a 100.  */
2450
2451 struct rank
2452 rank_one_type (struct type *parm, struct type *arg, struct value *value)
2453 {
2454   struct rank rank = {0,0};
2455
2456   if (types_equal (parm, arg))
2457     return EXACT_MATCH_BADNESS;
2458
2459   /* Resolve typedefs */
2460   if (TYPE_CODE (parm) == TYPE_CODE_TYPEDEF)
2461     parm = check_typedef (parm);
2462   if (TYPE_CODE (arg) == TYPE_CODE_TYPEDEF)
2463     arg = check_typedef (arg);
2464
2465   /* See through references, since we can almost make non-references
2466      references.  */
2467   if (TYPE_CODE (arg) == TYPE_CODE_REF)
2468     return (sum_ranks (rank_one_type (parm, TYPE_TARGET_TYPE (arg), NULL),
2469                        REFERENCE_CONVERSION_BADNESS));
2470   if (TYPE_CODE (parm) == TYPE_CODE_REF)
2471     return (sum_ranks (rank_one_type (TYPE_TARGET_TYPE (parm), arg, NULL),
2472                        REFERENCE_CONVERSION_BADNESS));
2473   if (overload_debug)
2474   /* Debugging only.  */
2475     fprintf_filtered (gdb_stderr, 
2476                       "------ Arg is %s [%d], parm is %s [%d]\n",
2477                       TYPE_NAME (arg), TYPE_CODE (arg), 
2478                       TYPE_NAME (parm), TYPE_CODE (parm));
2479
2480   /* x -> y means arg of type x being supplied for parameter of type y.  */
2481
2482   switch (TYPE_CODE (parm))
2483     {
2484     case TYPE_CODE_PTR:
2485       switch (TYPE_CODE (arg))
2486         {
2487         case TYPE_CODE_PTR:
2488
2489           /* Allowed pointer conversions are:
2490              (a) pointer to void-pointer conversion.  */
2491           if (TYPE_CODE (TYPE_TARGET_TYPE (parm)) == TYPE_CODE_VOID)
2492             return VOID_PTR_CONVERSION_BADNESS;
2493
2494           /* (b) pointer to ancestor-pointer conversion.  */
2495           rank.subrank = distance_to_ancestor (TYPE_TARGET_TYPE (parm),
2496                                                TYPE_TARGET_TYPE (arg),
2497                                                0);
2498           if (rank.subrank >= 0)
2499             return sum_ranks (BASE_PTR_CONVERSION_BADNESS, rank);
2500
2501           return INCOMPATIBLE_TYPE_BADNESS;
2502         case TYPE_CODE_ARRAY:
2503           if (types_equal (TYPE_TARGET_TYPE (parm),
2504                            TYPE_TARGET_TYPE (arg)))
2505             return EXACT_MATCH_BADNESS;
2506           return INCOMPATIBLE_TYPE_BADNESS;
2507         case TYPE_CODE_FUNC:
2508           return rank_one_type (TYPE_TARGET_TYPE (parm), arg, NULL);
2509         case TYPE_CODE_INT:
2510           if (value != NULL && TYPE_CODE (value_type (value)) == TYPE_CODE_INT
2511               && value_as_long (value) == 0)
2512             {
2513               /* Null pointer conversion: allow it to be cast to a pointer.
2514                  [4.10.1 of C++ standard draft n3290]  */
2515               return NULL_POINTER_CONVERSION_BADNESS;
2516             }
2517           /* fall through  */
2518         case TYPE_CODE_ENUM:
2519         case TYPE_CODE_FLAGS:
2520         case TYPE_CODE_CHAR:
2521         case TYPE_CODE_RANGE:
2522         case TYPE_CODE_BOOL:
2523         default:
2524           return INCOMPATIBLE_TYPE_BADNESS;
2525         }
2526     case TYPE_CODE_ARRAY:
2527       switch (TYPE_CODE (arg))
2528         {
2529         case TYPE_CODE_PTR:
2530         case TYPE_CODE_ARRAY:
2531           return rank_one_type (TYPE_TARGET_TYPE (parm), 
2532                                 TYPE_TARGET_TYPE (arg), NULL);
2533         default:
2534           return INCOMPATIBLE_TYPE_BADNESS;
2535         }
2536     case TYPE_CODE_FUNC:
2537       switch (TYPE_CODE (arg))
2538         {
2539         case TYPE_CODE_PTR:     /* funcptr -> func */
2540           return rank_one_type (parm, TYPE_TARGET_TYPE (arg), NULL);
2541         default:
2542           return INCOMPATIBLE_TYPE_BADNESS;
2543         }
2544     case TYPE_CODE_INT:
2545       switch (TYPE_CODE (arg))
2546         {
2547         case TYPE_CODE_INT:
2548           if (TYPE_LENGTH (arg) == TYPE_LENGTH (parm))
2549             {
2550               /* Deal with signed, unsigned, and plain chars and
2551                  signed and unsigned ints.  */
2552               if (TYPE_NOSIGN (parm))
2553                 {
2554                   /* This case only for character types.  */
2555                   if (TYPE_NOSIGN (arg))
2556                     return EXACT_MATCH_BADNESS; /* plain char -> plain char */
2557                   else          /* signed/unsigned char -> plain char */
2558                     return INTEGER_CONVERSION_BADNESS;
2559                 }
2560               else if (TYPE_UNSIGNED (parm))
2561                 {
2562                   if (TYPE_UNSIGNED (arg))
2563                     {
2564                       /* unsigned int -> unsigned int, or 
2565                          unsigned long -> unsigned long */
2566                       if (integer_types_same_name_p (TYPE_NAME (parm), 
2567                                                      TYPE_NAME (arg)))
2568                         return EXACT_MATCH_BADNESS;
2569                       else if (integer_types_same_name_p (TYPE_NAME (arg), 
2570                                                           "int")
2571                                && integer_types_same_name_p (TYPE_NAME (parm),
2572                                                              "long"))
2573                         /* unsigned int -> unsigned long */
2574                         return INTEGER_PROMOTION_BADNESS;
2575                       else
2576                         /* unsigned long -> unsigned int */
2577                         return INTEGER_CONVERSION_BADNESS;
2578                     }
2579                   else
2580                     {
2581                       if (integer_types_same_name_p (TYPE_NAME (arg), 
2582                                                      "long")
2583                           && integer_types_same_name_p (TYPE_NAME (parm), 
2584                                                         "int"))
2585                         /* signed long -> unsigned int */
2586                         return INTEGER_CONVERSION_BADNESS;
2587                       else
2588                         /* signed int/long -> unsigned int/long */
2589                         return INTEGER_CONVERSION_BADNESS;
2590                     }
2591                 }
2592               else if (!TYPE_NOSIGN (arg) && !TYPE_UNSIGNED (arg))
2593                 {
2594                   if (integer_types_same_name_p (TYPE_NAME (parm), 
2595                                                  TYPE_NAME (arg)))
2596                     return EXACT_MATCH_BADNESS;
2597                   else if (integer_types_same_name_p (TYPE_NAME (arg), 
2598                                                       "int")
2599                            && integer_types_same_name_p (TYPE_NAME (parm), 
2600                                                          "long"))
2601                     return INTEGER_PROMOTION_BADNESS;
2602                   else
2603                     return INTEGER_CONVERSION_BADNESS;
2604                 }
2605               else
2606                 return INTEGER_CONVERSION_BADNESS;
2607             }
2608           else if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
2609             return INTEGER_PROMOTION_BADNESS;
2610           else
2611             return INTEGER_CONVERSION_BADNESS;
2612         case TYPE_CODE_ENUM:
2613         case TYPE_CODE_FLAGS:
2614         case TYPE_CODE_CHAR:
2615         case TYPE_CODE_RANGE:
2616         case TYPE_CODE_BOOL:
2617           return INTEGER_PROMOTION_BADNESS;
2618         case TYPE_CODE_FLT:
2619           return INT_FLOAT_CONVERSION_BADNESS;
2620         case TYPE_CODE_PTR:
2621           return NS_POINTER_CONVERSION_BADNESS;
2622         default:
2623           return INCOMPATIBLE_TYPE_BADNESS;
2624         }
2625       break;
2626     case TYPE_CODE_ENUM:
2627       switch (TYPE_CODE (arg))
2628         {
2629         case TYPE_CODE_INT:
2630         case TYPE_CODE_CHAR:
2631         case TYPE_CODE_RANGE:
2632         case TYPE_CODE_BOOL:
2633         case TYPE_CODE_ENUM:
2634           return INTEGER_CONVERSION_BADNESS;
2635         case TYPE_CODE_FLT:
2636           return INT_FLOAT_CONVERSION_BADNESS;
2637         default:
2638           return INCOMPATIBLE_TYPE_BADNESS;
2639         }
2640       break;
2641     case TYPE_CODE_CHAR:
2642       switch (TYPE_CODE (arg))
2643         {
2644         case TYPE_CODE_RANGE:
2645         case TYPE_CODE_BOOL:
2646         case TYPE_CODE_ENUM:
2647           return INTEGER_CONVERSION_BADNESS;
2648         case TYPE_CODE_FLT:
2649           return INT_FLOAT_CONVERSION_BADNESS;
2650         case TYPE_CODE_INT:
2651           if (TYPE_LENGTH (arg) > TYPE_LENGTH (parm))
2652             return INTEGER_CONVERSION_BADNESS;
2653           else if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
2654             return INTEGER_PROMOTION_BADNESS;
2655           /* >>> !! else fall through !! <<< */
2656         case TYPE_CODE_CHAR:
2657           /* Deal with signed, unsigned, and plain chars for C++ and
2658              with int cases falling through from previous case.  */
2659           if (TYPE_NOSIGN (parm))
2660             {
2661               if (TYPE_NOSIGN (arg))
2662                 return EXACT_MATCH_BADNESS;
2663               else
2664                 return INTEGER_CONVERSION_BADNESS;
2665             }
2666           else if (TYPE_UNSIGNED (parm))
2667             {
2668               if (TYPE_UNSIGNED (arg))
2669                 return EXACT_MATCH_BADNESS;
2670               else
2671                 return INTEGER_PROMOTION_BADNESS;
2672             }
2673           else if (!TYPE_NOSIGN (arg) && !TYPE_UNSIGNED (arg))
2674             return EXACT_MATCH_BADNESS;
2675           else
2676             return INTEGER_CONVERSION_BADNESS;
2677         default:
2678           return INCOMPATIBLE_TYPE_BADNESS;
2679         }
2680       break;
2681     case TYPE_CODE_RANGE:
2682       switch (TYPE_CODE (arg))
2683         {
2684         case TYPE_CODE_INT:
2685         case TYPE_CODE_CHAR:
2686         case TYPE_CODE_RANGE:
2687         case TYPE_CODE_BOOL:
2688         case TYPE_CODE_ENUM:
2689           return INTEGER_CONVERSION_BADNESS;
2690         case TYPE_CODE_FLT:
2691           return INT_FLOAT_CONVERSION_BADNESS;
2692         default:
2693           return INCOMPATIBLE_TYPE_BADNESS;
2694         }
2695       break;
2696     case TYPE_CODE_BOOL:
2697       switch (TYPE_CODE (arg))
2698         {
2699         case TYPE_CODE_INT:
2700         case TYPE_CODE_CHAR:
2701         case TYPE_CODE_RANGE:
2702         case TYPE_CODE_ENUM:
2703         case TYPE_CODE_FLT:
2704           return INCOMPATIBLE_TYPE_BADNESS;
2705         case TYPE_CODE_PTR:
2706           return BOOL_PTR_CONVERSION_BADNESS;
2707         case TYPE_CODE_BOOL:
2708           return EXACT_MATCH_BADNESS;
2709         default:
2710           return INCOMPATIBLE_TYPE_BADNESS;
2711         }
2712       break;
2713     case TYPE_CODE_FLT:
2714       switch (TYPE_CODE (arg))
2715         {
2716         case TYPE_CODE_FLT:
2717           if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
2718             return FLOAT_PROMOTION_BADNESS;
2719           else if (TYPE_LENGTH (arg) == TYPE_LENGTH (parm))
2720             return EXACT_MATCH_BADNESS;
2721           else
2722             return FLOAT_CONVERSION_BADNESS;
2723         case TYPE_CODE_INT:
2724         case TYPE_CODE_BOOL:
2725         case TYPE_CODE_ENUM:
2726         case TYPE_CODE_RANGE:
2727         case TYPE_CODE_CHAR:
2728           return INT_FLOAT_CONVERSION_BADNESS;
2729         default:
2730           return INCOMPATIBLE_TYPE_BADNESS;
2731         }
2732       break;
2733     case TYPE_CODE_COMPLEX:
2734       switch (TYPE_CODE (arg))
2735         {               /* Strictly not needed for C++, but...  */
2736         case TYPE_CODE_FLT:
2737           return FLOAT_PROMOTION_BADNESS;
2738         case TYPE_CODE_COMPLEX:
2739           return EXACT_MATCH_BADNESS;
2740         default:
2741           return INCOMPATIBLE_TYPE_BADNESS;
2742         }
2743       break;
2744     case TYPE_CODE_STRUCT:
2745       /* currently same as TYPE_CODE_CLASS.  */
2746       switch (TYPE_CODE (arg))
2747         {
2748         case TYPE_CODE_STRUCT:
2749           /* Check for derivation */
2750           rank.subrank = distance_to_ancestor (parm, arg, 0);
2751           if (rank.subrank >= 0)
2752             return sum_ranks (BASE_CONVERSION_BADNESS, rank);
2753           /* else fall through */
2754         default:
2755           return INCOMPATIBLE_TYPE_BADNESS;
2756         }
2757       break;
2758     case TYPE_CODE_UNION:
2759       switch (TYPE_CODE (arg))
2760         {
2761         case TYPE_CODE_UNION:
2762         default:
2763           return INCOMPATIBLE_TYPE_BADNESS;
2764         }
2765       break;
2766     case TYPE_CODE_MEMBERPTR:
2767       switch (TYPE_CODE (arg))
2768         {
2769         default:
2770           return INCOMPATIBLE_TYPE_BADNESS;
2771         }
2772       break;
2773     case TYPE_CODE_METHOD:
2774       switch (TYPE_CODE (arg))
2775         {
2776
2777         default:
2778           return INCOMPATIBLE_TYPE_BADNESS;
2779         }
2780       break;
2781     case TYPE_CODE_REF:
2782       switch (TYPE_CODE (arg))
2783         {
2784
2785         default:
2786           return INCOMPATIBLE_TYPE_BADNESS;
2787         }
2788
2789       break;
2790     case TYPE_CODE_SET:
2791       switch (TYPE_CODE (arg))
2792         {
2793           /* Not in C++ */
2794         case TYPE_CODE_SET:
2795           return rank_one_type (TYPE_FIELD_TYPE (parm, 0), 
2796                                 TYPE_FIELD_TYPE (arg, 0), NULL);
2797         default:
2798           return INCOMPATIBLE_TYPE_BADNESS;
2799         }
2800       break;
2801     case TYPE_CODE_VOID:
2802     default:
2803       return INCOMPATIBLE_TYPE_BADNESS;
2804     }                           /* switch (TYPE_CODE (arg)) */
2805 }
2806
2807 /* End of functions for overload resolution.  */
2808 \f
2809 /* Routines to pretty-print types.  */
2810
2811 static void
2812 print_bit_vector (B_TYPE *bits, int nbits)
2813 {
2814   int bitno;
2815
2816   for (bitno = 0; bitno < nbits; bitno++)
2817     {
2818       if ((bitno % 8) == 0)
2819         {
2820           puts_filtered (" ");
2821         }
2822       if (B_TST (bits, bitno))
2823         printf_filtered (("1"));
2824       else
2825         printf_filtered (("0"));
2826     }
2827 }
2828
2829 /* Note the first arg should be the "this" pointer, we may not want to
2830    include it since we may get into a infinitely recursive
2831    situation.  */
2832
2833 static void
2834 print_arg_types (struct field *args, int nargs, int spaces)
2835 {
2836   if (args != NULL)
2837     {
2838       int i;
2839
2840       for (i = 0; i < nargs; i++)
2841         recursive_dump_type (args[i].type, spaces + 2);
2842     }
2843 }
2844
2845 int
2846 field_is_static (struct field *f)
2847 {
2848   /* "static" fields are the fields whose location is not relative
2849      to the address of the enclosing struct.  It would be nice to
2850      have a dedicated flag that would be set for static fields when
2851      the type is being created.  But in practice, checking the field
2852      loc_kind should give us an accurate answer.  */
2853   return (FIELD_LOC_KIND (*f) == FIELD_LOC_KIND_PHYSNAME
2854           || FIELD_LOC_KIND (*f) == FIELD_LOC_KIND_PHYSADDR);
2855 }
2856
2857 static void
2858 dump_fn_fieldlists (struct type *type, int spaces)
2859 {
2860   int method_idx;
2861   int overload_idx;
2862   struct fn_field *f;
2863
2864   printfi_filtered (spaces, "fn_fieldlists ");
2865   gdb_print_host_address (TYPE_FN_FIELDLISTS (type), gdb_stdout);
2866   printf_filtered ("\n");
2867   for (method_idx = 0; method_idx < TYPE_NFN_FIELDS (type); method_idx++)
2868     {
2869       f = TYPE_FN_FIELDLIST1 (type, method_idx);
2870       printfi_filtered (spaces + 2, "[%d] name '%s' (",
2871                         method_idx,
2872                         TYPE_FN_FIELDLIST_NAME (type, method_idx));
2873       gdb_print_host_address (TYPE_FN_FIELDLIST_NAME (type, method_idx),
2874                               gdb_stdout);
2875       printf_filtered (_(") length %d\n"),
2876                        TYPE_FN_FIELDLIST_LENGTH (type, method_idx));
2877       for (overload_idx = 0;
2878            overload_idx < TYPE_FN_FIELDLIST_LENGTH (type, method_idx);
2879            overload_idx++)
2880         {
2881           printfi_filtered (spaces + 4, "[%d] physname '%s' (",
2882                             overload_idx,
2883                             TYPE_FN_FIELD_PHYSNAME (f, overload_idx));
2884           gdb_print_host_address (TYPE_FN_FIELD_PHYSNAME (f, overload_idx),
2885                                   gdb_stdout);
2886           printf_filtered (")\n");
2887           printfi_filtered (spaces + 8, "type ");
2888           gdb_print_host_address (TYPE_FN_FIELD_TYPE (f, overload_idx), 
2889                                   gdb_stdout);
2890           printf_filtered ("\n");
2891
2892           recursive_dump_type (TYPE_FN_FIELD_TYPE (f, overload_idx),
2893                                spaces + 8 + 2);
2894
2895           printfi_filtered (spaces + 8, "args ");
2896           gdb_print_host_address (TYPE_FN_FIELD_ARGS (f, overload_idx), 
2897                                   gdb_stdout);
2898           printf_filtered ("\n");
2899
2900           print_arg_types (TYPE_FN_FIELD_ARGS (f, overload_idx),
2901                            TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (f, 
2902                                                              overload_idx)),
2903                            spaces);
2904           printfi_filtered (spaces + 8, "fcontext ");
2905           gdb_print_host_address (TYPE_FN_FIELD_FCONTEXT (f, overload_idx),
2906                                   gdb_stdout);
2907           printf_filtered ("\n");
2908
2909           printfi_filtered (spaces + 8, "is_const %d\n",
2910                             TYPE_FN_FIELD_CONST (f, overload_idx));
2911           printfi_filtered (spaces + 8, "is_volatile %d\n",
2912                             TYPE_FN_FIELD_VOLATILE (f, overload_idx));
2913           printfi_filtered (spaces + 8, "is_private %d\n",
2914                             TYPE_FN_FIELD_PRIVATE (f, overload_idx));
2915           printfi_filtered (spaces + 8, "is_protected %d\n",
2916                             TYPE_FN_FIELD_PROTECTED (f, overload_idx));
2917           printfi_filtered (spaces + 8, "is_stub %d\n",
2918                             TYPE_FN_FIELD_STUB (f, overload_idx));
2919           printfi_filtered (spaces + 8, "voffset %u\n",
2920                             TYPE_FN_FIELD_VOFFSET (f, overload_idx));
2921         }
2922     }
2923 }
2924
2925 static void
2926 print_cplus_stuff (struct type *type, int spaces)
2927 {
2928   printfi_filtered (spaces, "n_baseclasses %d\n",
2929                     TYPE_N_BASECLASSES (type));
2930   printfi_filtered (spaces, "nfn_fields %d\n",
2931                     TYPE_NFN_FIELDS (type));
2932   if (TYPE_N_BASECLASSES (type) > 0)
2933     {
2934       printfi_filtered (spaces, "virtual_field_bits (%d bits at *",
2935                         TYPE_N_BASECLASSES (type));
2936       gdb_print_host_address (TYPE_FIELD_VIRTUAL_BITS (type), 
2937                               gdb_stdout);
2938       printf_filtered (")");
2939
2940       print_bit_vector (TYPE_FIELD_VIRTUAL_BITS (type),
2941                         TYPE_N_BASECLASSES (type));
2942       puts_filtered ("\n");
2943     }
2944   if (TYPE_NFIELDS (type) > 0)
2945     {
2946       if (TYPE_FIELD_PRIVATE_BITS (type) != NULL)
2947         {
2948           printfi_filtered (spaces, 
2949                             "private_field_bits (%d bits at *",
2950                             TYPE_NFIELDS (type));
2951           gdb_print_host_address (TYPE_FIELD_PRIVATE_BITS (type), 
2952                                   gdb_stdout);
2953           printf_filtered (")");
2954           print_bit_vector (TYPE_FIELD_PRIVATE_BITS (type),
2955                             TYPE_NFIELDS (type));
2956           puts_filtered ("\n");
2957         }
2958       if (TYPE_FIELD_PROTECTED_BITS (type) != NULL)
2959         {
2960           printfi_filtered (spaces, 
2961                             "protected_field_bits (%d bits at *",
2962                             TYPE_NFIELDS (type));
2963           gdb_print_host_address (TYPE_FIELD_PROTECTED_BITS (type), 
2964                                   gdb_stdout);
2965           printf_filtered (")");
2966           print_bit_vector (TYPE_FIELD_PROTECTED_BITS (type),
2967                             TYPE_NFIELDS (type));
2968           puts_filtered ("\n");
2969         }
2970     }
2971   if (TYPE_NFN_FIELDS (type) > 0)
2972     {
2973       dump_fn_fieldlists (type, spaces);
2974     }
2975 }
2976
2977 /* Print the contents of the TYPE's type_specific union, assuming that
2978    its type-specific kind is TYPE_SPECIFIC_GNAT_STUFF.  */
2979
2980 static void
2981 print_gnat_stuff (struct type *type, int spaces)
2982 {
2983   struct type *descriptive_type = TYPE_DESCRIPTIVE_TYPE (type);
2984
2985   recursive_dump_type (descriptive_type, spaces + 2);
2986 }
2987
2988 static struct obstack dont_print_type_obstack;
2989
2990 void
2991 recursive_dump_type (struct type *type, int spaces)
2992 {
2993   int idx;
2994
2995   if (spaces == 0)
2996     obstack_begin (&dont_print_type_obstack, 0);
2997
2998   if (TYPE_NFIELDS (type) > 0
2999       || (HAVE_CPLUS_STRUCT (type) && TYPE_NFN_FIELDS (type) > 0))
3000     {
3001       struct type **first_dont_print
3002         = (struct type **) obstack_base (&dont_print_type_obstack);
3003
3004       int i = (struct type **) 
3005         obstack_next_free (&dont_print_type_obstack) - first_dont_print;
3006
3007       while (--i >= 0)
3008         {
3009           if (type == first_dont_print[i])
3010             {
3011               printfi_filtered (spaces, "type node ");
3012               gdb_print_host_address (type, gdb_stdout);
3013               printf_filtered (_(" <same as already seen type>\n"));
3014               return;
3015             }
3016         }
3017
3018       obstack_ptr_grow (&dont_print_type_obstack, type);
3019     }
3020
3021   printfi_filtered (spaces, "type node ");
3022   gdb_print_host_address (type, gdb_stdout);
3023   printf_filtered ("\n");
3024   printfi_filtered (spaces, "name '%s' (",
3025                     TYPE_NAME (type) ? TYPE_NAME (type) : "<NULL>");
3026   gdb_print_host_address (TYPE_NAME (type), gdb_stdout);
3027   printf_filtered (")\n");
3028   printfi_filtered (spaces, "tagname '%s' (",
3029                     TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) : "<NULL>");
3030   gdb_print_host_address (TYPE_TAG_NAME (type), gdb_stdout);
3031   printf_filtered (")\n");
3032   printfi_filtered (spaces, "code 0x%x ", TYPE_CODE (type));
3033   switch (TYPE_CODE (type))
3034     {
3035     case TYPE_CODE_UNDEF:
3036       printf_filtered ("(TYPE_CODE_UNDEF)");
3037       break;
3038     case TYPE_CODE_PTR:
3039       printf_filtered ("(TYPE_CODE_PTR)");
3040       break;
3041     case TYPE_CODE_ARRAY:
3042       printf_filtered ("(TYPE_CODE_ARRAY)");
3043       break;
3044     case TYPE_CODE_STRUCT:
3045       printf_filtered ("(TYPE_CODE_STRUCT)");
3046       break;
3047     case TYPE_CODE_UNION:
3048       printf_filtered ("(TYPE_CODE_UNION)");
3049       break;
3050     case TYPE_CODE_ENUM:
3051       printf_filtered ("(TYPE_CODE_ENUM)");
3052       break;
3053     case TYPE_CODE_FLAGS:
3054       printf_filtered ("(TYPE_CODE_FLAGS)");
3055       break;
3056     case TYPE_CODE_FUNC:
3057       printf_filtered ("(TYPE_CODE_FUNC)");
3058       break;
3059     case TYPE_CODE_INT:
3060       printf_filtered ("(TYPE_CODE_INT)");
3061       break;
3062     case TYPE_CODE_FLT:
3063       printf_filtered ("(TYPE_CODE_FLT)");
3064       break;
3065     case TYPE_CODE_VOID:
3066       printf_filtered ("(TYPE_CODE_VOID)");
3067       break;
3068     case TYPE_CODE_SET:
3069       printf_filtered ("(TYPE_CODE_SET)");
3070       break;
3071     case TYPE_CODE_RANGE:
3072       printf_filtered ("(TYPE_CODE_RANGE)");
3073       break;
3074     case TYPE_CODE_STRING:
3075       printf_filtered ("(TYPE_CODE_STRING)");
3076       break;
3077     case TYPE_CODE_ERROR:
3078       printf_filtered ("(TYPE_CODE_ERROR)");
3079       break;
3080     case TYPE_CODE_MEMBERPTR:
3081       printf_filtered ("(TYPE_CODE_MEMBERPTR)");
3082       break;
3083     case TYPE_CODE_METHODPTR:
3084       printf_filtered ("(TYPE_CODE_METHODPTR)");
3085       break;
3086     case TYPE_CODE_METHOD:
3087       printf_filtered ("(TYPE_CODE_METHOD)");
3088       break;
3089     case TYPE_CODE_REF:
3090       printf_filtered ("(TYPE_CODE_REF)");
3091       break;
3092     case TYPE_CODE_CHAR:
3093       printf_filtered ("(TYPE_CODE_CHAR)");
3094       break;
3095     case TYPE_CODE_BOOL:
3096       printf_filtered ("(TYPE_CODE_BOOL)");
3097       break;
3098     case TYPE_CODE_COMPLEX:
3099       printf_filtered ("(TYPE_CODE_COMPLEX)");
3100       break;
3101     case TYPE_CODE_TYPEDEF:
3102       printf_filtered ("(TYPE_CODE_TYPEDEF)");
3103       break;
3104     case TYPE_CODE_NAMESPACE:
3105       printf_filtered ("(TYPE_CODE_NAMESPACE)");
3106       break;
3107     default:
3108       printf_filtered ("(UNKNOWN TYPE CODE)");
3109       break;
3110     }
3111   puts_filtered ("\n");
3112   printfi_filtered (spaces, "length %d\n", TYPE_LENGTH (type));
3113   if (TYPE_OBJFILE_OWNED (type))
3114     {
3115       printfi_filtered (spaces, "objfile ");
3116       gdb_print_host_address (TYPE_OWNER (type).objfile, gdb_stdout);
3117     }
3118   else
3119     {
3120       printfi_filtered (spaces, "gdbarch ");
3121       gdb_print_host_address (TYPE_OWNER (type).gdbarch, gdb_stdout);
3122     }
3123   printf_filtered ("\n");
3124   printfi_filtered (spaces, "target_type ");
3125   gdb_print_host_address (TYPE_TARGET_TYPE (type), gdb_stdout);
3126   printf_filtered ("\n");
3127   if (TYPE_TARGET_TYPE (type) != NULL)
3128     {
3129       recursive_dump_type (TYPE_TARGET_TYPE (type), spaces + 2);
3130     }
3131   printfi_filtered (spaces, "pointer_type ");
3132   gdb_print_host_address (TYPE_POINTER_TYPE (type), gdb_stdout);
3133   printf_filtered ("\n");
3134   printfi_filtered (spaces, "reference_type ");
3135   gdb_print_host_address (TYPE_REFERENCE_TYPE (type), gdb_stdout);
3136   printf_filtered ("\n");
3137   printfi_filtered (spaces, "type_chain ");
3138   gdb_print_host_address (TYPE_CHAIN (type), gdb_stdout);
3139   printf_filtered ("\n");
3140   printfi_filtered (spaces, "instance_flags 0x%x", 
3141                     TYPE_INSTANCE_FLAGS (type));
3142   if (TYPE_CONST (type))
3143     {
3144       puts_filtered (" TYPE_FLAG_CONST");
3145     }
3146   if (TYPE_VOLATILE (type))
3147     {
3148       puts_filtered (" TYPE_FLAG_VOLATILE");
3149     }
3150   if (TYPE_CODE_SPACE (type))
3151     {
3152       puts_filtered (" TYPE_FLAG_CODE_SPACE");
3153     }
3154   if (TYPE_DATA_SPACE (type))
3155     {
3156       puts_filtered (" TYPE_FLAG_DATA_SPACE");
3157     }
3158   if (TYPE_ADDRESS_CLASS_1 (type))
3159     {
3160       puts_filtered (" TYPE_FLAG_ADDRESS_CLASS_1");
3161     }
3162   if (TYPE_ADDRESS_CLASS_2 (type))
3163     {
3164       puts_filtered (" TYPE_FLAG_ADDRESS_CLASS_2");
3165     }
3166   puts_filtered ("\n");
3167
3168   printfi_filtered (spaces, "flags");
3169   if (TYPE_UNSIGNED (type))
3170     {
3171       puts_filtered (" TYPE_FLAG_UNSIGNED");
3172     }
3173   if (TYPE_NOSIGN (type))
3174     {
3175       puts_filtered (" TYPE_FLAG_NOSIGN");
3176     }
3177   if (TYPE_STUB (type))
3178     {
3179       puts_filtered (" TYPE_FLAG_STUB");
3180     }
3181   if (TYPE_TARGET_STUB (type))
3182     {
3183       puts_filtered (" TYPE_FLAG_TARGET_STUB");
3184     }
3185   if (TYPE_STATIC (type))
3186     {
3187       puts_filtered (" TYPE_FLAG_STATIC");
3188     }
3189   if (TYPE_PROTOTYPED (type))
3190     {
3191       puts_filtered (" TYPE_FLAG_PROTOTYPED");
3192     }
3193   if (TYPE_INCOMPLETE (type))
3194     {
3195       puts_filtered (" TYPE_FLAG_INCOMPLETE");
3196     }
3197   if (TYPE_VARARGS (type))
3198     {
3199       puts_filtered (" TYPE_FLAG_VARARGS");
3200     }
3201   /* This is used for things like AltiVec registers on ppc.  Gcc emits
3202      an attribute for the array type, which tells whether or not we
3203      have a vector, instead of a regular array.  */
3204   if (TYPE_VECTOR (type))
3205     {
3206       puts_filtered (" TYPE_FLAG_VECTOR");
3207     }
3208   if (TYPE_FIXED_INSTANCE (type))
3209     {
3210       puts_filtered (" TYPE_FIXED_INSTANCE");
3211     }
3212   if (TYPE_STUB_SUPPORTED (type))
3213     {
3214       puts_filtered (" TYPE_STUB_SUPPORTED");
3215     }
3216   if (TYPE_NOTTEXT (type))
3217     {
3218       puts_filtered (" TYPE_NOTTEXT");
3219     }
3220   puts_filtered ("\n");
3221   printfi_filtered (spaces, "nfields %d ", TYPE_NFIELDS (type));
3222   gdb_print_host_address (TYPE_FIELDS (type), gdb_stdout);
3223   puts_filtered ("\n");
3224   for (idx = 0; idx < TYPE_NFIELDS (type); idx++)
3225     {
3226       if (TYPE_CODE (type) == TYPE_CODE_ENUM)
3227         printfi_filtered (spaces + 2,
3228                           "[%d] enumval %s type ",
3229                           idx, plongest (TYPE_FIELD_ENUMVAL (type, idx)));
3230       else
3231         printfi_filtered (spaces + 2,
3232                           "[%d] bitpos %d bitsize %d type ",
3233                           idx, TYPE_FIELD_BITPOS (type, idx),
3234                           TYPE_FIELD_BITSIZE (type, idx));
3235       gdb_print_host_address (TYPE_FIELD_TYPE (type, idx), gdb_stdout);
3236       printf_filtered (" name '%s' (",
3237                        TYPE_FIELD_NAME (type, idx) != NULL
3238                        ? TYPE_FIELD_NAME (type, idx)
3239                        : "<NULL>");
3240       gdb_print_host_address (TYPE_FIELD_NAME (type, idx), gdb_stdout);
3241       printf_filtered (")\n");
3242       if (TYPE_FIELD_TYPE (type, idx) != NULL)
3243         {
3244           recursive_dump_type (TYPE_FIELD_TYPE (type, idx), spaces + 4);
3245         }
3246     }
3247   if (TYPE_CODE (type) == TYPE_CODE_RANGE)
3248     {
3249       printfi_filtered (spaces, "low %s%s  high %s%s\n",
3250                         plongest (TYPE_LOW_BOUND (type)), 
3251                         TYPE_LOW_BOUND_UNDEFINED (type) ? " (undefined)" : "",
3252                         plongest (TYPE_HIGH_BOUND (type)),
3253                         TYPE_HIGH_BOUND_UNDEFINED (type) 
3254                         ? " (undefined)" : "");
3255     }
3256   printfi_filtered (spaces, "vptr_basetype ");
3257   gdb_print_host_address (TYPE_VPTR_BASETYPE (type), gdb_stdout);
3258   puts_filtered ("\n");
3259   if (TYPE_VPTR_BASETYPE (type) != NULL)
3260     {
3261       recursive_dump_type (TYPE_VPTR_BASETYPE (type), spaces + 2);
3262     }
3263   printfi_filtered (spaces, "vptr_fieldno %d\n", 
3264                     TYPE_VPTR_FIELDNO (type));
3265
3266   switch (TYPE_SPECIFIC_FIELD (type))
3267     {
3268       case TYPE_SPECIFIC_CPLUS_STUFF:
3269         printfi_filtered (spaces, "cplus_stuff ");
3270         gdb_print_host_address (TYPE_CPLUS_SPECIFIC (type), 
3271                                 gdb_stdout);
3272         puts_filtered ("\n");
3273         print_cplus_stuff (type, spaces);
3274         break;
3275
3276       case TYPE_SPECIFIC_GNAT_STUFF:
3277         printfi_filtered (spaces, "gnat_stuff ");
3278         gdb_print_host_address (TYPE_GNAT_SPECIFIC (type), gdb_stdout);
3279         puts_filtered ("\n");
3280         print_gnat_stuff (type, spaces);
3281         break;
3282
3283       case TYPE_SPECIFIC_FLOATFORMAT:
3284         printfi_filtered (spaces, "floatformat ");
3285         if (TYPE_FLOATFORMAT (type) == NULL)
3286           puts_filtered ("(null)");
3287         else
3288           {
3289             puts_filtered ("{ ");
3290             if (TYPE_FLOATFORMAT (type)[0] == NULL
3291                 || TYPE_FLOATFORMAT (type)[0]->name == NULL)
3292               puts_filtered ("(null)");
3293             else
3294               puts_filtered (TYPE_FLOATFORMAT (type)[0]->name);
3295
3296             puts_filtered (", ");
3297             if (TYPE_FLOATFORMAT (type)[1] == NULL
3298                 || TYPE_FLOATFORMAT (type)[1]->name == NULL)
3299               puts_filtered ("(null)");
3300             else
3301               puts_filtered (TYPE_FLOATFORMAT (type)[1]->name);
3302
3303             puts_filtered (" }");
3304           }
3305         puts_filtered ("\n");
3306         break;
3307
3308       case TYPE_SPECIFIC_FUNC:
3309         printfi_filtered (spaces, "calling_convention %d\n",
3310                           TYPE_CALLING_CONVENTION (type));
3311         /* tail_call_list is not printed.  */
3312         break;
3313     }
3314
3315   if (spaces == 0)
3316     obstack_free (&dont_print_type_obstack, NULL);
3317 }
3318 \f
3319 /* Trivial helpers for the libiberty hash table, for mapping one
3320    type to another.  */
3321
3322 struct type_pair
3323 {
3324   struct type *old, *new;
3325 };
3326
3327 static hashval_t
3328 type_pair_hash (const void *item)
3329 {
3330   const struct type_pair *pair = item;
3331
3332   return htab_hash_pointer (pair->old);
3333 }
3334
3335 static int
3336 type_pair_eq (const void *item_lhs, const void *item_rhs)
3337 {
3338   const struct type_pair *lhs = item_lhs, *rhs = item_rhs;
3339
3340   return lhs->old == rhs->old;
3341 }
3342
3343 /* Allocate the hash table used by copy_type_recursive to walk
3344    types without duplicates.  We use OBJFILE's obstack, because
3345    OBJFILE is about to be deleted.  */
3346
3347 htab_t
3348 create_copied_types_hash (struct objfile *objfile)
3349 {
3350   return htab_create_alloc_ex (1, type_pair_hash, type_pair_eq,
3351                                NULL, &objfile->objfile_obstack,
3352                                hashtab_obstack_allocate,
3353                                dummy_obstack_deallocate);
3354 }
3355
3356 /* Recursively copy (deep copy) TYPE, if it is associated with
3357    OBJFILE.  Return a new type allocated using malloc, a saved type if
3358    we have already visited TYPE (using COPIED_TYPES), or TYPE if it is
3359    not associated with OBJFILE.  */
3360
3361 struct type *
3362 copy_type_recursive (struct objfile *objfile, 
3363                      struct type *type,
3364                      htab_t copied_types)
3365 {
3366   struct type_pair *stored, pair;
3367   void **slot;
3368   struct type *new_type;
3369
3370   if (! TYPE_OBJFILE_OWNED (type))
3371     return type;
3372
3373   /* This type shouldn't be pointing to any types in other objfiles;
3374      if it did, the type might disappear unexpectedly.  */
3375   gdb_assert (TYPE_OBJFILE (type) == objfile);
3376
3377   pair.old = type;
3378   slot = htab_find_slot (copied_types, &pair, INSERT);
3379   if (*slot != NULL)
3380     return ((struct type_pair *) *slot)->new;
3381
3382   new_type = alloc_type_arch (get_type_arch (type));
3383
3384   /* We must add the new type to the hash table immediately, in case
3385      we encounter this type again during a recursive call below.  */
3386   stored
3387     = obstack_alloc (&objfile->objfile_obstack, sizeof (struct type_pair));
3388   stored->old = type;
3389   stored->new = new_type;
3390   *slot = stored;
3391
3392   /* Copy the common fields of types.  For the main type, we simply
3393      copy the entire thing and then update specific fields as needed.  */
3394   *TYPE_MAIN_TYPE (new_type) = *TYPE_MAIN_TYPE (type);
3395   TYPE_OBJFILE_OWNED (new_type) = 0;
3396   TYPE_OWNER (new_type).gdbarch = get_type_arch (type);
3397
3398   if (TYPE_NAME (type))
3399     TYPE_NAME (new_type) = xstrdup (TYPE_NAME (type));
3400   if (TYPE_TAG_NAME (type))
3401     TYPE_TAG_NAME (new_type) = xstrdup (TYPE_TAG_NAME (type));
3402
3403   TYPE_INSTANCE_FLAGS (new_type) = TYPE_INSTANCE_FLAGS (type);
3404   TYPE_LENGTH (new_type) = TYPE_LENGTH (type);
3405
3406   /* Copy the fields.  */
3407   if (TYPE_NFIELDS (type))
3408     {
3409       int i, nfields;
3410
3411       nfields = TYPE_NFIELDS (type);
3412       TYPE_FIELDS (new_type) = XCALLOC (nfields, struct field);
3413       for (i = 0; i < nfields; i++)
3414         {
3415           TYPE_FIELD_ARTIFICIAL (new_type, i) = 
3416             TYPE_FIELD_ARTIFICIAL (type, i);
3417           TYPE_FIELD_BITSIZE (new_type, i) = TYPE_FIELD_BITSIZE (type, i);
3418           if (TYPE_FIELD_TYPE (type, i))
3419             TYPE_FIELD_TYPE (new_type, i)
3420               = copy_type_recursive (objfile, TYPE_FIELD_TYPE (type, i),
3421                                      copied_types);
3422           if (TYPE_FIELD_NAME (type, i))
3423             TYPE_FIELD_NAME (new_type, i) = 
3424               xstrdup (TYPE_FIELD_NAME (type, i));
3425           switch (TYPE_FIELD_LOC_KIND (type, i))
3426             {
3427             case FIELD_LOC_KIND_BITPOS:
3428               SET_FIELD_BITPOS (TYPE_FIELD (new_type, i),
3429                                 TYPE_FIELD_BITPOS (type, i));
3430               break;
3431             case FIELD_LOC_KIND_ENUMVAL:
3432               SET_FIELD_ENUMVAL (TYPE_FIELD (new_type, i),
3433                                  TYPE_FIELD_ENUMVAL (type, i));
3434               break;
3435             case FIELD_LOC_KIND_PHYSADDR:
3436               SET_FIELD_PHYSADDR (TYPE_FIELD (new_type, i),
3437                                   TYPE_FIELD_STATIC_PHYSADDR (type, i));
3438               break;
3439             case FIELD_LOC_KIND_PHYSNAME:
3440               SET_FIELD_PHYSNAME (TYPE_FIELD (new_type, i),
3441                                   xstrdup (TYPE_FIELD_STATIC_PHYSNAME (type,
3442                                                                        i)));
3443               break;
3444             default:
3445               internal_error (__FILE__, __LINE__,
3446                               _("Unexpected type field location kind: %d"),
3447                               TYPE_FIELD_LOC_KIND (type, i));
3448             }
3449         }
3450     }
3451
3452   /* For range types, copy the bounds information.  */
3453   if (TYPE_CODE (type) == TYPE_CODE_RANGE)
3454     {
3455       TYPE_RANGE_DATA (new_type) = xmalloc (sizeof (struct range_bounds));
3456       *TYPE_RANGE_DATA (new_type) = *TYPE_RANGE_DATA (type);
3457     }
3458
3459   /* Copy pointers to other types.  */
3460   if (TYPE_TARGET_TYPE (type))
3461     TYPE_TARGET_TYPE (new_type) = 
3462       copy_type_recursive (objfile, 
3463                            TYPE_TARGET_TYPE (type),
3464                            copied_types);
3465   if (TYPE_VPTR_BASETYPE (type))
3466     TYPE_VPTR_BASETYPE (new_type) = 
3467       copy_type_recursive (objfile,
3468                            TYPE_VPTR_BASETYPE (type),
3469                            copied_types);
3470   /* Maybe copy the type_specific bits.
3471
3472      NOTE drow/2005-12-09: We do not copy the C++-specific bits like
3473      base classes and methods.  There's no fundamental reason why we
3474      can't, but at the moment it is not needed.  */
3475
3476   if (TYPE_CODE (type) == TYPE_CODE_FLT)
3477     TYPE_FLOATFORMAT (new_type) = TYPE_FLOATFORMAT (type);
3478   else if (TYPE_CODE (type) == TYPE_CODE_STRUCT
3479            || TYPE_CODE (type) == TYPE_CODE_UNION
3480            || TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
3481     INIT_CPLUS_SPECIFIC (new_type);
3482
3483   return new_type;
3484 }
3485
3486 /* Make a copy of the given TYPE, except that the pointer & reference
3487    types are not preserved.
3488    
3489    This function assumes that the given type has an associated objfile.
3490    This objfile is used to allocate the new type.  */
3491
3492 struct type *
3493 copy_type (const struct type *type)
3494 {
3495   struct type *new_type;
3496
3497   gdb_assert (TYPE_OBJFILE_OWNED (type));
3498
3499   new_type = alloc_type_copy (type);
3500   TYPE_INSTANCE_FLAGS (new_type) = TYPE_INSTANCE_FLAGS (type);
3501   TYPE_LENGTH (new_type) = TYPE_LENGTH (type);
3502   memcpy (TYPE_MAIN_TYPE (new_type), TYPE_MAIN_TYPE (type),
3503           sizeof (struct main_type));
3504
3505   return new_type;
3506 }
3507 \f
3508 /* Helper functions to initialize architecture-specific types.  */
3509
3510 /* Allocate a type structure associated with GDBARCH and set its
3511    CODE, LENGTH, and NAME fields.  */
3512
3513 struct type *
3514 arch_type (struct gdbarch *gdbarch,
3515            enum type_code code, int length, char *name)
3516 {
3517   struct type *type;
3518
3519   type = alloc_type_arch (gdbarch);
3520   TYPE_CODE (type) = code;
3521   TYPE_LENGTH (type) = length;
3522
3523   if (name)
3524     TYPE_NAME (type) = xstrdup (name);
3525
3526   return type;
3527 }
3528
3529 /* Allocate a TYPE_CODE_INT type structure associated with GDBARCH.
3530    BIT is the type size in bits.  If UNSIGNED_P is non-zero, set
3531    the type's TYPE_UNSIGNED flag.  NAME is the type name.  */
3532
3533 struct type *
3534 arch_integer_type (struct gdbarch *gdbarch,
3535                    int bit, int unsigned_p, char *name)
3536 {
3537   struct type *t;
3538
3539   t = arch_type (gdbarch, TYPE_CODE_INT, bit / TARGET_CHAR_BIT, name);
3540   if (unsigned_p)
3541     TYPE_UNSIGNED (t) = 1;
3542   if (name && strcmp (name, "char") == 0)
3543     TYPE_NOSIGN (t) = 1;
3544
3545   return t;
3546 }
3547
3548 /* Allocate a TYPE_CODE_CHAR type structure associated with GDBARCH.
3549    BIT is the type size in bits.  If UNSIGNED_P is non-zero, set
3550    the type's TYPE_UNSIGNED flag.  NAME is the type name.  */
3551
3552 struct type *
3553 arch_character_type (struct gdbarch *gdbarch,
3554                      int bit, int unsigned_p, char *name)
3555 {
3556   struct type *t;
3557
3558   t = arch_type (gdbarch, TYPE_CODE_CHAR, bit / TARGET_CHAR_BIT, name);
3559   if (unsigned_p)
3560     TYPE_UNSIGNED (t) = 1;
3561
3562   return t;
3563 }
3564
3565 /* Allocate a TYPE_CODE_BOOL type structure associated with GDBARCH.
3566    BIT is the type size in bits.  If UNSIGNED_P is non-zero, set
3567    the type's TYPE_UNSIGNED flag.  NAME is the type name.  */
3568
3569 struct type *
3570 arch_boolean_type (struct gdbarch *gdbarch,
3571                    int bit, int unsigned_p, char *name)
3572 {
3573   struct type *t;
3574
3575   t = arch_type (gdbarch, TYPE_CODE_BOOL, bit / TARGET_CHAR_BIT, name);
3576   if (unsigned_p)
3577     TYPE_UNSIGNED (t) = 1;
3578
3579   return t;
3580 }
3581
3582 /* Allocate a TYPE_CODE_FLT type structure associated with GDBARCH.
3583    BIT is the type size in bits; if BIT equals -1, the size is
3584    determined by the floatformat.  NAME is the type name.  Set the
3585    TYPE_FLOATFORMAT from FLOATFORMATS.  */
3586
3587 struct type *
3588 arch_float_type (struct gdbarch *gdbarch,
3589                  int bit, char *name, const struct floatformat **floatformats)
3590 {
3591   struct type *t;
3592
3593   if (bit == -1)
3594     {
3595       gdb_assert (floatformats != NULL);
3596       gdb_assert (floatformats[0] != NULL && floatformats[1] != NULL);
3597       bit = floatformats[0]->totalsize;
3598     }
3599   gdb_assert (bit >= 0);
3600
3601   t = arch_type (gdbarch, TYPE_CODE_FLT, bit / TARGET_CHAR_BIT, name);
3602   TYPE_FLOATFORMAT (t) = floatformats;
3603   return t;
3604 }
3605
3606 /* Allocate a TYPE_CODE_COMPLEX type structure associated with GDBARCH.
3607    NAME is the type name.  TARGET_TYPE is the component float type.  */
3608
3609 struct type *
3610 arch_complex_type (struct gdbarch *gdbarch,
3611                    char *name, struct type *target_type)
3612 {
3613   struct type *t;
3614
3615   t = arch_type (gdbarch, TYPE_CODE_COMPLEX,
3616                  2 * TYPE_LENGTH (target_type), name);
3617   TYPE_TARGET_TYPE (t) = target_type;
3618   return t;
3619 }
3620
3621 /* Allocate a TYPE_CODE_FLAGS type structure associated with GDBARCH.
3622    NAME is the type name.  LENGTH is the size of the flag word in bytes.  */
3623
3624 struct type *
3625 arch_flags_type (struct gdbarch *gdbarch, char *name, int length)
3626 {
3627   int nfields = length * TARGET_CHAR_BIT;
3628   struct type *type;
3629
3630   type = arch_type (gdbarch, TYPE_CODE_FLAGS, length, name);
3631   TYPE_UNSIGNED (type) = 1;
3632   TYPE_NFIELDS (type) = nfields;
3633   TYPE_FIELDS (type) = TYPE_ZALLOC (type, nfields * sizeof (struct field));
3634
3635   return type;
3636 }
3637
3638 /* Add field to TYPE_CODE_FLAGS type TYPE to indicate the bit at
3639    position BITPOS is called NAME.  */
3640
3641 void
3642 append_flags_type_flag (struct type *type, int bitpos, char *name)
3643 {
3644   gdb_assert (TYPE_CODE (type) == TYPE_CODE_FLAGS);
3645   gdb_assert (bitpos < TYPE_NFIELDS (type));
3646   gdb_assert (bitpos >= 0);
3647
3648   if (name)
3649     {
3650       TYPE_FIELD_NAME (type, bitpos) = xstrdup (name);
3651       SET_FIELD_BITPOS (TYPE_FIELD (type, bitpos), bitpos);
3652     }
3653   else
3654     {
3655       /* Don't show this field to the user.  */
3656       SET_FIELD_BITPOS (TYPE_FIELD (type, bitpos), -1);
3657     }
3658 }
3659
3660 /* Allocate a TYPE_CODE_STRUCT or TYPE_CODE_UNION type structure (as
3661    specified by CODE) associated with GDBARCH.  NAME is the type name.  */
3662
3663 struct type *
3664 arch_composite_type (struct gdbarch *gdbarch, char *name, enum type_code code)
3665 {
3666   struct type *t;
3667
3668   gdb_assert (code == TYPE_CODE_STRUCT || code == TYPE_CODE_UNION);
3669   t = arch_type (gdbarch, code, 0, NULL);
3670   TYPE_TAG_NAME (t) = name;
3671   INIT_CPLUS_SPECIFIC (t);
3672   return t;
3673 }
3674
3675 /* Add new field with name NAME and type FIELD to composite type T.
3676    Do not set the field's position or adjust the type's length;
3677    the caller should do so.  Return the new field.  */
3678
3679 struct field *
3680 append_composite_type_field_raw (struct type *t, char *name,
3681                                  struct type *field)
3682 {
3683   struct field *f;
3684
3685   TYPE_NFIELDS (t) = TYPE_NFIELDS (t) + 1;
3686   TYPE_FIELDS (t) = xrealloc (TYPE_FIELDS (t),
3687                               sizeof (struct field) * TYPE_NFIELDS (t));
3688   f = &(TYPE_FIELDS (t)[TYPE_NFIELDS (t) - 1]);
3689   memset (f, 0, sizeof f[0]);
3690   FIELD_TYPE (f[0]) = field;
3691   FIELD_NAME (f[0]) = name;
3692   return f;
3693 }
3694
3695 /* Add new field with name NAME and type FIELD to composite type T.
3696    ALIGNMENT (if non-zero) specifies the minimum field alignment.  */
3697
3698 void
3699 append_composite_type_field_aligned (struct type *t, char *name,
3700                                      struct type *field, int alignment)
3701 {
3702   struct field *f = append_composite_type_field_raw (t, name, field);
3703
3704   if (TYPE_CODE (t) == TYPE_CODE_UNION)
3705     {
3706       if (TYPE_LENGTH (t) < TYPE_LENGTH (field))
3707         TYPE_LENGTH (t) = TYPE_LENGTH (field);
3708     }
3709   else if (TYPE_CODE (t) == TYPE_CODE_STRUCT)
3710     {
3711       TYPE_LENGTH (t) = TYPE_LENGTH (t) + TYPE_LENGTH (field);
3712       if (TYPE_NFIELDS (t) > 1)
3713         {
3714           SET_FIELD_BITPOS (f[0],
3715                             (FIELD_BITPOS (f[-1])
3716                              + (TYPE_LENGTH (FIELD_TYPE (f[-1]))
3717                                 * TARGET_CHAR_BIT)));
3718
3719           if (alignment)
3720             {
3721               int left;
3722
3723               alignment *= TARGET_CHAR_BIT;
3724               left = FIELD_BITPOS (f[0]) % alignment;
3725
3726               if (left)
3727                 {
3728                   SET_FIELD_BITPOS (f[0], FIELD_BITPOS (f[0]) + (alignment - left));
3729                   TYPE_LENGTH (t) += (alignment - left) / TARGET_CHAR_BIT;
3730                 }
3731             }
3732         }
3733     }
3734 }
3735
3736 /* Add new field with name NAME and type FIELD to composite type T.  */
3737
3738 void
3739 append_composite_type_field (struct type *t, char *name,
3740                              struct type *field)
3741 {
3742   append_composite_type_field_aligned (t, name, field, 0);
3743 }
3744
3745 static struct gdbarch_data *gdbtypes_data;
3746
3747 const struct builtin_type *
3748 builtin_type (struct gdbarch *gdbarch)
3749 {
3750   return gdbarch_data (gdbarch, gdbtypes_data);
3751 }
3752
3753 static void *
3754 gdbtypes_post_init (struct gdbarch *gdbarch)
3755 {
3756   struct builtin_type *builtin_type
3757     = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct builtin_type);
3758
3759   /* Basic types.  */
3760   builtin_type->builtin_void
3761     = arch_type (gdbarch, TYPE_CODE_VOID, 1, "void");
3762   builtin_type->builtin_char
3763     = arch_integer_type (gdbarch, TARGET_CHAR_BIT,
3764                          !gdbarch_char_signed (gdbarch), "char");
3765   builtin_type->builtin_signed_char
3766     = arch_integer_type (gdbarch, TARGET_CHAR_BIT,
3767                          0, "signed char");
3768   builtin_type->builtin_unsigned_char
3769     = arch_integer_type (gdbarch, TARGET_CHAR_BIT,
3770                          1, "unsigned char");
3771   builtin_type->builtin_short
3772     = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
3773                          0, "short");
3774   builtin_type->builtin_unsigned_short
3775     = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
3776                          1, "unsigned short");
3777   builtin_type->builtin_int
3778     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
3779                          0, "int");
3780   builtin_type->builtin_unsigned_int
3781     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
3782                          1, "unsigned int");
3783   builtin_type->builtin_long
3784     = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
3785                          0, "long");
3786   builtin_type->builtin_unsigned_long
3787     = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
3788                          1, "unsigned long");
3789   builtin_type->builtin_long_long
3790     = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
3791                          0, "long long");
3792   builtin_type->builtin_unsigned_long_long
3793     = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
3794                          1, "unsigned long long");
3795   builtin_type->builtin_float
3796     = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
3797                        "float", gdbarch_float_format (gdbarch));
3798   builtin_type->builtin_double
3799     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
3800                        "double", gdbarch_double_format (gdbarch));
3801   builtin_type->builtin_long_double
3802     = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
3803                        "long double", gdbarch_long_double_format (gdbarch));
3804   builtin_type->builtin_complex
3805     = arch_complex_type (gdbarch, "complex",
3806                          builtin_type->builtin_float);
3807   builtin_type->builtin_double_complex
3808     = arch_complex_type (gdbarch, "double complex",
3809                          builtin_type->builtin_double);
3810   builtin_type->builtin_string
3811     = arch_type (gdbarch, TYPE_CODE_STRING, 1, "string");
3812   builtin_type->builtin_bool
3813     = arch_type (gdbarch, TYPE_CODE_BOOL, 1, "bool");
3814
3815   /* The following three are about decimal floating point types, which
3816      are 32-bits, 64-bits and 128-bits respectively.  */
3817   builtin_type->builtin_decfloat
3818     = arch_type (gdbarch, TYPE_CODE_DECFLOAT, 32 / 8, "_Decimal32");
3819   builtin_type->builtin_decdouble
3820     = arch_type (gdbarch, TYPE_CODE_DECFLOAT, 64 / 8, "_Decimal64");
3821   builtin_type->builtin_declong
3822     = arch_type (gdbarch, TYPE_CODE_DECFLOAT, 128 / 8, "_Decimal128");
3823
3824   /* "True" character types.  */
3825   builtin_type->builtin_true_char
3826     = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "true character");
3827   builtin_type->builtin_true_unsigned_char
3828     = arch_character_type (gdbarch, TARGET_CHAR_BIT, 1, "true character");
3829
3830   /* Fixed-size integer types.  */
3831   builtin_type->builtin_int0
3832     = arch_integer_type (gdbarch, 0, 0, "int0_t");
3833   builtin_type->builtin_int8
3834     = arch_integer_type (gdbarch, 8, 0, "int8_t");
3835   builtin_type->builtin_uint8
3836     = arch_integer_type (gdbarch, 8, 1, "uint8_t");
3837   builtin_type->builtin_int16
3838     = arch_integer_type (gdbarch, 16, 0, "int16_t");
3839   builtin_type->builtin_uint16
3840     = arch_integer_type (gdbarch, 16, 1, "uint16_t");
3841   builtin_type->builtin_int32
3842     = arch_integer_type (gdbarch, 32, 0, "int32_t");
3843   builtin_type->builtin_uint32
3844     = arch_integer_type (gdbarch, 32, 1, "uint32_t");
3845   builtin_type->builtin_int64
3846     = arch_integer_type (gdbarch, 64, 0, "int64_t");
3847   builtin_type->builtin_uint64
3848     = arch_integer_type (gdbarch, 64, 1, "uint64_t");
3849   builtin_type->builtin_int128
3850     = arch_integer_type (gdbarch, 128, 0, "int128_t");
3851   builtin_type->builtin_uint128
3852     = arch_integer_type (gdbarch, 128, 1, "uint128_t");
3853   TYPE_INSTANCE_FLAGS (builtin_type->builtin_int8) |=
3854     TYPE_INSTANCE_FLAG_NOTTEXT;
3855   TYPE_INSTANCE_FLAGS (builtin_type->builtin_uint8) |=
3856     TYPE_INSTANCE_FLAG_NOTTEXT;
3857
3858   /* Wide character types.  */
3859   builtin_type->builtin_char16
3860     = arch_integer_type (gdbarch, 16, 0, "char16_t");
3861   builtin_type->builtin_char32
3862     = arch_integer_type (gdbarch, 32, 0, "char32_t");
3863         
3864
3865   /* Default data/code pointer types.  */
3866   builtin_type->builtin_data_ptr
3867     = lookup_pointer_type (builtin_type->builtin_void);
3868   builtin_type->builtin_func_ptr
3869     = lookup_pointer_type (lookup_function_type (builtin_type->builtin_void));
3870   builtin_type->builtin_func_func
3871     = lookup_function_type (builtin_type->builtin_func_ptr);
3872
3873   /* This type represents a GDB internal function.  */
3874   builtin_type->internal_fn
3875     = arch_type (gdbarch, TYPE_CODE_INTERNAL_FUNCTION, 0,
3876                  "<internal function>");
3877
3878   return builtin_type;
3879 }
3880
3881 /* This set of objfile-based types is intended to be used by symbol
3882    readers as basic types.  */
3883
3884 static const struct objfile_data *objfile_type_data;
3885
3886 const struct objfile_type *
3887 objfile_type (struct objfile *objfile)
3888 {
3889   struct gdbarch *gdbarch;
3890   struct objfile_type *objfile_type
3891     = objfile_data (objfile, objfile_type_data);
3892
3893   if (objfile_type)
3894     return objfile_type;
3895
3896   objfile_type = OBSTACK_CALLOC (&objfile->objfile_obstack,
3897                                  1, struct objfile_type);
3898
3899   /* Use the objfile architecture to determine basic type properties.  */
3900   gdbarch = get_objfile_arch (objfile);
3901
3902   /* Basic types.  */
3903   objfile_type->builtin_void
3904     = init_type (TYPE_CODE_VOID, 1,
3905                  0,
3906                  "void", objfile);
3907
3908   objfile_type->builtin_char
3909     = init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
3910                  (TYPE_FLAG_NOSIGN
3911                   | (gdbarch_char_signed (gdbarch) ? 0 : TYPE_FLAG_UNSIGNED)),
3912                  "char", objfile);
3913   objfile_type->builtin_signed_char
3914     = init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
3915                  0,
3916                  "signed char", objfile);
3917   objfile_type->builtin_unsigned_char
3918     = init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
3919                  TYPE_FLAG_UNSIGNED,
3920                  "unsigned char", objfile);
3921   objfile_type->builtin_short
3922     = init_type (TYPE_CODE_INT,
3923                  gdbarch_short_bit (gdbarch) / TARGET_CHAR_BIT,
3924                  0, "short", objfile);
3925   objfile_type->builtin_unsigned_short
3926     = init_type (TYPE_CODE_INT,
3927                  gdbarch_short_bit (gdbarch) / TARGET_CHAR_BIT,
3928                  TYPE_FLAG_UNSIGNED, "unsigned short", objfile);
3929   objfile_type->builtin_int
3930     = init_type (TYPE_CODE_INT,
3931                  gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT,
3932                  0, "int", objfile);
3933   objfile_type->builtin_unsigned_int
3934     = init_type (TYPE_CODE_INT,
3935                  gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT,
3936                  TYPE_FLAG_UNSIGNED, "unsigned int", objfile);
3937   objfile_type->builtin_long
3938     = init_type (TYPE_CODE_INT,
3939                  gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT,
3940                  0, "long", objfile);
3941   objfile_type->builtin_unsigned_long
3942     = init_type (TYPE_CODE_INT,
3943                  gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT,
3944                  TYPE_FLAG_UNSIGNED, "unsigned long", objfile);
3945   objfile_type->builtin_long_long
3946     = init_type (TYPE_CODE_INT,
3947                  gdbarch_long_long_bit (gdbarch) / TARGET_CHAR_BIT,
3948                  0, "long long", objfile);
3949   objfile_type->builtin_unsigned_long_long
3950     = init_type (TYPE_CODE_INT,
3951                  gdbarch_long_long_bit (gdbarch) / TARGET_CHAR_BIT,
3952                  TYPE_FLAG_UNSIGNED, "unsigned long long", objfile);
3953
3954   objfile_type->builtin_float
3955     = init_type (TYPE_CODE_FLT,
3956                  gdbarch_float_bit (gdbarch) / TARGET_CHAR_BIT,
3957                  0, "float", objfile);
3958   TYPE_FLOATFORMAT (objfile_type->builtin_float)
3959     = gdbarch_float_format (gdbarch);
3960   objfile_type->builtin_double
3961     = init_type (TYPE_CODE_FLT,
3962                  gdbarch_double_bit (gdbarch) / TARGET_CHAR_BIT,
3963                  0, "double", objfile);
3964   TYPE_FLOATFORMAT (objfile_type->builtin_double)
3965     = gdbarch_double_format (gdbarch);
3966   objfile_type->builtin_long_double
3967     = init_type (TYPE_CODE_FLT,
3968                  gdbarch_long_double_bit (gdbarch) / TARGET_CHAR_BIT,
3969                  0, "long double", objfile);
3970   TYPE_FLOATFORMAT (objfile_type->builtin_long_double)
3971     = gdbarch_long_double_format (gdbarch);
3972
3973   /* This type represents a type that was unrecognized in symbol read-in.  */
3974   objfile_type->builtin_error
3975     = init_type (TYPE_CODE_ERROR, 0, 0, "<unknown type>", objfile);
3976
3977   /* The following set of types is used for symbols with no
3978      debug information.  */
3979   objfile_type->nodebug_text_symbol
3980     = init_type (TYPE_CODE_FUNC, 1, 0,
3981                  "<text variable, no debug info>", objfile);
3982   TYPE_TARGET_TYPE (objfile_type->nodebug_text_symbol)
3983     = objfile_type->builtin_int;
3984   objfile_type->nodebug_text_gnu_ifunc_symbol
3985     = init_type (TYPE_CODE_FUNC, 1, TYPE_FLAG_GNU_IFUNC,
3986                  "<text gnu-indirect-function variable, no debug info>",
3987                  objfile);
3988   TYPE_TARGET_TYPE (objfile_type->nodebug_text_gnu_ifunc_symbol)
3989     = objfile_type->nodebug_text_symbol;
3990   objfile_type->nodebug_got_plt_symbol
3991     = init_type (TYPE_CODE_PTR, gdbarch_addr_bit (gdbarch) / 8, 0,
3992                  "<text from jump slot in .got.plt, no debug info>",
3993                  objfile);
3994   TYPE_TARGET_TYPE (objfile_type->nodebug_got_plt_symbol)
3995     = objfile_type->nodebug_text_symbol;
3996   objfile_type->nodebug_data_symbol
3997     = init_type (TYPE_CODE_INT,
3998                  gdbarch_int_bit (gdbarch) / HOST_CHAR_BIT, 0,
3999                  "<data variable, no debug info>", objfile);
4000   objfile_type->nodebug_unknown_symbol
4001     = init_type (TYPE_CODE_INT, 1, 0,
4002                  "<variable (not text or data), no debug info>", objfile);
4003   objfile_type->nodebug_tls_symbol
4004     = init_type (TYPE_CODE_INT,
4005                  gdbarch_int_bit (gdbarch) / HOST_CHAR_BIT, 0,
4006                  "<thread local variable, no debug info>", objfile);
4007
4008   /* NOTE: on some targets, addresses and pointers are not necessarily
4009      the same --- for example, on the D10V, pointers are 16 bits long,
4010      but addresses are 32 bits long.  See doc/gdbint.texinfo,
4011      ``Pointers Are Not Always Addresses''.
4012
4013      The upshot is:
4014      - gdb's `struct type' always describes the target's
4015        representation.
4016      - gdb's `struct value' objects should always hold values in
4017        target form.
4018      - gdb's CORE_ADDR values are addresses in the unified virtual
4019        address space that the assembler and linker work with.  Thus,
4020        since target_read_memory takes a CORE_ADDR as an argument, it
4021        can access any memory on the target, even if the processor has
4022        separate code and data address spaces.
4023
4024      So, for example:
4025      - If v is a value holding a D10V code pointer, its contents are
4026        in target form: a big-endian address left-shifted two bits.
4027      - If p is a D10V pointer type, TYPE_LENGTH (p) == 2, just as
4028        sizeof (void *) == 2 on the target.
4029
4030      In this context, objfile_type->builtin_core_addr is a bit odd:
4031      it's a target type for a value the target will never see.  It's
4032      only used to hold the values of (typeless) linker symbols, which
4033      are indeed in the unified virtual address space.  */
4034
4035   objfile_type->builtin_core_addr
4036     = init_type (TYPE_CODE_INT,
4037                  gdbarch_addr_bit (gdbarch) / 8,
4038                  TYPE_FLAG_UNSIGNED, "__CORE_ADDR", objfile);
4039
4040   set_objfile_data (objfile, objfile_type_data, objfile_type);
4041   return objfile_type;
4042 }
4043
4044 extern initialize_file_ftype _initialize_gdbtypes;
4045
4046 void
4047 _initialize_gdbtypes (void)
4048 {
4049   gdbtypes_data = gdbarch_data_register_post_init (gdbtypes_post_init);
4050   objfile_type_data = register_objfile_data ();
4051
4052   add_setshow_zuinteger_cmd ("overload", no_class, &overload_debug,
4053                              _("Set debugging of C++ overloading."),
4054                              _("Show debugging of C++ overloading."),
4055                              _("When enabled, ranking of the "
4056                                "functions is displayed."),
4057                              NULL,
4058                              show_overload_debug,
4059                              &setdebuglist, &showdebuglist);
4060
4061   /* Add user knob for controlling resolution of opaque types.  */
4062   add_setshow_boolean_cmd ("opaque-type-resolution", class_support,
4063                            &opaque_type_resolution,
4064                            _("Set resolution of opaque struct/class/union"
4065                              " types (if set before loading symbols)."),
4066                            _("Show resolution of opaque struct/class/union"
4067                              " types (if set before loading symbols)."),
4068                            NULL, NULL,
4069                            show_opaque_type_resolution,
4070                            &setlist, &showlist);
4071 }