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