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