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