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