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