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