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