Automatic date update in version.in
[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 /* A wrapper of TYPE_NAME which calls error if the type is anonymous.
1467    Since GCC PR debug/47510 DWARF provides associated information to detect the
1468    anonymous class linkage name from its typedef.
1469
1470    Parameter TYPE should not yet have CHECK_TYPEDEF applied, this function will
1471    apply it itself.  */
1472
1473 const char *
1474 type_name_or_error (struct type *type)
1475 {
1476   struct type *saved_type = type;
1477   const char *name;
1478   struct objfile *objfile;
1479
1480   type = check_typedef (type);
1481
1482   name = TYPE_NAME (type);
1483   if (name != NULL)
1484     return name;
1485
1486   name = TYPE_NAME (saved_type);
1487   objfile = TYPE_OBJFILE (saved_type);
1488   error (_("Invalid anonymous type %s [in module %s], GCC PR debug/47510 bug?"),
1489          name ? name : "<anonymous>",
1490          objfile ? objfile_name (objfile) : "<arch>");
1491 }
1492
1493 /* Lookup a typedef or primitive type named NAME, visible in lexical
1494    block BLOCK.  If NOERR is nonzero, return zero if NAME is not
1495    suitably defined.  */
1496
1497 struct type *
1498 lookup_typename (const struct language_defn *language,
1499                  struct gdbarch *gdbarch, const char *name,
1500                  const struct block *block, int noerr)
1501 {
1502   struct symbol *sym;
1503
1504   sym = lookup_symbol_in_language (name, block, VAR_DOMAIN,
1505                                    language->la_language, NULL).symbol;
1506   if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
1507     return SYMBOL_TYPE (sym);
1508
1509   if (noerr)
1510     return NULL;
1511   error (_("No type named %s."), name);
1512 }
1513
1514 struct type *
1515 lookup_unsigned_typename (const struct language_defn *language,
1516                           struct gdbarch *gdbarch, const char *name)
1517 {
1518   char *uns = (char *) alloca (strlen (name) + 10);
1519
1520   strcpy (uns, "unsigned ");
1521   strcpy (uns + 9, name);
1522   return lookup_typename (language, gdbarch, uns, (struct block *) NULL, 0);
1523 }
1524
1525 struct type *
1526 lookup_signed_typename (const struct language_defn *language,
1527                         struct gdbarch *gdbarch, const char *name)
1528 {
1529   struct type *t;
1530   char *uns = (char *) alloca (strlen (name) + 8);
1531
1532   strcpy (uns, "signed ");
1533   strcpy (uns + 7, name);
1534   t = lookup_typename (language, gdbarch, uns, (struct block *) NULL, 1);
1535   /* If we don't find "signed FOO" just try again with plain "FOO".  */
1536   if (t != NULL)
1537     return t;
1538   return lookup_typename (language, gdbarch, name, (struct block *) NULL, 0);
1539 }
1540
1541 /* Lookup a structure type named "struct NAME",
1542    visible in lexical block BLOCK.  */
1543
1544 struct type *
1545 lookup_struct (const char *name, const struct block *block)
1546 {
1547   struct symbol *sym;
1548
1549   sym = lookup_symbol (name, block, STRUCT_DOMAIN, 0).symbol;
1550
1551   if (sym == NULL)
1552     {
1553       error (_("No struct type named %s."), name);
1554     }
1555   if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_STRUCT)
1556     {
1557       error (_("This context has class, union or enum %s, not a struct."),
1558              name);
1559     }
1560   return (SYMBOL_TYPE (sym));
1561 }
1562
1563 /* Lookup a union type named "union NAME",
1564    visible in lexical block BLOCK.  */
1565
1566 struct type *
1567 lookup_union (const char *name, const struct block *block)
1568 {
1569   struct symbol *sym;
1570   struct type *t;
1571
1572   sym = lookup_symbol (name, block, STRUCT_DOMAIN, 0).symbol;
1573
1574   if (sym == NULL)
1575     error (_("No union type named %s."), name);
1576
1577   t = SYMBOL_TYPE (sym);
1578
1579   if (TYPE_CODE (t) == TYPE_CODE_UNION)
1580     return t;
1581
1582   /* If we get here, it's not a union.  */
1583   error (_("This context has class, struct or enum %s, not a union."), 
1584          name);
1585 }
1586
1587 /* Lookup an enum type named "enum NAME",
1588    visible in lexical block BLOCK.  */
1589
1590 struct type *
1591 lookup_enum (const char *name, const struct block *block)
1592 {
1593   struct symbol *sym;
1594
1595   sym = lookup_symbol (name, block, STRUCT_DOMAIN, 0).symbol;
1596   if (sym == NULL)
1597     {
1598       error (_("No enum type named %s."), name);
1599     }
1600   if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_ENUM)
1601     {
1602       error (_("This context has class, struct or union %s, not an enum."), 
1603              name);
1604     }
1605   return (SYMBOL_TYPE (sym));
1606 }
1607
1608 /* Lookup a template type named "template NAME<TYPE>",
1609    visible in lexical block BLOCK.  */
1610
1611 struct type *
1612 lookup_template_type (char *name, struct type *type, 
1613                       const struct block *block)
1614 {
1615   struct symbol *sym;
1616   char *nam = (char *) 
1617     alloca (strlen (name) + strlen (TYPE_NAME (type)) + 4);
1618
1619   strcpy (nam, name);
1620   strcat (nam, "<");
1621   strcat (nam, TYPE_NAME (type));
1622   strcat (nam, " >");   /* FIXME, extra space still introduced in gcc?  */
1623
1624   sym = lookup_symbol (nam, block, VAR_DOMAIN, 0).symbol;
1625
1626   if (sym == NULL)
1627     {
1628       error (_("No template type named %s."), name);
1629     }
1630   if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_STRUCT)
1631     {
1632       error (_("This context has class, union or enum %s, not a struct."),
1633              name);
1634     }
1635   return (SYMBOL_TYPE (sym));
1636 }
1637
1638 /* Given a type TYPE, lookup the type of the component of type named
1639    NAME.
1640
1641    TYPE can be either a struct or union, or a pointer or reference to
1642    a struct or union.  If it is a pointer or reference, its target
1643    type is automatically used.  Thus '.' and '->' are interchangable,
1644    as specified for the definitions of the expression element types
1645    STRUCTOP_STRUCT and STRUCTOP_PTR.
1646
1647    If NOERR is nonzero, return zero if NAME is not suitably defined.
1648    If NAME is the name of a baseclass type, return that type.  */
1649
1650 struct type *
1651 lookup_struct_elt_type (struct type *type, const char *name, int noerr)
1652 {
1653   int i;
1654
1655   for (;;)
1656     {
1657       type = check_typedef (type);
1658       if (TYPE_CODE (type) != TYPE_CODE_PTR
1659           && TYPE_CODE (type) != TYPE_CODE_REF)
1660         break;
1661       type = TYPE_TARGET_TYPE (type);
1662     }
1663
1664   if (TYPE_CODE (type) != TYPE_CODE_STRUCT 
1665       && TYPE_CODE (type) != TYPE_CODE_UNION)
1666     {
1667       std::string type_name = type_to_string (type);
1668       error (_("Type %s is not a structure or union type."),
1669              type_name.c_str ());
1670     }
1671
1672 #if 0
1673   /* FIXME: This change put in by Michael seems incorrect for the case
1674      where the structure tag name is the same as the member name.
1675      I.e. when doing "ptype bell->bar" for "struct foo { int bar; int
1676      foo; } bell;" Disabled by fnf.  */
1677   {
1678     char *type_name;
1679
1680     type_name = TYPE_NAME (type);
1681     if (type_name != NULL && strcmp (type_name, name) == 0)
1682       return type;
1683   }
1684 #endif
1685
1686   for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
1687     {
1688       const char *t_field_name = TYPE_FIELD_NAME (type, i);
1689
1690       if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
1691         {
1692           return TYPE_FIELD_TYPE (type, i);
1693         }
1694      else if (!t_field_name || *t_field_name == '\0')
1695         {
1696           struct type *subtype 
1697             = lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name, 1);
1698
1699           if (subtype != NULL)
1700             return subtype;
1701         }
1702     }
1703
1704   /* OK, it's not in this class.  Recursively check the baseclasses.  */
1705   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1706     {
1707       struct type *t;
1708
1709       t = lookup_struct_elt_type (TYPE_BASECLASS (type, i), name, 1);
1710       if (t != NULL)
1711         {
1712           return t;
1713         }
1714     }
1715
1716   if (noerr)
1717     {
1718       return NULL;
1719     }
1720
1721   std::string type_name = type_to_string (type);
1722   error (_("Type %s has no component named %s."), type_name.c_str (), name);
1723 }
1724
1725 /* Store in *MAX the largest number representable by unsigned integer type
1726    TYPE.  */
1727
1728 void
1729 get_unsigned_type_max (struct type *type, ULONGEST *max)
1730 {
1731   unsigned int n;
1732
1733   type = check_typedef (type);
1734   gdb_assert (TYPE_CODE (type) == TYPE_CODE_INT && TYPE_UNSIGNED (type));
1735   gdb_assert (TYPE_LENGTH (type) <= sizeof (ULONGEST));
1736
1737   /* Written this way to avoid overflow.  */
1738   n = TYPE_LENGTH (type) * TARGET_CHAR_BIT;
1739   *max = ((((ULONGEST) 1 << (n - 1)) - 1) << 1) | 1;
1740 }
1741
1742 /* Store in *MIN, *MAX the smallest and largest numbers representable by
1743    signed integer type TYPE.  */
1744
1745 void
1746 get_signed_type_minmax (struct type *type, LONGEST *min, LONGEST *max)
1747 {
1748   unsigned int n;
1749
1750   type = check_typedef (type);
1751   gdb_assert (TYPE_CODE (type) == TYPE_CODE_INT && !TYPE_UNSIGNED (type));
1752   gdb_assert (TYPE_LENGTH (type) <= sizeof (LONGEST));
1753
1754   n = TYPE_LENGTH (type) * TARGET_CHAR_BIT;
1755   *min = -((ULONGEST) 1 << (n - 1));
1756   *max = ((ULONGEST) 1 << (n - 1)) - 1;
1757 }
1758
1759 /* Internal routine called by TYPE_VPTR_FIELDNO to return the value of
1760    cplus_stuff.vptr_fieldno.
1761
1762    cplus_stuff is initialized to cplus_struct_default which does not
1763    set vptr_fieldno to -1 for portability reasons (IWBN to use C99
1764    designated initializers).  We cope with that here.  */
1765
1766 int
1767 internal_type_vptr_fieldno (struct type *type)
1768 {
1769   type = check_typedef (type);
1770   gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT
1771               || TYPE_CODE (type) == TYPE_CODE_UNION);
1772   if (!HAVE_CPLUS_STRUCT (type))
1773     return -1;
1774   return TYPE_RAW_CPLUS_SPECIFIC (type)->vptr_fieldno;
1775 }
1776
1777 /* Set the value of cplus_stuff.vptr_fieldno.  */
1778
1779 void
1780 set_type_vptr_fieldno (struct type *type, int fieldno)
1781 {
1782   type = check_typedef (type);
1783   gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT
1784               || TYPE_CODE (type) == TYPE_CODE_UNION);
1785   if (!HAVE_CPLUS_STRUCT (type))
1786     ALLOCATE_CPLUS_STRUCT_TYPE (type);
1787   TYPE_RAW_CPLUS_SPECIFIC (type)->vptr_fieldno = fieldno;
1788 }
1789
1790 /* Internal routine called by TYPE_VPTR_BASETYPE to return the value of
1791    cplus_stuff.vptr_basetype.  */
1792
1793 struct type *
1794 internal_type_vptr_basetype (struct type *type)
1795 {
1796   type = check_typedef (type);
1797   gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT
1798               || TYPE_CODE (type) == TYPE_CODE_UNION);
1799   gdb_assert (TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_CPLUS_STUFF);
1800   return TYPE_RAW_CPLUS_SPECIFIC (type)->vptr_basetype;
1801 }
1802
1803 /* Set the value of cplus_stuff.vptr_basetype.  */
1804
1805 void
1806 set_type_vptr_basetype (struct type *type, struct type *basetype)
1807 {
1808   type = check_typedef (type);
1809   gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT
1810               || TYPE_CODE (type) == TYPE_CODE_UNION);
1811   if (!HAVE_CPLUS_STRUCT (type))
1812     ALLOCATE_CPLUS_STRUCT_TYPE (type);
1813   TYPE_RAW_CPLUS_SPECIFIC (type)->vptr_basetype = basetype;
1814 }
1815
1816 /* Lookup the vptr basetype/fieldno values for TYPE.
1817    If found store vptr_basetype in *BASETYPEP if non-NULL, and return
1818    vptr_fieldno.  Also, if found and basetype is from the same objfile,
1819    cache the results.
1820    If not found, return -1 and ignore BASETYPEP.
1821    Callers should be aware that in some cases (for example,
1822    the type or one of its baseclasses is a stub type and we are
1823    debugging a .o file, or the compiler uses DWARF-2 and is not GCC),
1824    this function will not be able to find the
1825    virtual function table pointer, and vptr_fieldno will remain -1 and
1826    vptr_basetype will remain NULL or incomplete.  */
1827
1828 int
1829 get_vptr_fieldno (struct type *type, struct type **basetypep)
1830 {
1831   type = check_typedef (type);
1832
1833   if (TYPE_VPTR_FIELDNO (type) < 0)
1834     {
1835       int i;
1836
1837       /* We must start at zero in case the first (and only) baseclass
1838          is virtual (and hence we cannot share the table pointer).  */
1839       for (i = 0; i < TYPE_N_BASECLASSES (type); i++)
1840         {
1841           struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
1842           int fieldno;
1843           struct type *basetype;
1844
1845           fieldno = get_vptr_fieldno (baseclass, &basetype);
1846           if (fieldno >= 0)
1847             {
1848               /* If the type comes from a different objfile we can't cache
1849                  it, it may have a different lifetime.  PR 2384 */
1850               if (TYPE_OBJFILE (type) == TYPE_OBJFILE (basetype))
1851                 {
1852                   set_type_vptr_fieldno (type, fieldno);
1853                   set_type_vptr_basetype (type, basetype);
1854                 }
1855               if (basetypep)
1856                 *basetypep = basetype;
1857               return fieldno;
1858             }
1859         }
1860
1861       /* Not found.  */
1862       return -1;
1863     }
1864   else
1865     {
1866       if (basetypep)
1867         *basetypep = TYPE_VPTR_BASETYPE (type);
1868       return TYPE_VPTR_FIELDNO (type);
1869     }
1870 }
1871
1872 static void
1873 stub_noname_complaint (void)
1874 {
1875   complaint (_("stub type has NULL name"));
1876 }
1877
1878 /* Return nonzero if TYPE has a DYN_PROP_BYTE_STRIDE dynamic property
1879    attached to it, and that property has a non-constant value.  */
1880
1881 static int
1882 array_type_has_dynamic_stride (struct type *type)
1883 {
1884   struct dynamic_prop *prop = get_dyn_prop (DYN_PROP_BYTE_STRIDE, type);
1885
1886   return (prop != NULL && prop->kind != PROP_CONST);
1887 }
1888
1889 /* Worker for is_dynamic_type.  */
1890
1891 static int
1892 is_dynamic_type_internal (struct type *type, int top_level)
1893 {
1894   type = check_typedef (type);
1895
1896   /* We only want to recognize references at the outermost level.  */
1897   if (top_level && TYPE_CODE (type) == TYPE_CODE_REF)
1898     type = check_typedef (TYPE_TARGET_TYPE (type));
1899
1900   /* Types that have a dynamic TYPE_DATA_LOCATION are considered
1901      dynamic, even if the type itself is statically defined.
1902      From a user's point of view, this may appear counter-intuitive;
1903      but it makes sense in this context, because the point is to determine
1904      whether any part of the type needs to be resolved before it can
1905      be exploited.  */
1906   if (TYPE_DATA_LOCATION (type) != NULL
1907       && (TYPE_DATA_LOCATION_KIND (type) == PROP_LOCEXPR
1908           || TYPE_DATA_LOCATION_KIND (type) == PROP_LOCLIST))
1909     return 1;
1910
1911   if (TYPE_ASSOCIATED_PROP (type))
1912     return 1;
1913
1914   if (TYPE_ALLOCATED_PROP (type))
1915     return 1;
1916
1917   switch (TYPE_CODE (type))
1918     {
1919     case TYPE_CODE_RANGE:
1920       {
1921         /* A range type is obviously dynamic if it has at least one
1922            dynamic bound.  But also consider the range type to be
1923            dynamic when its subtype is dynamic, even if the bounds
1924            of the range type are static.  It allows us to assume that
1925            the subtype of a static range type is also static.  */
1926         return (!has_static_range (TYPE_RANGE_DATA (type))
1927                 || is_dynamic_type_internal (TYPE_TARGET_TYPE (type), 0));
1928       }
1929
1930     case TYPE_CODE_ARRAY:
1931       {
1932         gdb_assert (TYPE_NFIELDS (type) == 1);
1933
1934         /* The array is dynamic if either the bounds are dynamic...  */
1935         if (is_dynamic_type_internal (TYPE_INDEX_TYPE (type), 0))
1936           return 1;
1937         /* ... or the elements it contains have a dynamic contents...  */
1938         if (is_dynamic_type_internal (TYPE_TARGET_TYPE (type), 0))
1939           return 1;
1940         /* ... or if it has a dynamic stride...  */
1941         if (array_type_has_dynamic_stride (type))
1942           return 1;
1943         return 0;
1944       }
1945
1946     case TYPE_CODE_STRUCT:
1947     case TYPE_CODE_UNION:
1948       {
1949         int i;
1950
1951         for (i = 0; i < TYPE_NFIELDS (type); ++i)
1952           if (!field_is_static (&TYPE_FIELD (type, i))
1953               && is_dynamic_type_internal (TYPE_FIELD_TYPE (type, i), 0))
1954             return 1;
1955       }
1956       break;
1957     }
1958
1959   return 0;
1960 }
1961
1962 /* See gdbtypes.h.  */
1963
1964 int
1965 is_dynamic_type (struct type *type)
1966 {
1967   return is_dynamic_type_internal (type, 1);
1968 }
1969
1970 static struct type *resolve_dynamic_type_internal
1971   (struct type *type, struct property_addr_info *addr_stack, int top_level);
1972
1973 /* Given a dynamic range type (dyn_range_type) and a stack of
1974    struct property_addr_info elements, return a static version
1975    of that type.  */
1976
1977 static struct type *
1978 resolve_dynamic_range (struct type *dyn_range_type,
1979                        struct property_addr_info *addr_stack)
1980 {
1981   CORE_ADDR value;
1982   struct type *static_range_type, *static_target_type;
1983   const struct dynamic_prop *prop;
1984   struct dynamic_prop low_bound, high_bound;
1985
1986   gdb_assert (TYPE_CODE (dyn_range_type) == TYPE_CODE_RANGE);
1987
1988   prop = &TYPE_RANGE_DATA (dyn_range_type)->low;
1989   if (dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
1990     {
1991       low_bound.kind = PROP_CONST;
1992       low_bound.data.const_val = value;
1993     }
1994   else
1995     {
1996       low_bound.kind = PROP_UNDEFINED;
1997       low_bound.data.const_val = 0;
1998     }
1999
2000   prop = &TYPE_RANGE_DATA (dyn_range_type)->high;
2001   if (dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
2002     {
2003       high_bound.kind = PROP_CONST;
2004       high_bound.data.const_val = value;
2005
2006       if (TYPE_RANGE_DATA (dyn_range_type)->flag_upper_bound_is_count)
2007         high_bound.data.const_val
2008           = low_bound.data.const_val + high_bound.data.const_val - 1;
2009     }
2010   else
2011     {
2012       high_bound.kind = PROP_UNDEFINED;
2013       high_bound.data.const_val = 0;
2014     }
2015
2016   static_target_type
2017     = resolve_dynamic_type_internal (TYPE_TARGET_TYPE (dyn_range_type),
2018                                      addr_stack, 0);
2019   static_range_type = create_range_type (copy_type (dyn_range_type),
2020                                          static_target_type,
2021                                          &low_bound, &high_bound);
2022   TYPE_RANGE_DATA (static_range_type)->flag_bound_evaluated = 1;
2023   return static_range_type;
2024 }
2025
2026 /* Resolves dynamic bound values of an array type TYPE to static ones.
2027    ADDR_STACK is a stack of struct property_addr_info to be used
2028    if needed during the dynamic resolution.  */
2029
2030 static struct type *
2031 resolve_dynamic_array (struct type *type,
2032                        struct property_addr_info *addr_stack)
2033 {
2034   CORE_ADDR value;
2035   struct type *elt_type;
2036   struct type *range_type;
2037   struct type *ary_dim;
2038   struct dynamic_prop *prop;
2039   unsigned int bit_stride = 0;
2040
2041   gdb_assert (TYPE_CODE (type) == TYPE_CODE_ARRAY);
2042
2043   type = copy_type (type);
2044
2045   elt_type = type;
2046   range_type = check_typedef (TYPE_INDEX_TYPE (elt_type));
2047   range_type = resolve_dynamic_range (range_type, addr_stack);
2048
2049   /* Resolve allocated/associated here before creating a new array type, which
2050      will update the length of the array accordingly.  */
2051   prop = TYPE_ALLOCATED_PROP (type);
2052   if (prop != NULL && dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
2053     {
2054       TYPE_DYN_PROP_ADDR (prop) = value;
2055       TYPE_DYN_PROP_KIND (prop) = PROP_CONST;
2056     }
2057   prop = TYPE_ASSOCIATED_PROP (type);
2058   if (prop != NULL && dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
2059     {
2060       TYPE_DYN_PROP_ADDR (prop) = value;
2061       TYPE_DYN_PROP_KIND (prop) = PROP_CONST;
2062     }
2063
2064   ary_dim = check_typedef (TYPE_TARGET_TYPE (elt_type));
2065
2066   if (ary_dim != NULL && TYPE_CODE (ary_dim) == TYPE_CODE_ARRAY)
2067     elt_type = resolve_dynamic_array (ary_dim, addr_stack);
2068   else
2069     elt_type = TYPE_TARGET_TYPE (type);
2070
2071   prop = get_dyn_prop (DYN_PROP_BYTE_STRIDE, type);
2072   if (prop != NULL)
2073     {
2074       int prop_eval_ok
2075         = dwarf2_evaluate_property (prop, NULL, addr_stack, &value);
2076
2077       if (prop_eval_ok)
2078         {
2079           remove_dyn_prop (DYN_PROP_BYTE_STRIDE, type);
2080           bit_stride = (unsigned int) (value * 8);
2081         }
2082       else
2083         {
2084           /* Could be a bug in our code, but it could also happen
2085              if the DWARF info is not correct.  Issue a warning,
2086              and assume no byte/bit stride (leave bit_stride = 0).  */
2087           warning (_("cannot determine array stride for type %s"),
2088                    TYPE_NAME (type) ? TYPE_NAME (type) : "<no name>");
2089         }
2090     }
2091   else
2092     bit_stride = TYPE_FIELD_BITSIZE (type, 0);
2093
2094   return create_array_type_with_stride (type, elt_type, range_type, NULL,
2095                                         bit_stride);
2096 }
2097
2098 /* Resolve dynamic bounds of members of the union TYPE to static
2099    bounds.  ADDR_STACK is a stack of struct property_addr_info
2100    to be used if needed during the dynamic resolution.  */
2101
2102 static struct type *
2103 resolve_dynamic_union (struct type *type,
2104                        struct property_addr_info *addr_stack)
2105 {
2106   struct type *resolved_type;
2107   int i;
2108   unsigned int max_len = 0;
2109
2110   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
2111
2112   resolved_type = copy_type (type);
2113   TYPE_FIELDS (resolved_type)
2114     = (struct field *) TYPE_ALLOC (resolved_type,
2115                                    TYPE_NFIELDS (resolved_type)
2116                                    * sizeof (struct field));
2117   memcpy (TYPE_FIELDS (resolved_type),
2118           TYPE_FIELDS (type),
2119           TYPE_NFIELDS (resolved_type) * sizeof (struct field));
2120   for (i = 0; i < TYPE_NFIELDS (resolved_type); ++i)
2121     {
2122       struct type *t;
2123
2124       if (field_is_static (&TYPE_FIELD (type, i)))
2125         continue;
2126
2127       t = resolve_dynamic_type_internal (TYPE_FIELD_TYPE (resolved_type, i),
2128                                          addr_stack, 0);
2129       TYPE_FIELD_TYPE (resolved_type, i) = t;
2130       if (TYPE_LENGTH (t) > max_len)
2131         max_len = TYPE_LENGTH (t);
2132     }
2133
2134   TYPE_LENGTH (resolved_type) = max_len;
2135   return resolved_type;
2136 }
2137
2138 /* Resolve dynamic bounds of members of the struct TYPE to static
2139    bounds.  ADDR_STACK is a stack of struct property_addr_info to
2140    be used if needed during the dynamic resolution.  */
2141
2142 static struct type *
2143 resolve_dynamic_struct (struct type *type,
2144                         struct property_addr_info *addr_stack)
2145 {
2146   struct type *resolved_type;
2147   int i;
2148   unsigned resolved_type_bit_length = 0;
2149
2150   gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT);
2151   gdb_assert (TYPE_NFIELDS (type) > 0);
2152
2153   resolved_type = copy_type (type);
2154   TYPE_FIELDS (resolved_type)
2155     = (struct field *) TYPE_ALLOC (resolved_type,
2156                                    TYPE_NFIELDS (resolved_type)
2157                                    * sizeof (struct field));
2158   memcpy (TYPE_FIELDS (resolved_type),
2159           TYPE_FIELDS (type),
2160           TYPE_NFIELDS (resolved_type) * sizeof (struct field));
2161   for (i = 0; i < TYPE_NFIELDS (resolved_type); ++i)
2162     {
2163       unsigned new_bit_length;
2164       struct property_addr_info pinfo;
2165
2166       if (field_is_static (&TYPE_FIELD (type, i)))
2167         continue;
2168
2169       /* As we know this field is not a static field, the field's
2170          field_loc_kind should be FIELD_LOC_KIND_BITPOS.  Verify
2171          this is the case, but only trigger a simple error rather
2172          than an internal error if that fails.  While failing
2173          that verification indicates a bug in our code, the error
2174          is not severe enough to suggest to the user he stops
2175          his debugging session because of it.  */
2176       if (TYPE_FIELD_LOC_KIND (type, i) != FIELD_LOC_KIND_BITPOS)
2177         error (_("Cannot determine struct field location"
2178                  " (invalid location kind)"));
2179
2180       pinfo.type = check_typedef (TYPE_FIELD_TYPE (type, i));
2181       pinfo.valaddr = addr_stack->valaddr;
2182       pinfo.addr
2183         = (addr_stack->addr
2184            + (TYPE_FIELD_BITPOS (resolved_type, i) / TARGET_CHAR_BIT));
2185       pinfo.next = addr_stack;
2186
2187       TYPE_FIELD_TYPE (resolved_type, i)
2188         = resolve_dynamic_type_internal (TYPE_FIELD_TYPE (resolved_type, i),
2189                                          &pinfo, 0);
2190       gdb_assert (TYPE_FIELD_LOC_KIND (resolved_type, i)
2191                   == FIELD_LOC_KIND_BITPOS);
2192
2193       new_bit_length = TYPE_FIELD_BITPOS (resolved_type, i);
2194       if (TYPE_FIELD_BITSIZE (resolved_type, i) != 0)
2195         new_bit_length += TYPE_FIELD_BITSIZE (resolved_type, i);
2196       else
2197         new_bit_length += (TYPE_LENGTH (TYPE_FIELD_TYPE (resolved_type, i))
2198                            * TARGET_CHAR_BIT);
2199
2200       /* Normally, we would use the position and size of the last field
2201          to determine the size of the enclosing structure.  But GCC seems
2202          to be encoding the position of some fields incorrectly when
2203          the struct contains a dynamic field that is not placed last.
2204          So we compute the struct size based on the field that has
2205          the highest position + size - probably the best we can do.  */
2206       if (new_bit_length > resolved_type_bit_length)
2207         resolved_type_bit_length = new_bit_length;
2208     }
2209
2210   /* The length of a type won't change for fortran, but it does for C and Ada.
2211      For fortran the size of dynamic fields might change over time but not the
2212      type length of the structure.  If we adapt it, we run into problems
2213      when calculating the element offset for arrays of structs.  */
2214   if (current_language->la_language != language_fortran)
2215     TYPE_LENGTH (resolved_type)
2216       = (resolved_type_bit_length + TARGET_CHAR_BIT - 1) / TARGET_CHAR_BIT;
2217
2218   /* The Ada language uses this field as a cache for static fixed types: reset
2219      it as RESOLVED_TYPE must have its own static fixed type.  */
2220   TYPE_TARGET_TYPE (resolved_type) = NULL;
2221
2222   return resolved_type;
2223 }
2224
2225 /* Worker for resolved_dynamic_type.  */
2226
2227 static struct type *
2228 resolve_dynamic_type_internal (struct type *type,
2229                                struct property_addr_info *addr_stack,
2230                                int top_level)
2231 {
2232   struct type *real_type = check_typedef (type);
2233   struct type *resolved_type = type;
2234   struct dynamic_prop *prop;
2235   CORE_ADDR value;
2236
2237   if (!is_dynamic_type_internal (real_type, top_level))
2238     return type;
2239
2240   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
2241     {
2242       resolved_type = copy_type (type);
2243       TYPE_TARGET_TYPE (resolved_type)
2244         = resolve_dynamic_type_internal (TYPE_TARGET_TYPE (type), addr_stack,
2245                                          top_level);
2246     }
2247   else 
2248     {
2249       /* Before trying to resolve TYPE, make sure it is not a stub.  */
2250       type = real_type;
2251
2252       switch (TYPE_CODE (type))
2253         {
2254         case TYPE_CODE_REF:
2255           {
2256             struct property_addr_info pinfo;
2257
2258             pinfo.type = check_typedef (TYPE_TARGET_TYPE (type));
2259             pinfo.valaddr = NULL;
2260             if (addr_stack->valaddr != NULL)
2261               pinfo.addr = extract_typed_address (addr_stack->valaddr, type);
2262             else
2263               pinfo.addr = read_memory_typed_address (addr_stack->addr, type);
2264             pinfo.next = addr_stack;
2265
2266             resolved_type = copy_type (type);
2267             TYPE_TARGET_TYPE (resolved_type)
2268               = resolve_dynamic_type_internal (TYPE_TARGET_TYPE (type),
2269                                                &pinfo, top_level);
2270             break;
2271           }
2272
2273         case TYPE_CODE_ARRAY:
2274           resolved_type = resolve_dynamic_array (type, addr_stack);
2275           break;
2276
2277         case TYPE_CODE_RANGE:
2278           resolved_type = resolve_dynamic_range (type, addr_stack);
2279           break;
2280
2281         case TYPE_CODE_UNION:
2282           resolved_type = resolve_dynamic_union (type, addr_stack);
2283           break;
2284
2285         case TYPE_CODE_STRUCT:
2286           resolved_type = resolve_dynamic_struct (type, addr_stack);
2287           break;
2288         }
2289     }
2290
2291   /* Resolve data_location attribute.  */
2292   prop = TYPE_DATA_LOCATION (resolved_type);
2293   if (prop != NULL
2294       && dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
2295     {
2296       TYPE_DYN_PROP_ADDR (prop) = value;
2297       TYPE_DYN_PROP_KIND (prop) = PROP_CONST;
2298     }
2299
2300   return resolved_type;
2301 }
2302
2303 /* See gdbtypes.h  */
2304
2305 struct type *
2306 resolve_dynamic_type (struct type *type, const gdb_byte *valaddr,
2307                       CORE_ADDR addr)
2308 {
2309   struct property_addr_info pinfo
2310     = {check_typedef (type), valaddr, addr, NULL};
2311
2312   return resolve_dynamic_type_internal (type, &pinfo, 1);
2313 }
2314
2315 /* See gdbtypes.h  */
2316
2317 struct dynamic_prop *
2318 get_dyn_prop (enum dynamic_prop_node_kind prop_kind, const struct type *type)
2319 {
2320   struct dynamic_prop_list *node = TYPE_DYN_PROP_LIST (type);
2321
2322   while (node != NULL)
2323     {
2324       if (node->prop_kind == prop_kind)
2325         return &node->prop;
2326       node = node->next;
2327     }
2328   return NULL;
2329 }
2330
2331 /* See gdbtypes.h  */
2332
2333 void
2334 add_dyn_prop (enum dynamic_prop_node_kind prop_kind, struct dynamic_prop prop,
2335               struct type *type)
2336 {
2337   struct dynamic_prop_list *temp;
2338
2339   gdb_assert (TYPE_OBJFILE_OWNED (type));
2340
2341   temp = XOBNEW (&TYPE_OBJFILE (type)->objfile_obstack,
2342                  struct dynamic_prop_list);
2343   temp->prop_kind = prop_kind;
2344   temp->prop = prop;
2345   temp->next = TYPE_DYN_PROP_LIST (type);
2346
2347   TYPE_DYN_PROP_LIST (type) = temp;
2348 }
2349
2350 /* Remove dynamic property from TYPE in case it exists.  */
2351
2352 void
2353 remove_dyn_prop (enum dynamic_prop_node_kind prop_kind,
2354                  struct type *type)
2355 {
2356   struct dynamic_prop_list *prev_node, *curr_node;
2357
2358   curr_node = TYPE_DYN_PROP_LIST (type);
2359   prev_node = NULL;
2360
2361   while (NULL != curr_node)
2362     {
2363       if (curr_node->prop_kind == prop_kind)
2364         {
2365           /* Update the linked list but don't free anything.
2366              The property was allocated on objstack and it is not known
2367              if we are on top of it.  Nevertheless, everything is released
2368              when the complete objstack is freed.  */
2369           if (NULL == prev_node)
2370             TYPE_DYN_PROP_LIST (type) = curr_node->next;
2371           else
2372             prev_node->next = curr_node->next;
2373
2374           return;
2375         }
2376
2377       prev_node = curr_node;
2378       curr_node = curr_node->next;
2379     }
2380 }
2381
2382 /* Find the real type of TYPE.  This function returns the real type,
2383    after removing all layers of typedefs, and completing opaque or stub
2384    types.  Completion changes the TYPE argument, but stripping of
2385    typedefs does not.
2386
2387    Instance flags (e.g. const/volatile) are preserved as typedefs are
2388    stripped.  If necessary a new qualified form of the underlying type
2389    is created.
2390
2391    NOTE: This will return a typedef if TYPE_TARGET_TYPE for the typedef has
2392    not been computed and we're either in the middle of reading symbols, or
2393    there was no name for the typedef in the debug info.
2394
2395    NOTE: Lookup of opaque types can throw errors for invalid symbol files.
2396    QUITs in the symbol reading code can also throw.
2397    Thus this function can throw an exception.
2398
2399    If TYPE is a TYPE_CODE_TYPEDEF, its length is updated to the length of
2400    the target type.
2401
2402    If this is a stubbed struct (i.e. declared as struct foo *), see if
2403    we can find a full definition in some other file.  If so, copy this
2404    definition, so we can use it in future.  There used to be a comment
2405    (but not any code) that if we don't find a full definition, we'd
2406    set a flag so we don't spend time in the future checking the same
2407    type.  That would be a mistake, though--we might load in more
2408    symbols which contain a full definition for the type.  */
2409
2410 struct type *
2411 check_typedef (struct type *type)
2412 {
2413   struct type *orig_type = type;
2414   /* While we're removing typedefs, we don't want to lose qualifiers.
2415      E.g., const/volatile.  */
2416   int instance_flags = TYPE_INSTANCE_FLAGS (type);
2417
2418   gdb_assert (type);
2419
2420   while (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
2421     {
2422       if (!TYPE_TARGET_TYPE (type))
2423         {
2424           const char *name;
2425           struct symbol *sym;
2426
2427           /* It is dangerous to call lookup_symbol if we are currently
2428              reading a symtab.  Infinite recursion is one danger.  */
2429           if (currently_reading_symtab)
2430             return make_qualified_type (type, instance_flags, NULL);
2431
2432           name = TYPE_NAME (type);
2433           /* FIXME: shouldn't we look in STRUCT_DOMAIN and/or
2434              VAR_DOMAIN as appropriate?  */
2435           if (name == NULL)
2436             {
2437               stub_noname_complaint ();
2438               return make_qualified_type (type, instance_flags, NULL);
2439             }
2440           sym = lookup_symbol (name, 0, STRUCT_DOMAIN, 0).symbol;
2441           if (sym)
2442             TYPE_TARGET_TYPE (type) = SYMBOL_TYPE (sym);
2443           else                                  /* TYPE_CODE_UNDEF */
2444             TYPE_TARGET_TYPE (type) = alloc_type_arch (get_type_arch (type));
2445         }
2446       type = TYPE_TARGET_TYPE (type);
2447
2448       /* Preserve the instance flags as we traverse down the typedef chain.
2449
2450          Handling address spaces/classes is nasty, what do we do if there's a
2451          conflict?
2452          E.g., what if an outer typedef marks the type as class_1 and an inner
2453          typedef marks the type as class_2?
2454          This is the wrong place to do such error checking.  We leave it to
2455          the code that created the typedef in the first place to flag the
2456          error.  We just pick the outer address space (akin to letting the
2457          outer cast in a chain of casting win), instead of assuming
2458          "it can't happen".  */
2459       {
2460         const int ALL_SPACES = (TYPE_INSTANCE_FLAG_CODE_SPACE
2461                                 | TYPE_INSTANCE_FLAG_DATA_SPACE);
2462         const int ALL_CLASSES = TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL;
2463         int new_instance_flags = TYPE_INSTANCE_FLAGS (type);
2464
2465         /* Treat code vs data spaces and address classes separately.  */
2466         if ((instance_flags & ALL_SPACES) != 0)
2467           new_instance_flags &= ~ALL_SPACES;
2468         if ((instance_flags & ALL_CLASSES) != 0)
2469           new_instance_flags &= ~ALL_CLASSES;
2470
2471         instance_flags |= new_instance_flags;
2472       }
2473     }
2474
2475   /* If this is a struct/class/union with no fields, then check
2476      whether a full definition exists somewhere else.  This is for
2477      systems where a type definition with no fields is issued for such
2478      types, instead of identifying them as stub types in the first
2479      place.  */
2480
2481   if (TYPE_IS_OPAQUE (type) 
2482       && opaque_type_resolution 
2483       && !currently_reading_symtab)
2484     {
2485       const char *name = TYPE_NAME (type);
2486       struct type *newtype;
2487
2488       if (name == NULL)
2489         {
2490           stub_noname_complaint ();
2491           return make_qualified_type (type, instance_flags, NULL);
2492         }
2493       newtype = lookup_transparent_type (name);
2494
2495       if (newtype)
2496         {
2497           /* If the resolved type and the stub are in the same
2498              objfile, then replace the stub type with the real deal.
2499              But if they're in separate objfiles, leave the stub
2500              alone; we'll just look up the transparent type every time
2501              we call check_typedef.  We can't create pointers between
2502              types allocated to different objfiles, since they may
2503              have different lifetimes.  Trying to copy NEWTYPE over to
2504              TYPE's objfile is pointless, too, since you'll have to
2505              move over any other types NEWTYPE refers to, which could
2506              be an unbounded amount of stuff.  */
2507           if (TYPE_OBJFILE (newtype) == TYPE_OBJFILE (type))
2508             type = make_qualified_type (newtype,
2509                                         TYPE_INSTANCE_FLAGS (type),
2510                                         type);
2511           else
2512             type = newtype;
2513         }
2514     }
2515   /* Otherwise, rely on the stub flag being set for opaque/stubbed
2516      types.  */
2517   else if (TYPE_STUB (type) && !currently_reading_symtab)
2518     {
2519       const char *name = TYPE_NAME (type);
2520       /* FIXME: shouldn't we look in STRUCT_DOMAIN and/or VAR_DOMAIN
2521          as appropriate?  */
2522       struct symbol *sym;
2523
2524       if (name == NULL)
2525         {
2526           stub_noname_complaint ();
2527           return make_qualified_type (type, instance_flags, NULL);
2528         }
2529       sym = lookup_symbol (name, 0, STRUCT_DOMAIN, 0).symbol;
2530       if (sym)
2531         {
2532           /* Same as above for opaque types, we can replace the stub
2533              with the complete type only if they are in the same
2534              objfile.  */
2535           if (TYPE_OBJFILE (SYMBOL_TYPE(sym)) == TYPE_OBJFILE (type))
2536             type = make_qualified_type (SYMBOL_TYPE (sym),
2537                                         TYPE_INSTANCE_FLAGS (type),
2538                                         type);
2539           else
2540             type = SYMBOL_TYPE (sym);
2541         }
2542     }
2543
2544   if (TYPE_TARGET_STUB (type))
2545     {
2546       struct type *target_type = check_typedef (TYPE_TARGET_TYPE (type));
2547
2548       if (TYPE_STUB (target_type) || TYPE_TARGET_STUB (target_type))
2549         {
2550           /* Nothing we can do.  */
2551         }
2552       else if (TYPE_CODE (type) == TYPE_CODE_RANGE)
2553         {
2554           TYPE_LENGTH (type) = TYPE_LENGTH (target_type);
2555           TYPE_TARGET_STUB (type) = 0;
2556         }
2557     }
2558
2559   type = make_qualified_type (type, instance_flags, NULL);
2560
2561   /* Cache TYPE_LENGTH for future use.  */
2562   TYPE_LENGTH (orig_type) = TYPE_LENGTH (type);
2563
2564   return type;
2565 }
2566
2567 /* Parse a type expression in the string [P..P+LENGTH).  If an error
2568    occurs, silently return a void type.  */
2569
2570 static struct type *
2571 safe_parse_type (struct gdbarch *gdbarch, char *p, int length)
2572 {
2573   struct ui_file *saved_gdb_stderr;
2574   struct type *type = NULL; /* Initialize to keep gcc happy.  */
2575
2576   /* Suppress error messages.  */
2577   saved_gdb_stderr = gdb_stderr;
2578   gdb_stderr = &null_stream;
2579
2580   /* Call parse_and_eval_type() without fear of longjmp()s.  */
2581   TRY
2582     {
2583       type = parse_and_eval_type (p, length);
2584     }
2585   CATCH (except, RETURN_MASK_ERROR)
2586     {
2587       type = builtin_type (gdbarch)->builtin_void;
2588     }
2589   END_CATCH
2590
2591   /* Stop suppressing error messages.  */
2592   gdb_stderr = saved_gdb_stderr;
2593
2594   return type;
2595 }
2596
2597 /* Ugly hack to convert method stubs into method types.
2598
2599    He ain't kiddin'.  This demangles the name of the method into a
2600    string including argument types, parses out each argument type,
2601    generates a string casting a zero to that type, evaluates the
2602    string, and stuffs the resulting type into an argtype vector!!!
2603    Then it knows the type of the whole function (including argument
2604    types for overloading), which info used to be in the stab's but was
2605    removed to hack back the space required for them.  */
2606
2607 static void
2608 check_stub_method (struct type *type, int method_id, int signature_id)
2609 {
2610   struct gdbarch *gdbarch = get_type_arch (type);
2611   struct fn_field *f;
2612   char *mangled_name = gdb_mangle_name (type, method_id, signature_id);
2613   char *demangled_name = gdb_demangle (mangled_name,
2614                                        DMGL_PARAMS | DMGL_ANSI);
2615   char *argtypetext, *p;
2616   int depth = 0, argcount = 1;
2617   struct field *argtypes;
2618   struct type *mtype;
2619
2620   /* Make sure we got back a function string that we can use.  */
2621   if (demangled_name)
2622     p = strchr (demangled_name, '(');
2623   else
2624     p = NULL;
2625
2626   if (demangled_name == NULL || p == NULL)
2627     error (_("Internal: Cannot demangle mangled name `%s'."), 
2628            mangled_name);
2629
2630   /* Now, read in the parameters that define this type.  */
2631   p += 1;
2632   argtypetext = p;
2633   while (*p)
2634     {
2635       if (*p == '(' || *p == '<')
2636         {
2637           depth += 1;
2638         }
2639       else if (*p == ')' || *p == '>')
2640         {
2641           depth -= 1;
2642         }
2643       else if (*p == ',' && depth == 0)
2644         {
2645           argcount += 1;
2646         }
2647
2648       p += 1;
2649     }
2650
2651   /* If we read one argument and it was ``void'', don't count it.  */
2652   if (startswith (argtypetext, "(void)"))
2653     argcount -= 1;
2654
2655   /* We need one extra slot, for the THIS pointer.  */
2656
2657   argtypes = (struct field *)
2658     TYPE_ALLOC (type, (argcount + 1) * sizeof (struct field));
2659   p = argtypetext;
2660
2661   /* Add THIS pointer for non-static methods.  */
2662   f = TYPE_FN_FIELDLIST1 (type, method_id);
2663   if (TYPE_FN_FIELD_STATIC_P (f, signature_id))
2664     argcount = 0;
2665   else
2666     {
2667       argtypes[0].type = lookup_pointer_type (type);
2668       argcount = 1;
2669     }
2670
2671   if (*p != ')')                /* () means no args, skip while.  */
2672     {
2673       depth = 0;
2674       while (*p)
2675         {
2676           if (depth <= 0 && (*p == ',' || *p == ')'))
2677             {
2678               /* Avoid parsing of ellipsis, they will be handled below.
2679                  Also avoid ``void'' as above.  */
2680               if (strncmp (argtypetext, "...", p - argtypetext) != 0
2681                   && strncmp (argtypetext, "void", p - argtypetext) != 0)
2682                 {
2683                   argtypes[argcount].type =
2684                     safe_parse_type (gdbarch, argtypetext, p - argtypetext);
2685                   argcount += 1;
2686                 }
2687               argtypetext = p + 1;
2688             }
2689
2690           if (*p == '(' || *p == '<')
2691             {
2692               depth += 1;
2693             }
2694           else if (*p == ')' || *p == '>')
2695             {
2696               depth -= 1;
2697             }
2698
2699           p += 1;
2700         }
2701     }
2702
2703   TYPE_FN_FIELD_PHYSNAME (f, signature_id) = mangled_name;
2704
2705   /* Now update the old "stub" type into a real type.  */
2706   mtype = TYPE_FN_FIELD_TYPE (f, signature_id);
2707   /* MTYPE may currently be a function (TYPE_CODE_FUNC).
2708      We want a method (TYPE_CODE_METHOD).  */
2709   smash_to_method_type (mtype, type, TYPE_TARGET_TYPE (mtype),
2710                         argtypes, argcount, p[-2] == '.');
2711   TYPE_STUB (mtype) = 0;
2712   TYPE_FN_FIELD_STUB (f, signature_id) = 0;
2713
2714   xfree (demangled_name);
2715 }
2716
2717 /* This is the external interface to check_stub_method, above.  This
2718    function unstubs all of the signatures for TYPE's METHOD_ID method
2719    name.  After calling this function TYPE_FN_FIELD_STUB will be
2720    cleared for each signature and TYPE_FN_FIELDLIST_NAME will be
2721    correct.
2722
2723    This function unfortunately can not die until stabs do.  */
2724
2725 void
2726 check_stub_method_group (struct type *type, int method_id)
2727 {
2728   int len = TYPE_FN_FIELDLIST_LENGTH (type, method_id);
2729   struct fn_field *f = TYPE_FN_FIELDLIST1 (type, method_id);
2730   int j, found_stub = 0;
2731
2732   for (j = 0; j < len; j++)
2733     if (TYPE_FN_FIELD_STUB (f, j))
2734       {
2735         found_stub = 1;
2736         check_stub_method (type, method_id, j);
2737       }
2738
2739   /* GNU v3 methods with incorrect names were corrected when we read
2740      in type information, because it was cheaper to do it then.  The
2741      only GNU v2 methods with incorrect method names are operators and
2742      destructors; destructors were also corrected when we read in type
2743      information.
2744
2745      Therefore the only thing we need to handle here are v2 operator
2746      names.  */
2747   if (found_stub && !startswith (TYPE_FN_FIELD_PHYSNAME (f, 0), "_Z"))
2748     {
2749       int ret;
2750       char dem_opname[256];
2751
2752       ret = cplus_demangle_opname (TYPE_FN_FIELDLIST_NAME (type, 
2753                                                            method_id),
2754                                    dem_opname, DMGL_ANSI);
2755       if (!ret)
2756         ret = cplus_demangle_opname (TYPE_FN_FIELDLIST_NAME (type, 
2757                                                              method_id),
2758                                      dem_opname, 0);
2759       if (ret)
2760         TYPE_FN_FIELDLIST_NAME (type, method_id) = xstrdup (dem_opname);
2761     }
2762 }
2763
2764 /* Ensure it is in .rodata (if available) by workarounding GCC PR 44690.  */
2765 const struct cplus_struct_type cplus_struct_default = { };
2766
2767 void
2768 allocate_cplus_struct_type (struct type *type)
2769 {
2770   if (HAVE_CPLUS_STRUCT (type))
2771     /* Structure was already allocated.  Nothing more to do.  */
2772     return;
2773
2774   TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_CPLUS_STUFF;
2775   TYPE_RAW_CPLUS_SPECIFIC (type) = (struct cplus_struct_type *)
2776     TYPE_ALLOC (type, sizeof (struct cplus_struct_type));
2777   *(TYPE_RAW_CPLUS_SPECIFIC (type)) = cplus_struct_default;
2778   set_type_vptr_fieldno (type, -1);
2779 }
2780
2781 const struct gnat_aux_type gnat_aux_default =
2782   { NULL };
2783
2784 /* Set the TYPE's type-specific kind to TYPE_SPECIFIC_GNAT_STUFF,
2785    and allocate the associated gnat-specific data.  The gnat-specific
2786    data is also initialized to gnat_aux_default.  */
2787
2788 void
2789 allocate_gnat_aux_type (struct type *type)
2790 {
2791   TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_GNAT_STUFF;
2792   TYPE_GNAT_SPECIFIC (type) = (struct gnat_aux_type *)
2793     TYPE_ALLOC (type, sizeof (struct gnat_aux_type));
2794   *(TYPE_GNAT_SPECIFIC (type)) = gnat_aux_default;
2795 }
2796
2797 /* Helper function to initialize a newly allocated type.  Set type code
2798    to CODE and initialize the type-specific fields accordingly.  */
2799
2800 static void
2801 set_type_code (struct type *type, enum type_code code)
2802 {
2803   TYPE_CODE (type) = code;
2804
2805   switch (code)
2806     {
2807       case TYPE_CODE_STRUCT:
2808       case TYPE_CODE_UNION:
2809       case TYPE_CODE_NAMESPACE:
2810         INIT_CPLUS_SPECIFIC (type);
2811         break;
2812       case TYPE_CODE_FLT:
2813         TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_FLOATFORMAT;
2814         break;
2815       case TYPE_CODE_FUNC:
2816         INIT_FUNC_SPECIFIC (type);
2817         break;
2818     }
2819 }
2820
2821 /* Helper function to verify floating-point format and size.
2822    BIT is the type size in bits; if BIT equals -1, the size is
2823    determined by the floatformat.  Returns size to be used.  */
2824
2825 static int
2826 verify_floatformat (int bit, const struct floatformat *floatformat)
2827 {
2828   gdb_assert (floatformat != NULL);
2829
2830   if (bit == -1)
2831     bit = floatformat->totalsize;
2832
2833   gdb_assert (bit >= 0);
2834   gdb_assert (bit >= floatformat->totalsize);
2835
2836   return bit;
2837 }
2838
2839 /* Return the floating-point format for a floating-point variable of
2840    type TYPE.  */
2841
2842 const struct floatformat *
2843 floatformat_from_type (const struct type *type)
2844 {
2845   gdb_assert (TYPE_CODE (type) == TYPE_CODE_FLT);
2846   gdb_assert (TYPE_FLOATFORMAT (type));
2847   return TYPE_FLOATFORMAT (type);
2848 }
2849
2850 /* Helper function to initialize the standard scalar types.
2851
2852    If NAME is non-NULL, then it is used to initialize the type name.
2853    Note that NAME is not copied; it is required to have a lifetime at
2854    least as long as OBJFILE.  */
2855
2856 struct type *
2857 init_type (struct objfile *objfile, enum type_code code, int bit,
2858            const char *name)
2859 {
2860   struct type *type;
2861
2862   type = alloc_type (objfile);
2863   set_type_code (type, code);
2864   gdb_assert ((bit % TARGET_CHAR_BIT) == 0);
2865   TYPE_LENGTH (type) = bit / TARGET_CHAR_BIT;
2866   TYPE_NAME (type) = name;
2867
2868   return type;
2869 }
2870
2871 /* Allocate a TYPE_CODE_ERROR type structure associated with OBJFILE,
2872    to use with variables that have no debug info.  NAME is the type
2873    name.  */
2874
2875 static struct type *
2876 init_nodebug_var_type (struct objfile *objfile, const char *name)
2877 {
2878   return init_type (objfile, TYPE_CODE_ERROR, 0, name);
2879 }
2880
2881 /* Allocate a TYPE_CODE_INT type structure associated with OBJFILE.
2882    BIT is the type size in bits.  If UNSIGNED_P is non-zero, set
2883    the type's TYPE_UNSIGNED flag.  NAME is the type name.  */
2884
2885 struct type *
2886 init_integer_type (struct objfile *objfile,
2887                    int bit, int unsigned_p, const char *name)
2888 {
2889   struct type *t;
2890
2891   t = init_type (objfile, TYPE_CODE_INT, bit, name);
2892   if (unsigned_p)
2893     TYPE_UNSIGNED (t) = 1;
2894
2895   return t;
2896 }
2897
2898 /* Allocate a TYPE_CODE_CHAR type structure associated with OBJFILE.
2899    BIT is the type size in bits.  If UNSIGNED_P is non-zero, set
2900    the type's TYPE_UNSIGNED flag.  NAME is the type name.  */
2901
2902 struct type *
2903 init_character_type (struct objfile *objfile,
2904                      int bit, int unsigned_p, const char *name)
2905 {
2906   struct type *t;
2907
2908   t = init_type (objfile, TYPE_CODE_CHAR, bit, name);
2909   if (unsigned_p)
2910     TYPE_UNSIGNED (t) = 1;
2911
2912   return t;
2913 }
2914
2915 /* Allocate a TYPE_CODE_BOOL type structure associated with OBJFILE.
2916    BIT is the type size in bits.  If UNSIGNED_P is non-zero, set
2917    the type's TYPE_UNSIGNED flag.  NAME is the type name.  */
2918
2919 struct type *
2920 init_boolean_type (struct objfile *objfile,
2921                    int bit, int unsigned_p, const char *name)
2922 {
2923   struct type *t;
2924
2925   t = init_type (objfile, TYPE_CODE_BOOL, bit, name);
2926   if (unsigned_p)
2927     TYPE_UNSIGNED (t) = 1;
2928
2929   return t;
2930 }
2931
2932 /* Allocate a TYPE_CODE_FLT type structure associated with OBJFILE.
2933    BIT is the type size in bits; if BIT equals -1, the size is
2934    determined by the floatformat.  NAME is the type name.  Set the
2935    TYPE_FLOATFORMAT from FLOATFORMATS.  */
2936
2937 struct type *
2938 init_float_type (struct objfile *objfile,
2939                  int bit, const char *name,
2940                  const struct floatformat **floatformats)
2941 {
2942   struct gdbarch *gdbarch = get_objfile_arch (objfile);
2943   const struct floatformat *fmt = floatformats[gdbarch_byte_order (gdbarch)];
2944   struct type *t;
2945
2946   bit = verify_floatformat (bit, fmt);
2947   t = init_type (objfile, TYPE_CODE_FLT, bit, name);
2948   TYPE_FLOATFORMAT (t) = fmt;
2949
2950   return t;
2951 }
2952
2953 /* Allocate a TYPE_CODE_DECFLOAT type structure associated with OBJFILE.
2954    BIT is the type size in bits.  NAME is the type name.  */
2955
2956 struct type *
2957 init_decfloat_type (struct objfile *objfile, int bit, const char *name)
2958 {
2959   struct type *t;
2960
2961   t = init_type (objfile, TYPE_CODE_DECFLOAT, bit, name);
2962   return t;
2963 }
2964
2965 /* Allocate a TYPE_CODE_COMPLEX type structure associated with OBJFILE.
2966    NAME is the type name.  TARGET_TYPE is the component float type.  */
2967
2968 struct type *
2969 init_complex_type (struct objfile *objfile,
2970                    const char *name, struct type *target_type)
2971 {
2972   struct type *t;
2973
2974   t = init_type (objfile, TYPE_CODE_COMPLEX,
2975                  2 * TYPE_LENGTH (target_type) * TARGET_CHAR_BIT, name);
2976   TYPE_TARGET_TYPE (t) = target_type;
2977   return t;
2978 }
2979
2980 /* Allocate a TYPE_CODE_PTR type structure associated with OBJFILE.
2981    BIT is the pointer type size in bits.  NAME is the type name.
2982    TARGET_TYPE is the pointer target type.  Always sets the pointer type's
2983    TYPE_UNSIGNED flag.  */
2984
2985 struct type *
2986 init_pointer_type (struct objfile *objfile,
2987                    int bit, const char *name, struct type *target_type)
2988 {
2989   struct type *t;
2990
2991   t = init_type (objfile, TYPE_CODE_PTR, bit, name);
2992   TYPE_TARGET_TYPE (t) = target_type;
2993   TYPE_UNSIGNED (t) = 1;
2994   return t;
2995 }
2996
2997 /* See gdbtypes.h.  */
2998
2999 unsigned
3000 type_raw_align (struct type *type)
3001 {
3002   if (type->align_log2 != 0)
3003     return 1 << (type->align_log2 - 1);
3004   return 0;
3005 }
3006
3007 /* See gdbtypes.h.  */
3008
3009 unsigned
3010 type_align (struct type *type)
3011 {
3012   unsigned raw_align = type_raw_align (type);
3013   if (raw_align != 0)
3014     return raw_align;
3015
3016   ULONGEST align = 0;
3017   switch (TYPE_CODE (type))
3018     {
3019     case TYPE_CODE_PTR:
3020     case TYPE_CODE_FUNC:
3021     case TYPE_CODE_FLAGS:
3022     case TYPE_CODE_INT:
3023     case TYPE_CODE_FLT:
3024     case TYPE_CODE_ENUM:
3025     case TYPE_CODE_REF:
3026     case TYPE_CODE_RVALUE_REF:
3027     case TYPE_CODE_CHAR:
3028     case TYPE_CODE_BOOL:
3029     case TYPE_CODE_DECFLOAT:
3030       {
3031         struct gdbarch *arch = get_type_arch (type);
3032         align = gdbarch_type_align (arch, type);
3033       }
3034       break;
3035
3036     case TYPE_CODE_ARRAY:
3037     case TYPE_CODE_COMPLEX:
3038     case TYPE_CODE_TYPEDEF:
3039       align = type_align (TYPE_TARGET_TYPE (type));
3040       break;
3041
3042     case TYPE_CODE_STRUCT:
3043     case TYPE_CODE_UNION:
3044       {
3045         if (TYPE_NFIELDS (type) == 0)
3046           {
3047             /* An empty struct has alignment 1.  */
3048             align = 1;
3049             break;
3050           }
3051         for (unsigned i = 0; i < TYPE_NFIELDS (type); ++i)
3052           {
3053             ULONGEST f_align = type_align (TYPE_FIELD_TYPE (type, i));
3054             if (f_align == 0)
3055               {
3056                 /* Don't pretend we know something we don't.  */
3057                 align = 0;
3058                 break;
3059               }
3060             if (f_align > align)
3061               align = f_align;
3062           }
3063       }
3064       break;
3065
3066     case TYPE_CODE_SET:
3067     case TYPE_CODE_RANGE:
3068     case TYPE_CODE_STRING:
3069       /* Not sure what to do here, and these can't appear in C or C++
3070          anyway.  */
3071       break;
3072
3073     case TYPE_CODE_METHODPTR:
3074     case TYPE_CODE_MEMBERPTR:
3075       align = type_length_units (type);
3076       break;
3077
3078     case TYPE_CODE_VOID:
3079       align = 1;
3080       break;
3081
3082     case TYPE_CODE_ERROR:
3083     case TYPE_CODE_METHOD:
3084     default:
3085       break;
3086     }
3087
3088   if ((align & (align - 1)) != 0)
3089     {
3090       /* Not a power of 2, so pass.  */
3091       align = 0;
3092     }
3093
3094   return align;
3095 }
3096
3097 /* See gdbtypes.h.  */
3098
3099 bool
3100 set_type_align (struct type *type, ULONGEST align)
3101 {
3102   /* Must be a power of 2.  Zero is ok.  */
3103   gdb_assert ((align & (align - 1)) == 0);
3104
3105   unsigned result = 0;
3106   while (align != 0)
3107     {
3108       ++result;
3109       align >>= 1;
3110     }
3111
3112   if (result >= (1 << TYPE_ALIGN_BITS))
3113     return false;
3114
3115   type->align_log2 = result;
3116   return true;
3117 }
3118
3119 \f
3120 /* Queries on types.  */
3121
3122 int
3123 can_dereference (struct type *t)
3124 {
3125   /* FIXME: Should we return true for references as well as
3126      pointers?  */
3127   t = check_typedef (t);
3128   return
3129     (t != NULL
3130      && TYPE_CODE (t) == TYPE_CODE_PTR
3131      && TYPE_CODE (TYPE_TARGET_TYPE (t)) != TYPE_CODE_VOID);
3132 }
3133
3134 int
3135 is_integral_type (struct type *t)
3136 {
3137   t = check_typedef (t);
3138   return
3139     ((t != NULL)
3140      && ((TYPE_CODE (t) == TYPE_CODE_INT)
3141          || (TYPE_CODE (t) == TYPE_CODE_ENUM)
3142          || (TYPE_CODE (t) == TYPE_CODE_FLAGS)
3143          || (TYPE_CODE (t) == TYPE_CODE_CHAR)
3144          || (TYPE_CODE (t) == TYPE_CODE_RANGE)
3145          || (TYPE_CODE (t) == TYPE_CODE_BOOL)));
3146 }
3147
3148 int
3149 is_floating_type (struct type *t)
3150 {
3151   t = check_typedef (t);
3152   return
3153     ((t != NULL)
3154      && ((TYPE_CODE (t) == TYPE_CODE_FLT)
3155          || (TYPE_CODE (t) == TYPE_CODE_DECFLOAT)));
3156 }
3157
3158 /* Return true if TYPE is scalar.  */
3159
3160 int
3161 is_scalar_type (struct type *type)
3162 {
3163   type = check_typedef (type);
3164
3165   switch (TYPE_CODE (type))
3166     {
3167     case TYPE_CODE_ARRAY:
3168     case TYPE_CODE_STRUCT:
3169     case TYPE_CODE_UNION:
3170     case TYPE_CODE_SET:
3171     case TYPE_CODE_STRING:
3172       return 0;
3173     default:
3174       return 1;
3175     }
3176 }
3177
3178 /* Return true if T is scalar, or a composite type which in practice has
3179    the memory layout of a scalar type.  E.g., an array or struct with only
3180    one scalar element inside it, or a union with only scalar elements.  */
3181
3182 int
3183 is_scalar_type_recursive (struct type *t)
3184 {
3185   t = check_typedef (t);
3186
3187   if (is_scalar_type (t))
3188     return 1;
3189   /* Are we dealing with an array or string of known dimensions?  */
3190   else if ((TYPE_CODE (t) == TYPE_CODE_ARRAY
3191             || TYPE_CODE (t) == TYPE_CODE_STRING) && TYPE_NFIELDS (t) == 1
3192            && TYPE_CODE (TYPE_INDEX_TYPE (t)) == TYPE_CODE_RANGE)
3193     {
3194       LONGEST low_bound, high_bound;
3195       struct type *elt_type = check_typedef (TYPE_TARGET_TYPE (t));
3196
3197       get_discrete_bounds (TYPE_INDEX_TYPE (t), &low_bound, &high_bound);
3198
3199       return high_bound == low_bound && is_scalar_type_recursive (elt_type);
3200     }
3201   /* Are we dealing with a struct with one element?  */
3202   else if (TYPE_CODE (t) == TYPE_CODE_STRUCT && TYPE_NFIELDS (t) == 1)
3203     return is_scalar_type_recursive (TYPE_FIELD_TYPE (t, 0));
3204   else if (TYPE_CODE (t) == TYPE_CODE_UNION)
3205     {
3206       int i, n = TYPE_NFIELDS (t);
3207
3208       /* If all elements of the union are scalar, then the union is scalar.  */
3209       for (i = 0; i < n; i++)
3210         if (!is_scalar_type_recursive (TYPE_FIELD_TYPE (t, i)))
3211           return 0;
3212
3213       return 1;
3214     }
3215
3216   return 0;
3217 }
3218
3219 /* Return true is T is a class or a union.  False otherwise.  */
3220
3221 int
3222 class_or_union_p (const struct type *t)
3223 {
3224   return (TYPE_CODE (t) == TYPE_CODE_STRUCT
3225           || TYPE_CODE (t) == TYPE_CODE_UNION);
3226 }
3227
3228 /* A helper function which returns true if types A and B represent the
3229    "same" class type.  This is true if the types have the same main
3230    type, or the same name.  */
3231
3232 int
3233 class_types_same_p (const struct type *a, const struct type *b)
3234 {
3235   return (TYPE_MAIN_TYPE (a) == TYPE_MAIN_TYPE (b)
3236           || (TYPE_NAME (a) && TYPE_NAME (b)
3237               && !strcmp (TYPE_NAME (a), TYPE_NAME (b))));
3238 }
3239
3240 /* If BASE is an ancestor of DCLASS return the distance between them.
3241    otherwise return -1;
3242    eg:
3243
3244    class A {};
3245    class B: public A {};
3246    class C: public B {};
3247    class D: C {};
3248
3249    distance_to_ancestor (A, A, 0) = 0
3250    distance_to_ancestor (A, B, 0) = 1
3251    distance_to_ancestor (A, C, 0) = 2
3252    distance_to_ancestor (A, D, 0) = 3
3253
3254    If PUBLIC is 1 then only public ancestors are considered,
3255    and the function returns the distance only if BASE is a public ancestor
3256    of DCLASS.
3257    Eg:
3258
3259    distance_to_ancestor (A, D, 1) = -1.  */
3260
3261 static int
3262 distance_to_ancestor (struct type *base, struct type *dclass, int is_public)
3263 {
3264   int i;
3265   int d;
3266
3267   base = check_typedef (base);
3268   dclass = check_typedef (dclass);
3269
3270   if (class_types_same_p (base, dclass))
3271     return 0;
3272
3273   for (i = 0; i < TYPE_N_BASECLASSES (dclass); i++)
3274     {
3275       if (is_public && ! BASETYPE_VIA_PUBLIC (dclass, i))
3276         continue;
3277
3278       d = distance_to_ancestor (base, TYPE_BASECLASS (dclass, i), is_public);
3279       if (d >= 0)
3280         return 1 + d;
3281     }
3282
3283   return -1;
3284 }
3285
3286 /* Check whether BASE is an ancestor or base class or DCLASS
3287    Return 1 if so, and 0 if not.
3288    Note: If BASE and DCLASS are of the same type, this function
3289    will return 1. So for some class A, is_ancestor (A, A) will
3290    return 1.  */
3291
3292 int
3293 is_ancestor (struct type *base, struct type *dclass)
3294 {
3295   return distance_to_ancestor (base, dclass, 0) >= 0;
3296 }
3297
3298 /* Like is_ancestor, but only returns true when BASE is a public
3299    ancestor of DCLASS.  */
3300
3301 int
3302 is_public_ancestor (struct type *base, struct type *dclass)
3303 {
3304   return distance_to_ancestor (base, dclass, 1) >= 0;
3305 }
3306
3307 /* A helper function for is_unique_ancestor.  */
3308
3309 static int
3310 is_unique_ancestor_worker (struct type *base, struct type *dclass,
3311                            int *offset,
3312                            const gdb_byte *valaddr, int embedded_offset,
3313                            CORE_ADDR address, struct value *val)
3314 {
3315   int i, count = 0;
3316
3317   base = check_typedef (base);
3318   dclass = check_typedef (dclass);
3319
3320   for (i = 0; i < TYPE_N_BASECLASSES (dclass) && count < 2; ++i)
3321     {
3322       struct type *iter;
3323       int this_offset;
3324
3325       iter = check_typedef (TYPE_BASECLASS (dclass, i));
3326
3327       this_offset = baseclass_offset (dclass, i, valaddr, embedded_offset,
3328                                       address, val);
3329
3330       if (class_types_same_p (base, iter))
3331         {
3332           /* If this is the first subclass, set *OFFSET and set count
3333              to 1.  Otherwise, if this is at the same offset as
3334              previous instances, do nothing.  Otherwise, increment
3335              count.  */
3336           if (*offset == -1)
3337             {
3338               *offset = this_offset;
3339               count = 1;
3340             }
3341           else if (this_offset == *offset)
3342             {
3343               /* Nothing.  */
3344             }
3345           else
3346             ++count;
3347         }
3348       else
3349         count += is_unique_ancestor_worker (base, iter, offset,
3350                                             valaddr,
3351                                             embedded_offset + this_offset,
3352                                             address, val);
3353     }
3354
3355   return count;
3356 }
3357
3358 /* Like is_ancestor, but only returns true if BASE is a unique base
3359    class of the type of VAL.  */
3360
3361 int
3362 is_unique_ancestor (struct type *base, struct value *val)
3363 {
3364   int offset = -1;
3365
3366   return is_unique_ancestor_worker (base, value_type (val), &offset,
3367                                     value_contents_for_printing (val),
3368                                     value_embedded_offset (val),
3369                                     value_address (val), val) == 1;
3370 }
3371
3372 \f
3373 /* Overload resolution.  */
3374
3375 /* Return the sum of the rank of A with the rank of B.  */
3376
3377 struct rank
3378 sum_ranks (struct rank a, struct rank b)
3379 {
3380   struct rank c;
3381   c.rank = a.rank + b.rank;
3382   c.subrank = a.subrank + b.subrank;
3383   return c;
3384 }
3385
3386 /* Compare rank A and B and return:
3387    0 if a = b
3388    1 if a is better than b
3389   -1 if b is better than a.  */
3390
3391 int
3392 compare_ranks (struct rank a, struct rank b)
3393 {
3394   if (a.rank == b.rank)
3395     {
3396       if (a.subrank == b.subrank)
3397         return 0;
3398       if (a.subrank < b.subrank)
3399         return 1;
3400       if (a.subrank > b.subrank)
3401         return -1;
3402     }
3403
3404   if (a.rank < b.rank)
3405     return 1;
3406
3407   /* a.rank > b.rank */
3408   return -1;
3409 }
3410
3411 /* Functions for overload resolution begin here.  */
3412
3413 /* Compare two badness vectors A and B and return the result.
3414    0 => A and B are identical
3415    1 => A and B are incomparable
3416    2 => A is better than B
3417    3 => A is worse than B  */
3418
3419 int
3420 compare_badness (struct badness_vector *a, struct badness_vector *b)
3421 {
3422   int i;
3423   int tmp;
3424   short found_pos = 0;          /* any positives in c? */
3425   short found_neg = 0;          /* any negatives in c? */
3426
3427   /* differing lengths => incomparable */
3428   if (a->length != b->length)
3429     return 1;
3430
3431   /* Subtract b from a */
3432   for (i = 0; i < a->length; i++)
3433     {
3434       tmp = compare_ranks (b->rank[i], a->rank[i]);
3435       if (tmp > 0)
3436         found_pos = 1;
3437       else if (tmp < 0)
3438         found_neg = 1;
3439     }
3440
3441   if (found_pos)
3442     {
3443       if (found_neg)
3444         return 1;               /* incomparable */
3445       else
3446         return 3;               /* A > B */
3447     }
3448   else
3449     /* no positives */
3450     {
3451       if (found_neg)
3452         return 2;               /* A < B */
3453       else
3454         return 0;               /* A == B */
3455     }
3456 }
3457
3458 /* Rank a function by comparing its parameter types (PARMS, length
3459    NPARMS), to the types of an argument list (ARGS, length NARGS).
3460    Return a pointer to a badness vector.  This has NARGS + 1
3461    entries.  */
3462
3463 struct badness_vector *
3464 rank_function (struct type **parms, int nparms, 
3465                struct value **args, int nargs)
3466 {
3467   int i;
3468   struct badness_vector *bv = XNEW (struct badness_vector);
3469   int min_len = nparms < nargs ? nparms : nargs;
3470
3471   bv->length = nargs + 1;       /* add 1 for the length-match rank.  */
3472   bv->rank = XNEWVEC (struct rank, nargs + 1);
3473
3474   /* First compare the lengths of the supplied lists.
3475      If there is a mismatch, set it to a high value.  */
3476
3477   /* pai/1997-06-03 FIXME: when we have debug info about default
3478      arguments and ellipsis parameter lists, we should consider those
3479      and rank the length-match more finely.  */
3480
3481   LENGTH_MATCH (bv) = (nargs != nparms)
3482                       ? LENGTH_MISMATCH_BADNESS
3483                       : EXACT_MATCH_BADNESS;
3484
3485   /* Now rank all the parameters of the candidate function.  */
3486   for (i = 1; i <= min_len; i++)
3487     bv->rank[i] = rank_one_type (parms[i - 1], value_type (args[i - 1]),
3488                                  args[i - 1]);
3489
3490   /* If more arguments than parameters, add dummy entries.  */
3491   for (i = min_len + 1; i <= nargs; i++)
3492     bv->rank[i] = TOO_FEW_PARAMS_BADNESS;
3493
3494   return bv;
3495 }
3496
3497 /* Compare the names of two integer types, assuming that any sign
3498    qualifiers have been checked already.  We do it this way because
3499    there may be an "int" in the name of one of the types.  */
3500
3501 static int
3502 integer_types_same_name_p (const char *first, const char *second)
3503 {
3504   int first_p, second_p;
3505
3506   /* If both are shorts, return 1; if neither is a short, keep
3507      checking.  */
3508   first_p = (strstr (first, "short") != NULL);
3509   second_p = (strstr (second, "short") != NULL);
3510   if (first_p && second_p)
3511     return 1;
3512   if (first_p || second_p)
3513     return 0;
3514
3515   /* Likewise for long.  */
3516   first_p = (strstr (first, "long") != NULL);
3517   second_p = (strstr (second, "long") != NULL);
3518   if (first_p && second_p)
3519     return 1;
3520   if (first_p || second_p)
3521     return 0;
3522
3523   /* Likewise for char.  */
3524   first_p = (strstr (first, "char") != NULL);
3525   second_p = (strstr (second, "char") != NULL);
3526   if (first_p && second_p)
3527     return 1;
3528   if (first_p || second_p)
3529     return 0;
3530
3531   /* They must both be ints.  */
3532   return 1;
3533 }
3534
3535 /* Compares type A to type B.  Returns true if they represent the same
3536    type, false otherwise.  */
3537
3538 bool
3539 types_equal (struct type *a, struct type *b)
3540 {
3541   /* Identical type pointers.  */
3542   /* However, this still doesn't catch all cases of same type for b
3543      and a.  The reason is that builtin types are different from
3544      the same ones constructed from the object.  */
3545   if (a == b)
3546     return true;
3547
3548   /* Resolve typedefs */
3549   if (TYPE_CODE (a) == TYPE_CODE_TYPEDEF)
3550     a = check_typedef (a);
3551   if (TYPE_CODE (b) == TYPE_CODE_TYPEDEF)
3552     b = check_typedef (b);
3553
3554   /* If after resolving typedefs a and b are not of the same type
3555      code then they are not equal.  */
3556   if (TYPE_CODE (a) != TYPE_CODE (b))
3557     return false;
3558
3559   /* If a and b are both pointers types or both reference types then
3560      they are equal of the same type iff the objects they refer to are
3561      of the same type.  */
3562   if (TYPE_CODE (a) == TYPE_CODE_PTR
3563       || TYPE_CODE (a) == TYPE_CODE_REF)
3564     return types_equal (TYPE_TARGET_TYPE (a),
3565                         TYPE_TARGET_TYPE (b));
3566
3567   /* Well, damnit, if the names are exactly the same, I'll say they
3568      are exactly the same.  This happens when we generate method
3569      stubs.  The types won't point to the same address, but they
3570      really are the same.  */
3571
3572   if (TYPE_NAME (a) && TYPE_NAME (b)
3573       && strcmp (TYPE_NAME (a), TYPE_NAME (b)) == 0)
3574     return true;
3575
3576   /* Check if identical after resolving typedefs.  */
3577   if (a == b)
3578     return true;
3579
3580   /* Two function types are equal if their argument and return types
3581      are equal.  */
3582   if (TYPE_CODE (a) == TYPE_CODE_FUNC)
3583     {
3584       int i;
3585
3586       if (TYPE_NFIELDS (a) != TYPE_NFIELDS (b))
3587         return false;
3588       
3589       if (!types_equal (TYPE_TARGET_TYPE (a), TYPE_TARGET_TYPE (b)))
3590         return false;
3591
3592       for (i = 0; i < TYPE_NFIELDS (a); ++i)
3593         if (!types_equal (TYPE_FIELD_TYPE (a, i), TYPE_FIELD_TYPE (b, i)))
3594           return false;
3595
3596       return true;
3597     }
3598
3599   return false;
3600 }
3601 \f
3602 /* Deep comparison of types.  */
3603
3604 /* An entry in the type-equality bcache.  */
3605
3606 struct type_equality_entry
3607 {
3608   type_equality_entry (struct type *t1, struct type *t2)
3609     : type1 (t1),
3610       type2 (t2)
3611   {
3612   }
3613
3614   struct type *type1, *type2;
3615 };
3616
3617 /* A helper function to compare two strings.  Returns true if they are
3618    the same, false otherwise.  Handles NULLs properly.  */
3619
3620 static bool
3621 compare_maybe_null_strings (const char *s, const char *t)
3622 {
3623   if (s == NULL || t == NULL)
3624     return s == t;
3625   return strcmp (s, t) == 0;
3626 }
3627
3628 /* A helper function for check_types_worklist that checks two types for
3629    "deep" equality.  Returns true if the types are considered the
3630    same, false otherwise.  */
3631
3632 static bool
3633 check_types_equal (struct type *type1, struct type *type2,
3634                    std::vector<type_equality_entry> *worklist)
3635 {
3636   type1 = check_typedef (type1);
3637   type2 = check_typedef (type2);
3638
3639   if (type1 == type2)
3640     return true;
3641
3642   if (TYPE_CODE (type1) != TYPE_CODE (type2)
3643       || TYPE_LENGTH (type1) != TYPE_LENGTH (type2)
3644       || TYPE_UNSIGNED (type1) != TYPE_UNSIGNED (type2)
3645       || TYPE_NOSIGN (type1) != TYPE_NOSIGN (type2)
3646       || TYPE_VARARGS (type1) != TYPE_VARARGS (type2)
3647       || TYPE_VECTOR (type1) != TYPE_VECTOR (type2)
3648       || TYPE_NOTTEXT (type1) != TYPE_NOTTEXT (type2)
3649       || TYPE_INSTANCE_FLAGS (type1) != TYPE_INSTANCE_FLAGS (type2)
3650       || TYPE_NFIELDS (type1) != TYPE_NFIELDS (type2))
3651     return false;
3652
3653   if (!compare_maybe_null_strings (TYPE_NAME (type1), TYPE_NAME (type2)))
3654     return false;
3655   if (!compare_maybe_null_strings (TYPE_NAME (type1), TYPE_NAME (type2)))
3656     return false;
3657
3658   if (TYPE_CODE (type1) == TYPE_CODE_RANGE)
3659     {
3660       if (*TYPE_RANGE_DATA (type1) != *TYPE_RANGE_DATA (type2))
3661         return false;
3662     }
3663   else
3664     {
3665       int i;
3666
3667       for (i = 0; i < TYPE_NFIELDS (type1); ++i)
3668         {
3669           const struct field *field1 = &TYPE_FIELD (type1, i);
3670           const struct field *field2 = &TYPE_FIELD (type2, i);
3671
3672           if (FIELD_ARTIFICIAL (*field1) != FIELD_ARTIFICIAL (*field2)
3673               || FIELD_BITSIZE (*field1) != FIELD_BITSIZE (*field2)
3674               || FIELD_LOC_KIND (*field1) != FIELD_LOC_KIND (*field2))
3675             return false;
3676           if (!compare_maybe_null_strings (FIELD_NAME (*field1),
3677                                            FIELD_NAME (*field2)))
3678             return false;
3679           switch (FIELD_LOC_KIND (*field1))
3680             {
3681             case FIELD_LOC_KIND_BITPOS:
3682               if (FIELD_BITPOS (*field1) != FIELD_BITPOS (*field2))
3683                 return false;
3684               break;
3685             case FIELD_LOC_KIND_ENUMVAL:
3686               if (FIELD_ENUMVAL (*field1) != FIELD_ENUMVAL (*field2))
3687                 return false;
3688               break;
3689             case FIELD_LOC_KIND_PHYSADDR:
3690               if (FIELD_STATIC_PHYSADDR (*field1)
3691                   != FIELD_STATIC_PHYSADDR (*field2))
3692                 return false;
3693               break;
3694             case FIELD_LOC_KIND_PHYSNAME:
3695               if (!compare_maybe_null_strings (FIELD_STATIC_PHYSNAME (*field1),
3696                                                FIELD_STATIC_PHYSNAME (*field2)))
3697                 return false;
3698               break;
3699             case FIELD_LOC_KIND_DWARF_BLOCK:
3700               {
3701                 struct dwarf2_locexpr_baton *block1, *block2;
3702
3703                 block1 = FIELD_DWARF_BLOCK (*field1);
3704                 block2 = FIELD_DWARF_BLOCK (*field2);
3705                 if (block1->per_cu != block2->per_cu
3706                     || block1->size != block2->size
3707                     || memcmp (block1->data, block2->data, block1->size) != 0)
3708                   return false;
3709               }
3710               break;
3711             default:
3712               internal_error (__FILE__, __LINE__, _("Unsupported field kind "
3713                                                     "%d by check_types_equal"),
3714                               FIELD_LOC_KIND (*field1));
3715             }
3716
3717           worklist->emplace_back (FIELD_TYPE (*field1), FIELD_TYPE (*field2));
3718         }
3719     }
3720
3721   if (TYPE_TARGET_TYPE (type1) != NULL)
3722     {
3723       if (TYPE_TARGET_TYPE (type2) == NULL)
3724         return false;
3725
3726       worklist->emplace_back (TYPE_TARGET_TYPE (type1),
3727                               TYPE_TARGET_TYPE (type2));
3728     }
3729   else if (TYPE_TARGET_TYPE (type2) != NULL)
3730     return false;
3731
3732   return true;
3733 }
3734
3735 /* Check types on a worklist for equality.  Returns false if any pair
3736    is not equal, true if they are all considered equal.  */
3737
3738 static bool
3739 check_types_worklist (std::vector<type_equality_entry> *worklist,
3740                       struct bcache *cache)
3741 {
3742   while (!worklist->empty ())
3743     {
3744       int added;
3745
3746       struct type_equality_entry entry = std::move (worklist->back ());
3747       worklist->pop_back ();
3748
3749       /* If the type pair has already been visited, we know it is
3750          ok.  */
3751       bcache_full (&entry, sizeof (entry), cache, &added);
3752       if (!added)
3753         continue;
3754
3755       if (!check_types_equal (entry.type1, entry.type2, worklist))
3756         return false;
3757     }
3758
3759   return true;
3760 }
3761
3762 /* Return true if types TYPE1 and TYPE2 are equal, as determined by a
3763    "deep comparison".  Otherwise return false.  */
3764
3765 bool
3766 types_deeply_equal (struct type *type1, struct type *type2)
3767 {
3768   struct gdb_exception except = exception_none;
3769   bool result = false;
3770   struct bcache *cache;
3771   std::vector<type_equality_entry> worklist;
3772
3773   gdb_assert (type1 != NULL && type2 != NULL);
3774
3775   /* Early exit for the simple case.  */
3776   if (type1 == type2)
3777     return true;
3778
3779   cache = bcache_xmalloc (NULL, NULL);
3780
3781   worklist.emplace_back (type1, type2);
3782
3783   /* check_types_worklist calls several nested helper functions, some
3784      of which can raise a GDB exception, so we just check and rethrow
3785      here.  If there is a GDB exception, a comparison is not capable
3786      (or trusted), so exit.  */
3787   TRY
3788     {
3789       result = check_types_worklist (&worklist, cache);
3790     }
3791   CATCH (ex, RETURN_MASK_ALL)
3792     {
3793       except = ex;
3794     }
3795   END_CATCH
3796
3797   bcache_xfree (cache);
3798
3799   /* Rethrow if there was a problem.  */
3800   if (except.reason < 0)
3801     throw_exception (except);
3802
3803   return result;
3804 }
3805
3806 /* Allocated status of type TYPE.  Return zero if type TYPE is allocated.
3807    Otherwise return one.  */
3808
3809 int
3810 type_not_allocated (const struct type *type)
3811 {
3812   struct dynamic_prop *prop = TYPE_ALLOCATED_PROP (type);
3813
3814   return (prop && TYPE_DYN_PROP_KIND (prop) == PROP_CONST
3815          && !TYPE_DYN_PROP_ADDR (prop));
3816 }
3817
3818 /* Associated status of type TYPE.  Return zero if type TYPE is associated.
3819    Otherwise return one.  */
3820
3821 int
3822 type_not_associated (const struct type *type)
3823 {
3824   struct dynamic_prop *prop = TYPE_ASSOCIATED_PROP (type);
3825
3826   return (prop && TYPE_DYN_PROP_KIND (prop) == PROP_CONST
3827          && !TYPE_DYN_PROP_ADDR (prop));
3828 }
3829 \f
3830 /* Compare one type (PARM) for compatibility with another (ARG).
3831  * PARM is intended to be the parameter type of a function; and
3832  * ARG is the supplied argument's type.  This function tests if
3833  * the latter can be converted to the former.
3834  * VALUE is the argument's value or NULL if none (or called recursively)
3835  *
3836  * Return 0 if they are identical types;
3837  * Otherwise, return an integer which corresponds to how compatible
3838  * PARM is to ARG.  The higher the return value, the worse the match.
3839  * Generally the "bad" conversions are all uniformly assigned a 100.  */
3840
3841 struct rank
3842 rank_one_type (struct type *parm, struct type *arg, struct value *value)
3843 {
3844   struct rank rank = {0,0};
3845
3846   /* Resolve typedefs */
3847   if (TYPE_CODE (parm) == TYPE_CODE_TYPEDEF)
3848     parm = check_typedef (parm);
3849   if (TYPE_CODE (arg) == TYPE_CODE_TYPEDEF)
3850     arg = check_typedef (arg);
3851
3852   if (TYPE_IS_REFERENCE (parm) && value != NULL)
3853     {
3854       if (VALUE_LVAL (value) == not_lval)
3855         {
3856           /* Rvalues should preferably bind to rvalue references or const
3857              lvalue references.  */
3858           if (TYPE_CODE (parm) == TYPE_CODE_RVALUE_REF)
3859             rank.subrank = REFERENCE_CONVERSION_RVALUE;
3860           else if (TYPE_CONST (TYPE_TARGET_TYPE (parm)))
3861             rank.subrank = REFERENCE_CONVERSION_CONST_LVALUE;
3862           else
3863             return INCOMPATIBLE_TYPE_BADNESS;
3864           return sum_ranks (rank, REFERENCE_CONVERSION_BADNESS);
3865         }
3866       else
3867         {
3868           /* Lvalues should prefer lvalue overloads.  */
3869           if (TYPE_CODE (parm) == TYPE_CODE_RVALUE_REF)
3870             {
3871               rank.subrank = REFERENCE_CONVERSION_RVALUE;
3872               return sum_ranks (rank, REFERENCE_CONVERSION_BADNESS);
3873             }
3874         }
3875     }
3876
3877   if (types_equal (parm, arg))
3878     {
3879       struct type *t1 = parm;
3880       struct type *t2 = arg;
3881
3882       /* For pointers and references, compare target type.  */
3883       if (TYPE_CODE (parm) == TYPE_CODE_PTR || TYPE_IS_REFERENCE (parm))
3884         {
3885           t1 = TYPE_TARGET_TYPE (parm);
3886           t2 = TYPE_TARGET_TYPE (arg);
3887         }
3888
3889       /* Make sure they are CV equal, too.  */
3890       if (TYPE_CONST (t1) != TYPE_CONST (t2))
3891         rank.subrank |= CV_CONVERSION_CONST;
3892       if (TYPE_VOLATILE (t1) != TYPE_VOLATILE (t2))
3893         rank.subrank |= CV_CONVERSION_VOLATILE;
3894       if (rank.subrank != 0)
3895         return sum_ranks (CV_CONVERSION_BADNESS, rank);
3896       return EXACT_MATCH_BADNESS;
3897     }
3898
3899   /* See through references, since we can almost make non-references
3900      references.  */
3901
3902   if (TYPE_IS_REFERENCE (arg))
3903     return (sum_ranks (rank_one_type (parm, TYPE_TARGET_TYPE (arg), NULL),
3904                        REFERENCE_CONVERSION_BADNESS));
3905   if (TYPE_IS_REFERENCE (parm))
3906     return (sum_ranks (rank_one_type (TYPE_TARGET_TYPE (parm), arg, NULL),
3907                        REFERENCE_CONVERSION_BADNESS));
3908   if (overload_debug)
3909   /* Debugging only.  */
3910     fprintf_filtered (gdb_stderr, 
3911                       "------ Arg is %s [%d], parm is %s [%d]\n",
3912                       TYPE_NAME (arg), TYPE_CODE (arg), 
3913                       TYPE_NAME (parm), TYPE_CODE (parm));
3914
3915   /* x -> y means arg of type x being supplied for parameter of type y.  */
3916
3917   switch (TYPE_CODE (parm))
3918     {
3919     case TYPE_CODE_PTR:
3920       switch (TYPE_CODE (arg))
3921         {
3922         case TYPE_CODE_PTR:
3923
3924           /* Allowed pointer conversions are:
3925              (a) pointer to void-pointer conversion.  */
3926           if (TYPE_CODE (TYPE_TARGET_TYPE (parm)) == TYPE_CODE_VOID)
3927             return VOID_PTR_CONVERSION_BADNESS;
3928
3929           /* (b) pointer to ancestor-pointer conversion.  */
3930           rank.subrank = distance_to_ancestor (TYPE_TARGET_TYPE (parm),
3931                                                TYPE_TARGET_TYPE (arg),
3932                                                0);
3933           if (rank.subrank >= 0)
3934             return sum_ranks (BASE_PTR_CONVERSION_BADNESS, rank);
3935
3936           return INCOMPATIBLE_TYPE_BADNESS;
3937         case TYPE_CODE_ARRAY:
3938           {
3939             struct type *t1 = TYPE_TARGET_TYPE (parm);
3940             struct type *t2 = TYPE_TARGET_TYPE (arg);
3941
3942             if (types_equal (t1, t2))
3943               {
3944                 /* Make sure they are CV equal.  */
3945                 if (TYPE_CONST (t1) != TYPE_CONST (t2))
3946                   rank.subrank |= CV_CONVERSION_CONST;
3947                 if (TYPE_VOLATILE (t1) != TYPE_VOLATILE (t2))
3948                   rank.subrank |= CV_CONVERSION_VOLATILE;
3949                 if (rank.subrank != 0)
3950                   return sum_ranks (CV_CONVERSION_BADNESS, rank);
3951                 return EXACT_MATCH_BADNESS;
3952               }
3953             return INCOMPATIBLE_TYPE_BADNESS;
3954           }
3955         case TYPE_CODE_FUNC:
3956           return rank_one_type (TYPE_TARGET_TYPE (parm), arg, NULL);
3957         case TYPE_CODE_INT:
3958           if (value != NULL && TYPE_CODE (value_type (value)) == TYPE_CODE_INT)
3959             {
3960               if (value_as_long (value) == 0)
3961                 {
3962                   /* Null pointer conversion: allow it to be cast to a pointer.
3963                      [4.10.1 of C++ standard draft n3290]  */
3964                   return NULL_POINTER_CONVERSION_BADNESS;
3965                 }
3966               else
3967                 {
3968                   /* If type checking is disabled, allow the conversion.  */
3969                   if (!strict_type_checking)
3970                     return NS_INTEGER_POINTER_CONVERSION_BADNESS;
3971                 }
3972             }
3973           /* fall through  */
3974         case TYPE_CODE_ENUM:
3975         case TYPE_CODE_FLAGS:
3976         case TYPE_CODE_CHAR:
3977         case TYPE_CODE_RANGE:
3978         case TYPE_CODE_BOOL:
3979         default:
3980           return INCOMPATIBLE_TYPE_BADNESS;
3981         }
3982     case TYPE_CODE_ARRAY:
3983       switch (TYPE_CODE (arg))
3984         {
3985         case TYPE_CODE_PTR:
3986         case TYPE_CODE_ARRAY:
3987           return rank_one_type (TYPE_TARGET_TYPE (parm), 
3988                                 TYPE_TARGET_TYPE (arg), NULL);
3989         default:
3990           return INCOMPATIBLE_TYPE_BADNESS;
3991         }
3992     case TYPE_CODE_FUNC:
3993       switch (TYPE_CODE (arg))
3994         {
3995         case TYPE_CODE_PTR:     /* funcptr -> func */
3996           return rank_one_type (parm, TYPE_TARGET_TYPE (arg), NULL);
3997         default:
3998           return INCOMPATIBLE_TYPE_BADNESS;
3999         }
4000     case TYPE_CODE_INT:
4001       switch (TYPE_CODE (arg))
4002         {
4003         case TYPE_CODE_INT:
4004           if (TYPE_LENGTH (arg) == TYPE_LENGTH (parm))
4005             {
4006               /* Deal with signed, unsigned, and plain chars and
4007                  signed and unsigned ints.  */
4008               if (TYPE_NOSIGN (parm))
4009                 {
4010                   /* This case only for character types.  */
4011                   if (TYPE_NOSIGN (arg))
4012                     return EXACT_MATCH_BADNESS; /* plain char -> plain char */
4013                   else          /* signed/unsigned char -> plain char */
4014                     return INTEGER_CONVERSION_BADNESS;
4015                 }
4016               else if (TYPE_UNSIGNED (parm))
4017                 {
4018                   if (TYPE_UNSIGNED (arg))
4019                     {
4020                       /* unsigned int -> unsigned int, or 
4021                          unsigned long -> unsigned long */
4022                       if (integer_types_same_name_p (TYPE_NAME (parm), 
4023                                                      TYPE_NAME (arg)))
4024                         return EXACT_MATCH_BADNESS;
4025                       else if (integer_types_same_name_p (TYPE_NAME (arg), 
4026                                                           "int")
4027                                && integer_types_same_name_p (TYPE_NAME (parm),
4028                                                              "long"))
4029                         /* unsigned int -> unsigned long */
4030                         return INTEGER_PROMOTION_BADNESS;
4031                       else
4032                         /* unsigned long -> unsigned int */
4033                         return INTEGER_CONVERSION_BADNESS;
4034                     }
4035                   else
4036                     {
4037                       if (integer_types_same_name_p (TYPE_NAME (arg), 
4038                                                      "long")
4039                           && integer_types_same_name_p (TYPE_NAME (parm), 
4040                                                         "int"))
4041                         /* signed long -> unsigned int */
4042                         return INTEGER_CONVERSION_BADNESS;
4043                       else
4044                         /* signed int/long -> unsigned int/long */
4045                         return INTEGER_CONVERSION_BADNESS;
4046                     }
4047                 }
4048               else if (!TYPE_NOSIGN (arg) && !TYPE_UNSIGNED (arg))
4049                 {
4050                   if (integer_types_same_name_p (TYPE_NAME (parm), 
4051                                                  TYPE_NAME (arg)))
4052                     return EXACT_MATCH_BADNESS;
4053                   else if (integer_types_same_name_p (TYPE_NAME (arg), 
4054                                                       "int")
4055                            && integer_types_same_name_p (TYPE_NAME (parm), 
4056                                                          "long"))
4057                     return INTEGER_PROMOTION_BADNESS;
4058                   else
4059                     return INTEGER_CONVERSION_BADNESS;
4060                 }
4061               else
4062                 return INTEGER_CONVERSION_BADNESS;
4063             }
4064           else if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
4065             return INTEGER_PROMOTION_BADNESS;
4066           else
4067             return INTEGER_CONVERSION_BADNESS;
4068         case TYPE_CODE_ENUM:
4069         case TYPE_CODE_FLAGS:
4070         case TYPE_CODE_CHAR:
4071         case TYPE_CODE_RANGE:
4072         case TYPE_CODE_BOOL:
4073           if (TYPE_DECLARED_CLASS (arg))
4074             return INCOMPATIBLE_TYPE_BADNESS;
4075           return INTEGER_PROMOTION_BADNESS;
4076         case TYPE_CODE_FLT:
4077           return INT_FLOAT_CONVERSION_BADNESS;
4078         case TYPE_CODE_PTR:
4079           return NS_POINTER_CONVERSION_BADNESS;
4080         default:
4081           return INCOMPATIBLE_TYPE_BADNESS;
4082         }
4083       break;
4084     case TYPE_CODE_ENUM:
4085       switch (TYPE_CODE (arg))
4086         {
4087         case TYPE_CODE_INT:
4088         case TYPE_CODE_CHAR:
4089         case TYPE_CODE_RANGE:
4090         case TYPE_CODE_BOOL:
4091         case TYPE_CODE_ENUM:
4092           if (TYPE_DECLARED_CLASS (parm) || TYPE_DECLARED_CLASS (arg))
4093             return INCOMPATIBLE_TYPE_BADNESS;
4094           return INTEGER_CONVERSION_BADNESS;
4095         case TYPE_CODE_FLT:
4096           return INT_FLOAT_CONVERSION_BADNESS;
4097         default:
4098           return INCOMPATIBLE_TYPE_BADNESS;
4099         }
4100       break;
4101     case TYPE_CODE_CHAR:
4102       switch (TYPE_CODE (arg))
4103         {
4104         case TYPE_CODE_RANGE:
4105         case TYPE_CODE_BOOL:
4106         case TYPE_CODE_ENUM:
4107           if (TYPE_DECLARED_CLASS (arg))
4108             return INCOMPATIBLE_TYPE_BADNESS;
4109           return INTEGER_CONVERSION_BADNESS;
4110         case TYPE_CODE_FLT:
4111           return INT_FLOAT_CONVERSION_BADNESS;
4112         case TYPE_CODE_INT:
4113           if (TYPE_LENGTH (arg) > TYPE_LENGTH (parm))
4114             return INTEGER_CONVERSION_BADNESS;
4115           else if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
4116             return INTEGER_PROMOTION_BADNESS;
4117           /* fall through */
4118         case TYPE_CODE_CHAR:
4119           /* Deal with signed, unsigned, and plain chars for C++ and
4120              with int cases falling through from previous case.  */
4121           if (TYPE_NOSIGN (parm))
4122             {
4123               if (TYPE_NOSIGN (arg))
4124                 return EXACT_MATCH_BADNESS;
4125               else
4126                 return INTEGER_CONVERSION_BADNESS;
4127             }
4128           else if (TYPE_UNSIGNED (parm))
4129             {
4130               if (TYPE_UNSIGNED (arg))
4131                 return EXACT_MATCH_BADNESS;
4132               else
4133                 return INTEGER_PROMOTION_BADNESS;
4134             }
4135           else if (!TYPE_NOSIGN (arg) && !TYPE_UNSIGNED (arg))
4136             return EXACT_MATCH_BADNESS;
4137           else
4138             return INTEGER_CONVERSION_BADNESS;
4139         default:
4140           return INCOMPATIBLE_TYPE_BADNESS;
4141         }
4142       break;
4143     case TYPE_CODE_RANGE:
4144       switch (TYPE_CODE (arg))
4145         {
4146         case TYPE_CODE_INT:
4147         case TYPE_CODE_CHAR:
4148         case TYPE_CODE_RANGE:
4149         case TYPE_CODE_BOOL:
4150         case TYPE_CODE_ENUM:
4151           return INTEGER_CONVERSION_BADNESS;
4152         case TYPE_CODE_FLT:
4153           return INT_FLOAT_CONVERSION_BADNESS;
4154         default:
4155           return INCOMPATIBLE_TYPE_BADNESS;
4156         }
4157       break;
4158     case TYPE_CODE_BOOL:
4159       switch (TYPE_CODE (arg))
4160         {
4161           /* n3290 draft, section 4.12.1 (conv.bool):
4162
4163              "A prvalue of arithmetic, unscoped enumeration, pointer, or
4164              pointer to member type can be converted to a prvalue of type
4165              bool.  A zero value, null pointer value, or null member pointer
4166              value is converted to false; any other value is converted to
4167              true.  A prvalue of type std::nullptr_t can be converted to a
4168              prvalue of type bool; the resulting value is false."  */
4169         case TYPE_CODE_INT:
4170         case TYPE_CODE_CHAR:
4171         case TYPE_CODE_ENUM:
4172         case TYPE_CODE_FLT:
4173         case TYPE_CODE_MEMBERPTR:
4174         case TYPE_CODE_PTR:
4175           return BOOL_CONVERSION_BADNESS;
4176         case TYPE_CODE_RANGE:
4177           return INCOMPATIBLE_TYPE_BADNESS;
4178         case TYPE_CODE_BOOL:
4179           return EXACT_MATCH_BADNESS;
4180         default:
4181           return INCOMPATIBLE_TYPE_BADNESS;
4182         }
4183       break;
4184     case TYPE_CODE_FLT:
4185       switch (TYPE_CODE (arg))
4186         {
4187         case TYPE_CODE_FLT:
4188           if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
4189             return FLOAT_PROMOTION_BADNESS;
4190           else if (TYPE_LENGTH (arg) == TYPE_LENGTH (parm))
4191             return EXACT_MATCH_BADNESS;
4192           else
4193             return FLOAT_CONVERSION_BADNESS;
4194         case TYPE_CODE_INT:
4195         case TYPE_CODE_BOOL:
4196         case TYPE_CODE_ENUM:
4197         case TYPE_CODE_RANGE:
4198         case TYPE_CODE_CHAR:
4199           return INT_FLOAT_CONVERSION_BADNESS;
4200         default:
4201           return INCOMPATIBLE_TYPE_BADNESS;
4202         }
4203       break;
4204     case TYPE_CODE_COMPLEX:
4205       switch (TYPE_CODE (arg))
4206         {               /* Strictly not needed for C++, but...  */
4207         case TYPE_CODE_FLT:
4208           return FLOAT_PROMOTION_BADNESS;
4209         case TYPE_CODE_COMPLEX:
4210           return EXACT_MATCH_BADNESS;
4211         default:
4212           return INCOMPATIBLE_TYPE_BADNESS;
4213         }
4214       break;
4215     case TYPE_CODE_STRUCT:
4216       switch (TYPE_CODE (arg))
4217         {
4218         case TYPE_CODE_STRUCT:
4219           /* Check for derivation */
4220           rank.subrank = distance_to_ancestor (parm, arg, 0);
4221           if (rank.subrank >= 0)
4222             return sum_ranks (BASE_CONVERSION_BADNESS, rank);
4223           /* fall through */
4224         default:
4225           return INCOMPATIBLE_TYPE_BADNESS;
4226         }
4227       break;
4228     case TYPE_CODE_UNION:
4229       switch (TYPE_CODE (arg))
4230         {
4231         case TYPE_CODE_UNION:
4232         default:
4233           return INCOMPATIBLE_TYPE_BADNESS;
4234         }
4235       break;
4236     case TYPE_CODE_MEMBERPTR:
4237       switch (TYPE_CODE (arg))
4238         {
4239         default:
4240           return INCOMPATIBLE_TYPE_BADNESS;
4241         }
4242       break;
4243     case TYPE_CODE_METHOD:
4244       switch (TYPE_CODE (arg))
4245         {
4246
4247         default:
4248           return INCOMPATIBLE_TYPE_BADNESS;
4249         }
4250       break;
4251     case TYPE_CODE_REF:
4252       switch (TYPE_CODE (arg))
4253         {
4254
4255         default:
4256           return INCOMPATIBLE_TYPE_BADNESS;
4257         }
4258
4259       break;
4260     case TYPE_CODE_SET:
4261       switch (TYPE_CODE (arg))
4262         {
4263           /* Not in C++ */
4264         case TYPE_CODE_SET:
4265           return rank_one_type (TYPE_FIELD_TYPE (parm, 0), 
4266                                 TYPE_FIELD_TYPE (arg, 0), NULL);
4267         default:
4268           return INCOMPATIBLE_TYPE_BADNESS;
4269         }
4270       break;
4271     case TYPE_CODE_VOID:
4272     default:
4273       return INCOMPATIBLE_TYPE_BADNESS;
4274     }                           /* switch (TYPE_CODE (arg)) */
4275 }
4276
4277 /* End of functions for overload resolution.  */
4278 \f
4279 /* Routines to pretty-print types.  */
4280
4281 static void
4282 print_bit_vector (B_TYPE *bits, int nbits)
4283 {
4284   int bitno;
4285
4286   for (bitno = 0; bitno < nbits; bitno++)
4287     {
4288       if ((bitno % 8) == 0)
4289         {
4290           puts_filtered (" ");
4291         }
4292       if (B_TST (bits, bitno))
4293         printf_filtered (("1"));
4294       else
4295         printf_filtered (("0"));
4296     }
4297 }
4298
4299 /* Note the first arg should be the "this" pointer, we may not want to
4300    include it since we may get into a infinitely recursive
4301    situation.  */
4302
4303 static void
4304 print_args (struct field *args, int nargs, int spaces)
4305 {
4306   if (args != NULL)
4307     {
4308       int i;
4309
4310       for (i = 0; i < nargs; i++)
4311         {
4312           printfi_filtered (spaces, "[%d] name '%s'\n", i,
4313                             args[i].name != NULL ? args[i].name : "<NULL>");
4314           recursive_dump_type (args[i].type, spaces + 2);
4315         }
4316     }
4317 }
4318
4319 int
4320 field_is_static (struct field *f)
4321 {
4322   /* "static" fields are the fields whose location is not relative
4323      to the address of the enclosing struct.  It would be nice to
4324      have a dedicated flag that would be set for static fields when
4325      the type is being created.  But in practice, checking the field
4326      loc_kind should give us an accurate answer.  */
4327   return (FIELD_LOC_KIND (*f) == FIELD_LOC_KIND_PHYSNAME
4328           || FIELD_LOC_KIND (*f) == FIELD_LOC_KIND_PHYSADDR);
4329 }
4330
4331 static void
4332 dump_fn_fieldlists (struct type *type, int spaces)
4333 {
4334   int method_idx;
4335   int overload_idx;
4336   struct fn_field *f;
4337
4338   printfi_filtered (spaces, "fn_fieldlists ");
4339   gdb_print_host_address (TYPE_FN_FIELDLISTS (type), gdb_stdout);
4340   printf_filtered ("\n");
4341   for (method_idx = 0; method_idx < TYPE_NFN_FIELDS (type); method_idx++)
4342     {
4343       f = TYPE_FN_FIELDLIST1 (type, method_idx);
4344       printfi_filtered (spaces + 2, "[%d] name '%s' (",
4345                         method_idx,
4346                         TYPE_FN_FIELDLIST_NAME (type, method_idx));
4347       gdb_print_host_address (TYPE_FN_FIELDLIST_NAME (type, method_idx),
4348                               gdb_stdout);
4349       printf_filtered (_(") length %d\n"),
4350                        TYPE_FN_FIELDLIST_LENGTH (type, method_idx));
4351       for (overload_idx = 0;
4352            overload_idx < TYPE_FN_FIELDLIST_LENGTH (type, method_idx);
4353            overload_idx++)
4354         {
4355           printfi_filtered (spaces + 4, "[%d] physname '%s' (",
4356                             overload_idx,
4357                             TYPE_FN_FIELD_PHYSNAME (f, overload_idx));
4358           gdb_print_host_address (TYPE_FN_FIELD_PHYSNAME (f, overload_idx),
4359                                   gdb_stdout);
4360           printf_filtered (")\n");
4361           printfi_filtered (spaces + 8, "type ");
4362           gdb_print_host_address (TYPE_FN_FIELD_TYPE (f, overload_idx), 
4363                                   gdb_stdout);
4364           printf_filtered ("\n");
4365
4366           recursive_dump_type (TYPE_FN_FIELD_TYPE (f, overload_idx),
4367                                spaces + 8 + 2);
4368
4369           printfi_filtered (spaces + 8, "args ");
4370           gdb_print_host_address (TYPE_FN_FIELD_ARGS (f, overload_idx), 
4371                                   gdb_stdout);
4372           printf_filtered ("\n");
4373           print_args (TYPE_FN_FIELD_ARGS (f, overload_idx),
4374                       TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (f, overload_idx)),
4375                       spaces + 8 + 2);
4376           printfi_filtered (spaces + 8, "fcontext ");
4377           gdb_print_host_address (TYPE_FN_FIELD_FCONTEXT (f, overload_idx),
4378                                   gdb_stdout);
4379           printf_filtered ("\n");
4380
4381           printfi_filtered (spaces + 8, "is_const %d\n",
4382                             TYPE_FN_FIELD_CONST (f, overload_idx));
4383           printfi_filtered (spaces + 8, "is_volatile %d\n",
4384                             TYPE_FN_FIELD_VOLATILE (f, overload_idx));
4385           printfi_filtered (spaces + 8, "is_private %d\n",
4386                             TYPE_FN_FIELD_PRIVATE (f, overload_idx));
4387           printfi_filtered (spaces + 8, "is_protected %d\n",
4388                             TYPE_FN_FIELD_PROTECTED (f, overload_idx));
4389           printfi_filtered (spaces + 8, "is_stub %d\n",
4390                             TYPE_FN_FIELD_STUB (f, overload_idx));
4391           printfi_filtered (spaces + 8, "voffset %u\n",
4392                             TYPE_FN_FIELD_VOFFSET (f, overload_idx));
4393         }
4394     }
4395 }
4396
4397 static void
4398 print_cplus_stuff (struct type *type, int spaces)
4399 {
4400   printfi_filtered (spaces, "vptr_fieldno %d\n", TYPE_VPTR_FIELDNO (type));
4401   printfi_filtered (spaces, "vptr_basetype ");
4402   gdb_print_host_address (TYPE_VPTR_BASETYPE (type), gdb_stdout);
4403   puts_filtered ("\n");
4404   if (TYPE_VPTR_BASETYPE (type) != NULL)
4405     recursive_dump_type (TYPE_VPTR_BASETYPE (type), spaces + 2);
4406
4407   printfi_filtered (spaces, "n_baseclasses %d\n",
4408                     TYPE_N_BASECLASSES (type));
4409   printfi_filtered (spaces, "nfn_fields %d\n",
4410                     TYPE_NFN_FIELDS (type));
4411   if (TYPE_N_BASECLASSES (type) > 0)
4412     {
4413       printfi_filtered (spaces, "virtual_field_bits (%d bits at *",
4414                         TYPE_N_BASECLASSES (type));
4415       gdb_print_host_address (TYPE_FIELD_VIRTUAL_BITS (type), 
4416                               gdb_stdout);
4417       printf_filtered (")");
4418
4419       print_bit_vector (TYPE_FIELD_VIRTUAL_BITS (type),
4420                         TYPE_N_BASECLASSES (type));
4421       puts_filtered ("\n");
4422     }
4423   if (TYPE_NFIELDS (type) > 0)
4424     {
4425       if (TYPE_FIELD_PRIVATE_BITS (type) != NULL)
4426         {
4427           printfi_filtered (spaces, 
4428                             "private_field_bits (%d bits at *",
4429                             TYPE_NFIELDS (type));
4430           gdb_print_host_address (TYPE_FIELD_PRIVATE_BITS (type), 
4431                                   gdb_stdout);
4432           printf_filtered (")");
4433           print_bit_vector (TYPE_FIELD_PRIVATE_BITS (type),
4434                             TYPE_NFIELDS (type));
4435           puts_filtered ("\n");
4436         }
4437       if (TYPE_FIELD_PROTECTED_BITS (type) != NULL)
4438         {
4439           printfi_filtered (spaces, 
4440                             "protected_field_bits (%d bits at *",
4441                             TYPE_NFIELDS (type));
4442           gdb_print_host_address (TYPE_FIELD_PROTECTED_BITS (type), 
4443                                   gdb_stdout);
4444           printf_filtered (")");
4445           print_bit_vector (TYPE_FIELD_PROTECTED_BITS (type),
4446                             TYPE_NFIELDS (type));
4447           puts_filtered ("\n");
4448         }
4449     }
4450   if (TYPE_NFN_FIELDS (type) > 0)
4451     {
4452       dump_fn_fieldlists (type, spaces);
4453     }
4454 }
4455
4456 /* Print the contents of the TYPE's type_specific union, assuming that
4457    its type-specific kind is TYPE_SPECIFIC_GNAT_STUFF.  */
4458
4459 static void
4460 print_gnat_stuff (struct type *type, int spaces)
4461 {
4462   struct type *descriptive_type = TYPE_DESCRIPTIVE_TYPE (type);
4463
4464   if (descriptive_type == NULL)
4465     printfi_filtered (spaces + 2, "no descriptive type\n");
4466   else
4467     {
4468       printfi_filtered (spaces + 2, "descriptive type\n");
4469       recursive_dump_type (descriptive_type, spaces + 4);
4470     }
4471 }
4472
4473 static struct obstack dont_print_type_obstack;
4474
4475 void
4476 recursive_dump_type (struct type *type, int spaces)
4477 {
4478   int idx;
4479
4480   if (spaces == 0)
4481     obstack_begin (&dont_print_type_obstack, 0);
4482
4483   if (TYPE_NFIELDS (type) > 0
4484       || (HAVE_CPLUS_STRUCT (type) && TYPE_NFN_FIELDS (type) > 0))
4485     {
4486       struct type **first_dont_print
4487         = (struct type **) obstack_base (&dont_print_type_obstack);
4488
4489       int i = (struct type **) 
4490         obstack_next_free (&dont_print_type_obstack) - first_dont_print;
4491
4492       while (--i >= 0)
4493         {
4494           if (type == first_dont_print[i])
4495             {
4496               printfi_filtered (spaces, "type node ");
4497               gdb_print_host_address (type, gdb_stdout);
4498               printf_filtered (_(" <same as already seen type>\n"));
4499               return;
4500             }
4501         }
4502
4503       obstack_ptr_grow (&dont_print_type_obstack, type);
4504     }
4505
4506   printfi_filtered (spaces, "type node ");
4507   gdb_print_host_address (type, gdb_stdout);
4508   printf_filtered ("\n");
4509   printfi_filtered (spaces, "name '%s' (",
4510                     TYPE_NAME (type) ? TYPE_NAME (type) : "<NULL>");
4511   gdb_print_host_address (TYPE_NAME (type), gdb_stdout);
4512   printf_filtered (")\n");
4513   printfi_filtered (spaces, "code 0x%x ", TYPE_CODE (type));
4514   switch (TYPE_CODE (type))
4515     {
4516     case TYPE_CODE_UNDEF:
4517       printf_filtered ("(TYPE_CODE_UNDEF)");
4518       break;
4519     case TYPE_CODE_PTR:
4520       printf_filtered ("(TYPE_CODE_PTR)");
4521       break;
4522     case TYPE_CODE_ARRAY:
4523       printf_filtered ("(TYPE_CODE_ARRAY)");
4524       break;
4525     case TYPE_CODE_STRUCT:
4526       printf_filtered ("(TYPE_CODE_STRUCT)");
4527       break;
4528     case TYPE_CODE_UNION:
4529       printf_filtered ("(TYPE_CODE_UNION)");
4530       break;
4531     case TYPE_CODE_ENUM:
4532       printf_filtered ("(TYPE_CODE_ENUM)");
4533       break;
4534     case TYPE_CODE_FLAGS:
4535       printf_filtered ("(TYPE_CODE_FLAGS)");
4536       break;
4537     case TYPE_CODE_FUNC:
4538       printf_filtered ("(TYPE_CODE_FUNC)");
4539       break;
4540     case TYPE_CODE_INT:
4541       printf_filtered ("(TYPE_CODE_INT)");
4542       break;
4543     case TYPE_CODE_FLT:
4544       printf_filtered ("(TYPE_CODE_FLT)");
4545       break;
4546     case TYPE_CODE_VOID:
4547       printf_filtered ("(TYPE_CODE_VOID)");
4548       break;
4549     case TYPE_CODE_SET:
4550       printf_filtered ("(TYPE_CODE_SET)");
4551       break;
4552     case TYPE_CODE_RANGE:
4553       printf_filtered ("(TYPE_CODE_RANGE)");
4554       break;
4555     case TYPE_CODE_STRING:
4556       printf_filtered ("(TYPE_CODE_STRING)");
4557       break;
4558     case TYPE_CODE_ERROR:
4559       printf_filtered ("(TYPE_CODE_ERROR)");
4560       break;
4561     case TYPE_CODE_MEMBERPTR:
4562       printf_filtered ("(TYPE_CODE_MEMBERPTR)");
4563       break;
4564     case TYPE_CODE_METHODPTR:
4565       printf_filtered ("(TYPE_CODE_METHODPTR)");
4566       break;
4567     case TYPE_CODE_METHOD:
4568       printf_filtered ("(TYPE_CODE_METHOD)");
4569       break;
4570     case TYPE_CODE_REF:
4571       printf_filtered ("(TYPE_CODE_REF)");
4572       break;
4573     case TYPE_CODE_CHAR:
4574       printf_filtered ("(TYPE_CODE_CHAR)");
4575       break;
4576     case TYPE_CODE_BOOL:
4577       printf_filtered ("(TYPE_CODE_BOOL)");
4578       break;
4579     case TYPE_CODE_COMPLEX:
4580       printf_filtered ("(TYPE_CODE_COMPLEX)");
4581       break;
4582     case TYPE_CODE_TYPEDEF:
4583       printf_filtered ("(TYPE_CODE_TYPEDEF)");
4584       break;
4585     case TYPE_CODE_NAMESPACE:
4586       printf_filtered ("(TYPE_CODE_NAMESPACE)");
4587       break;
4588     default:
4589       printf_filtered ("(UNKNOWN TYPE CODE)");
4590       break;
4591     }
4592   puts_filtered ("\n");
4593   printfi_filtered (spaces, "length %d\n", TYPE_LENGTH (type));
4594   if (TYPE_OBJFILE_OWNED (type))
4595     {
4596       printfi_filtered (spaces, "objfile ");
4597       gdb_print_host_address (TYPE_OWNER (type).objfile, gdb_stdout);
4598     }
4599   else
4600     {
4601       printfi_filtered (spaces, "gdbarch ");
4602       gdb_print_host_address (TYPE_OWNER (type).gdbarch, gdb_stdout);
4603     }
4604   printf_filtered ("\n");
4605   printfi_filtered (spaces, "target_type ");
4606   gdb_print_host_address (TYPE_TARGET_TYPE (type), gdb_stdout);
4607   printf_filtered ("\n");
4608   if (TYPE_TARGET_TYPE (type) != NULL)
4609     {
4610       recursive_dump_type (TYPE_TARGET_TYPE (type), spaces + 2);
4611     }
4612   printfi_filtered (spaces, "pointer_type ");
4613   gdb_print_host_address (TYPE_POINTER_TYPE (type), gdb_stdout);
4614   printf_filtered ("\n");
4615   printfi_filtered (spaces, "reference_type ");
4616   gdb_print_host_address (TYPE_REFERENCE_TYPE (type), gdb_stdout);
4617   printf_filtered ("\n");
4618   printfi_filtered (spaces, "type_chain ");
4619   gdb_print_host_address (TYPE_CHAIN (type), gdb_stdout);
4620   printf_filtered ("\n");
4621   printfi_filtered (spaces, "instance_flags 0x%x", 
4622                     TYPE_INSTANCE_FLAGS (type));
4623   if (TYPE_CONST (type))
4624     {
4625       puts_filtered (" TYPE_CONST");
4626     }
4627   if (TYPE_VOLATILE (type))
4628     {
4629       puts_filtered (" TYPE_VOLATILE");
4630     }
4631   if (TYPE_CODE_SPACE (type))
4632     {
4633       puts_filtered (" TYPE_CODE_SPACE");
4634     }
4635   if (TYPE_DATA_SPACE (type))
4636     {
4637       puts_filtered (" TYPE_DATA_SPACE");
4638     }
4639   if (TYPE_ADDRESS_CLASS_1 (type))
4640     {
4641       puts_filtered (" TYPE_ADDRESS_CLASS_1");
4642     }
4643   if (TYPE_ADDRESS_CLASS_2 (type))
4644     {
4645       puts_filtered (" TYPE_ADDRESS_CLASS_2");
4646     }
4647   if (TYPE_RESTRICT (type))
4648     {
4649       puts_filtered (" TYPE_RESTRICT");
4650     }
4651   if (TYPE_ATOMIC (type))
4652     {
4653       puts_filtered (" TYPE_ATOMIC");
4654     }
4655   puts_filtered ("\n");
4656
4657   printfi_filtered (spaces, "flags");
4658   if (TYPE_UNSIGNED (type))
4659     {
4660       puts_filtered (" TYPE_UNSIGNED");
4661     }
4662   if (TYPE_NOSIGN (type))
4663     {
4664       puts_filtered (" TYPE_NOSIGN");
4665     }
4666   if (TYPE_STUB (type))
4667     {
4668       puts_filtered (" TYPE_STUB");
4669     }
4670   if (TYPE_TARGET_STUB (type))
4671     {
4672       puts_filtered (" TYPE_TARGET_STUB");
4673     }
4674   if (TYPE_PROTOTYPED (type))
4675     {
4676       puts_filtered (" TYPE_PROTOTYPED");
4677     }
4678   if (TYPE_INCOMPLETE (type))
4679     {
4680       puts_filtered (" TYPE_INCOMPLETE");
4681     }
4682   if (TYPE_VARARGS (type))
4683     {
4684       puts_filtered (" TYPE_VARARGS");
4685     }
4686   /* This is used for things like AltiVec registers on ppc.  Gcc emits
4687      an attribute for the array type, which tells whether or not we
4688      have a vector, instead of a regular array.  */
4689   if (TYPE_VECTOR (type))
4690     {
4691       puts_filtered (" TYPE_VECTOR");
4692     }
4693   if (TYPE_FIXED_INSTANCE (type))
4694     {
4695       puts_filtered (" TYPE_FIXED_INSTANCE");
4696     }
4697   if (TYPE_STUB_SUPPORTED (type))
4698     {
4699       puts_filtered (" TYPE_STUB_SUPPORTED");
4700     }
4701   if (TYPE_NOTTEXT (type))
4702     {
4703       puts_filtered (" TYPE_NOTTEXT");
4704     }
4705   puts_filtered ("\n");
4706   printfi_filtered (spaces, "nfields %d ", TYPE_NFIELDS (type));
4707   gdb_print_host_address (TYPE_FIELDS (type), gdb_stdout);
4708   puts_filtered ("\n");
4709   for (idx = 0; idx < TYPE_NFIELDS (type); idx++)
4710     {
4711       if (TYPE_CODE (type) == TYPE_CODE_ENUM)
4712         printfi_filtered (spaces + 2,
4713                           "[%d] enumval %s type ",
4714                           idx, plongest (TYPE_FIELD_ENUMVAL (type, idx)));
4715       else
4716         printfi_filtered (spaces + 2,
4717                           "[%d] bitpos %s bitsize %d type ",
4718                           idx, plongest (TYPE_FIELD_BITPOS (type, idx)),
4719                           TYPE_FIELD_BITSIZE (type, idx));
4720       gdb_print_host_address (TYPE_FIELD_TYPE (type, idx), gdb_stdout);
4721       printf_filtered (" name '%s' (",
4722                        TYPE_FIELD_NAME (type, idx) != NULL
4723                        ? TYPE_FIELD_NAME (type, idx)
4724                        : "<NULL>");
4725       gdb_print_host_address (TYPE_FIELD_NAME (type, idx), gdb_stdout);
4726       printf_filtered (")\n");
4727       if (TYPE_FIELD_TYPE (type, idx) != NULL)
4728         {
4729           recursive_dump_type (TYPE_FIELD_TYPE (type, idx), spaces + 4);
4730         }
4731     }
4732   if (TYPE_CODE (type) == TYPE_CODE_RANGE)
4733     {
4734       printfi_filtered (spaces, "low %s%s  high %s%s\n",
4735                         plongest (TYPE_LOW_BOUND (type)), 
4736                         TYPE_LOW_BOUND_UNDEFINED (type) ? " (undefined)" : "",
4737                         plongest (TYPE_HIGH_BOUND (type)),
4738                         TYPE_HIGH_BOUND_UNDEFINED (type) 
4739                         ? " (undefined)" : "");
4740     }
4741
4742   switch (TYPE_SPECIFIC_FIELD (type))
4743     {
4744       case TYPE_SPECIFIC_CPLUS_STUFF:
4745         printfi_filtered (spaces, "cplus_stuff ");
4746         gdb_print_host_address (TYPE_CPLUS_SPECIFIC (type), 
4747                                 gdb_stdout);
4748         puts_filtered ("\n");
4749         print_cplus_stuff (type, spaces);
4750         break;
4751
4752       case TYPE_SPECIFIC_GNAT_STUFF:
4753         printfi_filtered (spaces, "gnat_stuff ");
4754         gdb_print_host_address (TYPE_GNAT_SPECIFIC (type), gdb_stdout);
4755         puts_filtered ("\n");
4756         print_gnat_stuff (type, spaces);
4757         break;
4758
4759       case TYPE_SPECIFIC_FLOATFORMAT:
4760         printfi_filtered (spaces, "floatformat ");
4761         if (TYPE_FLOATFORMAT (type) == NULL
4762             || TYPE_FLOATFORMAT (type)->name == NULL)
4763           puts_filtered ("(null)");
4764         else
4765           puts_filtered (TYPE_FLOATFORMAT (type)->name);
4766         puts_filtered ("\n");
4767         break;
4768
4769       case TYPE_SPECIFIC_FUNC:
4770         printfi_filtered (spaces, "calling_convention %d\n",
4771                           TYPE_CALLING_CONVENTION (type));
4772         /* tail_call_list is not printed.  */
4773         break;
4774
4775       case TYPE_SPECIFIC_SELF_TYPE:
4776         printfi_filtered (spaces, "self_type ");
4777         gdb_print_host_address (TYPE_SELF_TYPE (type), gdb_stdout);
4778         puts_filtered ("\n");
4779         break;
4780     }
4781
4782   if (spaces == 0)
4783     obstack_free (&dont_print_type_obstack, NULL);
4784 }
4785 \f
4786 /* Trivial helpers for the libiberty hash table, for mapping one
4787    type to another.  */
4788
4789 struct type_pair : public allocate_on_obstack
4790 {
4791   type_pair (struct type *old_, struct type *newobj_)
4792     : old (old_), newobj (newobj_)
4793   {}
4794
4795   struct type * const old, * const newobj;
4796 };
4797
4798 static hashval_t
4799 type_pair_hash (const void *item)
4800 {
4801   const struct type_pair *pair = (const struct type_pair *) item;
4802
4803   return htab_hash_pointer (pair->old);
4804 }
4805
4806 static int
4807 type_pair_eq (const void *item_lhs, const void *item_rhs)
4808 {
4809   const struct type_pair *lhs = (const struct type_pair *) item_lhs;
4810   const struct type_pair *rhs = (const struct type_pair *) item_rhs;
4811
4812   return lhs->old == rhs->old;
4813 }
4814
4815 /* Allocate the hash table used by copy_type_recursive to walk
4816    types without duplicates.  We use OBJFILE's obstack, because
4817    OBJFILE is about to be deleted.  */
4818
4819 htab_t
4820 create_copied_types_hash (struct objfile *objfile)
4821 {
4822   return htab_create_alloc_ex (1, type_pair_hash, type_pair_eq,
4823                                NULL, &objfile->objfile_obstack,
4824                                hashtab_obstack_allocate,
4825                                dummy_obstack_deallocate);
4826 }
4827
4828 /* Recursively copy (deep copy) a dynamic attribute list of a type.  */
4829
4830 static struct dynamic_prop_list *
4831 copy_dynamic_prop_list (struct obstack *objfile_obstack,
4832                         struct dynamic_prop_list *list)
4833 {
4834   struct dynamic_prop_list *copy = list;
4835   struct dynamic_prop_list **node_ptr = &copy;
4836
4837   while (*node_ptr != NULL)
4838     {
4839       struct dynamic_prop_list *node_copy;
4840
4841       node_copy = ((struct dynamic_prop_list *)
4842                    obstack_copy (objfile_obstack, *node_ptr,
4843                                  sizeof (struct dynamic_prop_list)));
4844       node_copy->prop = (*node_ptr)->prop;
4845       *node_ptr = node_copy;
4846
4847       node_ptr = &node_copy->next;
4848     }
4849
4850   return copy;
4851 }
4852
4853 /* Recursively copy (deep copy) TYPE, if it is associated with
4854    OBJFILE.  Return a new type owned by the gdbarch associated with the type, a
4855    saved type if we have already visited TYPE (using COPIED_TYPES), or TYPE if
4856    it is not associated with OBJFILE.  */
4857
4858 struct type *
4859 copy_type_recursive (struct objfile *objfile, 
4860                      struct type *type,
4861                      htab_t copied_types)
4862 {
4863   void **slot;
4864   struct type *new_type;
4865
4866   if (! TYPE_OBJFILE_OWNED (type))
4867     return type;
4868
4869   /* This type shouldn't be pointing to any types in other objfiles;
4870      if it did, the type might disappear unexpectedly.  */
4871   gdb_assert (TYPE_OBJFILE (type) == objfile);
4872
4873   struct type_pair pair (type, nullptr);
4874
4875   slot = htab_find_slot (copied_types, &pair, INSERT);
4876   if (*slot != NULL)
4877     return ((struct type_pair *) *slot)->newobj;
4878
4879   new_type = alloc_type_arch (get_type_arch (type));
4880
4881   /* We must add the new type to the hash table immediately, in case
4882      we encounter this type again during a recursive call below.  */
4883   struct type_pair *stored
4884     = new (&objfile->objfile_obstack) struct type_pair (type, new_type);
4885
4886   *slot = stored;
4887
4888   /* Copy the common fields of types.  For the main type, we simply
4889      copy the entire thing and then update specific fields as needed.  */
4890   *TYPE_MAIN_TYPE (new_type) = *TYPE_MAIN_TYPE (type);
4891   TYPE_OBJFILE_OWNED (new_type) = 0;
4892   TYPE_OWNER (new_type).gdbarch = get_type_arch (type);
4893
4894   if (TYPE_NAME (type))
4895     TYPE_NAME (new_type) = xstrdup (TYPE_NAME (type));
4896
4897   TYPE_INSTANCE_FLAGS (new_type) = TYPE_INSTANCE_FLAGS (type);
4898   TYPE_LENGTH (new_type) = TYPE_LENGTH (type);
4899
4900   /* Copy the fields.  */
4901   if (TYPE_NFIELDS (type))
4902     {
4903       int i, nfields;
4904
4905       nfields = TYPE_NFIELDS (type);
4906       TYPE_FIELDS (new_type) = XCNEWVEC (struct field, nfields);
4907       for (i = 0; i < nfields; i++)
4908         {
4909           TYPE_FIELD_ARTIFICIAL (new_type, i) = 
4910             TYPE_FIELD_ARTIFICIAL (type, i);
4911           TYPE_FIELD_BITSIZE (new_type, i) = TYPE_FIELD_BITSIZE (type, i);
4912           if (TYPE_FIELD_TYPE (type, i))
4913             TYPE_FIELD_TYPE (new_type, i)
4914               = copy_type_recursive (objfile, TYPE_FIELD_TYPE (type, i),
4915                                      copied_types);
4916           if (TYPE_FIELD_NAME (type, i))
4917             TYPE_FIELD_NAME (new_type, i) = 
4918               xstrdup (TYPE_FIELD_NAME (type, i));
4919           switch (TYPE_FIELD_LOC_KIND (type, i))
4920             {
4921             case FIELD_LOC_KIND_BITPOS:
4922               SET_FIELD_BITPOS (TYPE_FIELD (new_type, i),
4923                                 TYPE_FIELD_BITPOS (type, i));
4924               break;
4925             case FIELD_LOC_KIND_ENUMVAL:
4926               SET_FIELD_ENUMVAL (TYPE_FIELD (new_type, i),
4927                                  TYPE_FIELD_ENUMVAL (type, i));
4928               break;
4929             case FIELD_LOC_KIND_PHYSADDR:
4930               SET_FIELD_PHYSADDR (TYPE_FIELD (new_type, i),
4931                                   TYPE_FIELD_STATIC_PHYSADDR (type, i));
4932               break;
4933             case FIELD_LOC_KIND_PHYSNAME:
4934               SET_FIELD_PHYSNAME (TYPE_FIELD (new_type, i),
4935                                   xstrdup (TYPE_FIELD_STATIC_PHYSNAME (type,
4936                                                                        i)));
4937               break;
4938             default:
4939               internal_error (__FILE__, __LINE__,
4940                               _("Unexpected type field location kind: %d"),
4941                               TYPE_FIELD_LOC_KIND (type, i));
4942             }
4943         }
4944     }
4945
4946   /* For range types, copy the bounds information.  */
4947   if (TYPE_CODE (type) == TYPE_CODE_RANGE)
4948     {
4949       TYPE_RANGE_DATA (new_type) = XNEW (struct range_bounds);
4950       *TYPE_RANGE_DATA (new_type) = *TYPE_RANGE_DATA (type);
4951     }
4952
4953   if (TYPE_DYN_PROP_LIST (type) != NULL)
4954     TYPE_DYN_PROP_LIST (new_type)
4955       = copy_dynamic_prop_list (&objfile->objfile_obstack,
4956                                 TYPE_DYN_PROP_LIST (type));
4957
4958
4959   /* Copy pointers to other types.  */
4960   if (TYPE_TARGET_TYPE (type))
4961     TYPE_TARGET_TYPE (new_type) = 
4962       copy_type_recursive (objfile, 
4963                            TYPE_TARGET_TYPE (type),
4964                            copied_types);
4965
4966   /* Maybe copy the type_specific bits.
4967
4968      NOTE drow/2005-12-09: We do not copy the C++-specific bits like
4969      base classes and methods.  There's no fundamental reason why we
4970      can't, but at the moment it is not needed.  */
4971
4972   switch (TYPE_SPECIFIC_FIELD (type))
4973     {
4974     case TYPE_SPECIFIC_NONE:
4975       break;
4976     case TYPE_SPECIFIC_FUNC:
4977       INIT_FUNC_SPECIFIC (new_type);
4978       TYPE_CALLING_CONVENTION (new_type) = TYPE_CALLING_CONVENTION (type);
4979       TYPE_NO_RETURN (new_type) = TYPE_NO_RETURN (type);
4980       TYPE_TAIL_CALL_LIST (new_type) = NULL;
4981       break;
4982     case TYPE_SPECIFIC_FLOATFORMAT:
4983       TYPE_FLOATFORMAT (new_type) = TYPE_FLOATFORMAT (type);
4984       break;
4985     case TYPE_SPECIFIC_CPLUS_STUFF:
4986       INIT_CPLUS_SPECIFIC (new_type);
4987       break;
4988     case TYPE_SPECIFIC_GNAT_STUFF:
4989       INIT_GNAT_SPECIFIC (new_type);
4990       break;
4991     case TYPE_SPECIFIC_SELF_TYPE:
4992       set_type_self_type (new_type,
4993                           copy_type_recursive (objfile, TYPE_SELF_TYPE (type),
4994                                                copied_types));
4995       break;
4996     default:
4997       gdb_assert_not_reached ("bad type_specific_kind");
4998     }
4999
5000   return new_type;
5001 }
5002
5003 /* Make a copy of the given TYPE, except that the pointer & reference
5004    types are not preserved.
5005    
5006    This function assumes that the given type has an associated objfile.
5007    This objfile is used to allocate the new type.  */
5008
5009 struct type *
5010 copy_type (const struct type *type)
5011 {
5012   struct type *new_type;
5013
5014   gdb_assert (TYPE_OBJFILE_OWNED (type));
5015
5016   new_type = alloc_type_copy (type);
5017   TYPE_INSTANCE_FLAGS (new_type) = TYPE_INSTANCE_FLAGS (type);
5018   TYPE_LENGTH (new_type) = TYPE_LENGTH (type);
5019   memcpy (TYPE_MAIN_TYPE (new_type), TYPE_MAIN_TYPE (type),
5020           sizeof (struct main_type));
5021   if (TYPE_DYN_PROP_LIST (type) != NULL)
5022     TYPE_DYN_PROP_LIST (new_type)
5023       = copy_dynamic_prop_list (&TYPE_OBJFILE (type) -> objfile_obstack,
5024                                 TYPE_DYN_PROP_LIST (type));
5025
5026   return new_type;
5027 }
5028 \f
5029 /* Helper functions to initialize architecture-specific types.  */
5030
5031 /* Allocate a type structure associated with GDBARCH and set its
5032    CODE, LENGTH, and NAME fields.  */
5033
5034 struct type *
5035 arch_type (struct gdbarch *gdbarch,
5036            enum type_code code, int bit, const char *name)
5037 {
5038   struct type *type;
5039
5040   type = alloc_type_arch (gdbarch);
5041   set_type_code (type, code);
5042   gdb_assert ((bit % TARGET_CHAR_BIT) == 0);
5043   TYPE_LENGTH (type) = bit / TARGET_CHAR_BIT;
5044
5045   if (name)
5046     TYPE_NAME (type) = gdbarch_obstack_strdup (gdbarch, name);
5047
5048   return type;
5049 }
5050
5051 /* Allocate a TYPE_CODE_INT type structure associated with GDBARCH.
5052    BIT is the type size in bits.  If UNSIGNED_P is non-zero, set
5053    the type's TYPE_UNSIGNED flag.  NAME is the type name.  */
5054
5055 struct type *
5056 arch_integer_type (struct gdbarch *gdbarch,
5057                    int bit, int unsigned_p, const char *name)
5058 {
5059   struct type *t;
5060
5061   t = arch_type (gdbarch, TYPE_CODE_INT, bit, name);
5062   if (unsigned_p)
5063     TYPE_UNSIGNED (t) = 1;
5064
5065   return t;
5066 }
5067
5068 /* Allocate a TYPE_CODE_CHAR type structure associated with GDBARCH.
5069    BIT is the type size in bits.  If UNSIGNED_P is non-zero, set
5070    the type's TYPE_UNSIGNED flag.  NAME is the type name.  */
5071
5072 struct type *
5073 arch_character_type (struct gdbarch *gdbarch,
5074                      int bit, int unsigned_p, const char *name)
5075 {
5076   struct type *t;
5077
5078   t = arch_type (gdbarch, TYPE_CODE_CHAR, bit, name);
5079   if (unsigned_p)
5080     TYPE_UNSIGNED (t) = 1;
5081
5082   return t;
5083 }
5084
5085 /* Allocate a TYPE_CODE_BOOL type structure associated with GDBARCH.
5086    BIT is the type size in bits.  If UNSIGNED_P is non-zero, set
5087    the type's TYPE_UNSIGNED flag.  NAME is the type name.  */
5088
5089 struct type *
5090 arch_boolean_type (struct gdbarch *gdbarch,
5091                    int bit, int unsigned_p, const char *name)
5092 {
5093   struct type *t;
5094
5095   t = arch_type (gdbarch, TYPE_CODE_BOOL, bit, name);
5096   if (unsigned_p)
5097     TYPE_UNSIGNED (t) = 1;
5098
5099   return t;
5100 }
5101
5102 /* Allocate a TYPE_CODE_FLT type structure associated with GDBARCH.
5103    BIT is the type size in bits; if BIT equals -1, the size is
5104    determined by the floatformat.  NAME is the type name.  Set the
5105    TYPE_FLOATFORMAT from FLOATFORMATS.  */
5106
5107 struct type *
5108 arch_float_type (struct gdbarch *gdbarch,
5109                  int bit, const char *name,
5110                  const struct floatformat **floatformats)
5111 {
5112   const struct floatformat *fmt = floatformats[gdbarch_byte_order (gdbarch)];
5113   struct type *t;
5114
5115   bit = verify_floatformat (bit, fmt);
5116   t = arch_type (gdbarch, TYPE_CODE_FLT, bit, name);
5117   TYPE_FLOATFORMAT (t) = fmt;
5118
5119   return t;
5120 }
5121
5122 /* Allocate a TYPE_CODE_DECFLOAT type structure associated with GDBARCH.
5123    BIT is the type size in bits.  NAME is the type name.  */
5124
5125 struct type *
5126 arch_decfloat_type (struct gdbarch *gdbarch, int bit, const char *name)
5127 {
5128   struct type *t;
5129
5130   t = arch_type (gdbarch, TYPE_CODE_DECFLOAT, bit, name);
5131   return t;
5132 }
5133
5134 /* Allocate a TYPE_CODE_COMPLEX type structure associated with GDBARCH.
5135    NAME is the type name.  TARGET_TYPE is the component float type.  */
5136
5137 struct type *
5138 arch_complex_type (struct gdbarch *gdbarch,
5139                    const char *name, struct type *target_type)
5140 {
5141   struct type *t;
5142
5143   t = arch_type (gdbarch, TYPE_CODE_COMPLEX,
5144                  2 * TYPE_LENGTH (target_type) * TARGET_CHAR_BIT, name);
5145   TYPE_TARGET_TYPE (t) = target_type;
5146   return t;
5147 }
5148
5149 /* Allocate a TYPE_CODE_PTR type structure associated with GDBARCH.
5150    BIT is the pointer type size in bits.  NAME is the type name.
5151    TARGET_TYPE is the pointer target type.  Always sets the pointer type's
5152    TYPE_UNSIGNED flag.  */
5153
5154 struct type *
5155 arch_pointer_type (struct gdbarch *gdbarch,
5156                    int bit, const char *name, struct type *target_type)
5157 {
5158   struct type *t;
5159
5160   t = arch_type (gdbarch, TYPE_CODE_PTR, bit, name);
5161   TYPE_TARGET_TYPE (t) = target_type;
5162   TYPE_UNSIGNED (t) = 1;
5163   return t;
5164 }
5165
5166 /* Allocate a TYPE_CODE_FLAGS type structure associated with GDBARCH.
5167    NAME is the type name.  BIT is the size of the flag word in bits.  */
5168
5169 struct type *
5170 arch_flags_type (struct gdbarch *gdbarch, const char *name, int bit)
5171 {
5172   struct type *type;
5173
5174   type = arch_type (gdbarch, TYPE_CODE_FLAGS, bit, name);
5175   TYPE_UNSIGNED (type) = 1;
5176   TYPE_NFIELDS (type) = 0;
5177   /* Pre-allocate enough space assuming every field is one bit.  */
5178   TYPE_FIELDS (type)
5179     = (struct field *) TYPE_ZALLOC (type, bit * sizeof (struct field));
5180
5181   return type;
5182 }
5183
5184 /* Add field to TYPE_CODE_FLAGS type TYPE to indicate the bit at
5185    position BITPOS is called NAME.  Pass NAME as "" for fields that
5186    should not be printed.  */
5187
5188 void
5189 append_flags_type_field (struct type *type, int start_bitpos, int nr_bits,
5190                          struct type *field_type, const char *name)
5191 {
5192   int type_bitsize = TYPE_LENGTH (type) * TARGET_CHAR_BIT;
5193   int field_nr = TYPE_NFIELDS (type);
5194
5195   gdb_assert (TYPE_CODE (type) == TYPE_CODE_FLAGS);
5196   gdb_assert (TYPE_NFIELDS (type) + 1 <= type_bitsize);
5197   gdb_assert (start_bitpos >= 0 && start_bitpos < type_bitsize);
5198   gdb_assert (nr_bits >= 1 && nr_bits <= type_bitsize);
5199   gdb_assert (name != NULL);
5200
5201   TYPE_FIELD_NAME (type, field_nr) = xstrdup (name);
5202   TYPE_FIELD_TYPE (type, field_nr) = field_type;
5203   SET_FIELD_BITPOS (TYPE_FIELD (type, field_nr), start_bitpos);
5204   TYPE_FIELD_BITSIZE (type, field_nr) = nr_bits;
5205   ++TYPE_NFIELDS (type);
5206 }
5207
5208 /* Special version of append_flags_type_field to add a flag field.
5209    Add field to TYPE_CODE_FLAGS type TYPE to indicate the bit at
5210    position BITPOS is called NAME.  */
5211
5212 void
5213 append_flags_type_flag (struct type *type, int bitpos, const char *name)
5214 {
5215   struct gdbarch *gdbarch = get_type_arch (type);
5216
5217   append_flags_type_field (type, bitpos, 1,
5218                            builtin_type (gdbarch)->builtin_bool,
5219                            name);
5220 }
5221
5222 /* Allocate a TYPE_CODE_STRUCT or TYPE_CODE_UNION type structure (as
5223    specified by CODE) associated with GDBARCH.  NAME is the type name.  */
5224
5225 struct type *
5226 arch_composite_type (struct gdbarch *gdbarch, const char *name,
5227                      enum type_code code)
5228 {
5229   struct type *t;
5230
5231   gdb_assert (code == TYPE_CODE_STRUCT || code == TYPE_CODE_UNION);
5232   t = arch_type (gdbarch, code, 0, NULL);
5233   TYPE_NAME (t) = name;
5234   INIT_CPLUS_SPECIFIC (t);
5235   return t;
5236 }
5237
5238 /* Add new field with name NAME and type FIELD to composite type T.
5239    Do not set the field's position or adjust the type's length;
5240    the caller should do so.  Return the new field.  */
5241
5242 struct field *
5243 append_composite_type_field_raw (struct type *t, const char *name,
5244                                  struct type *field)
5245 {
5246   struct field *f;
5247
5248   TYPE_NFIELDS (t) = TYPE_NFIELDS (t) + 1;
5249   TYPE_FIELDS (t) = XRESIZEVEC (struct field, TYPE_FIELDS (t),
5250                                 TYPE_NFIELDS (t));
5251   f = &(TYPE_FIELDS (t)[TYPE_NFIELDS (t) - 1]);
5252   memset (f, 0, sizeof f[0]);
5253   FIELD_TYPE (f[0]) = field;
5254   FIELD_NAME (f[0]) = name;
5255   return f;
5256 }
5257
5258 /* Add new field with name NAME and type FIELD to composite type T.
5259    ALIGNMENT (if non-zero) specifies the minimum field alignment.  */
5260
5261 void
5262 append_composite_type_field_aligned (struct type *t, const char *name,
5263                                      struct type *field, int alignment)
5264 {
5265   struct field *f = append_composite_type_field_raw (t, name, field);
5266
5267   if (TYPE_CODE (t) == TYPE_CODE_UNION)
5268     {
5269       if (TYPE_LENGTH (t) < TYPE_LENGTH (field))
5270         TYPE_LENGTH (t) = TYPE_LENGTH (field);
5271     }
5272   else if (TYPE_CODE (t) == TYPE_CODE_STRUCT)
5273     {
5274       TYPE_LENGTH (t) = TYPE_LENGTH (t) + TYPE_LENGTH (field);
5275       if (TYPE_NFIELDS (t) > 1)
5276         {
5277           SET_FIELD_BITPOS (f[0],
5278                             (FIELD_BITPOS (f[-1])
5279                              + (TYPE_LENGTH (FIELD_TYPE (f[-1]))
5280                                 * TARGET_CHAR_BIT)));
5281
5282           if (alignment)
5283             {
5284               int left;
5285
5286               alignment *= TARGET_CHAR_BIT;
5287               left = FIELD_BITPOS (f[0]) % alignment;
5288
5289               if (left)
5290                 {
5291                   SET_FIELD_BITPOS (f[0], FIELD_BITPOS (f[0]) + (alignment - left));
5292                   TYPE_LENGTH (t) += (alignment - left) / TARGET_CHAR_BIT;
5293                 }
5294             }
5295         }
5296     }
5297 }
5298
5299 /* Add new field with name NAME and type FIELD to composite type T.  */
5300
5301 void
5302 append_composite_type_field (struct type *t, const char *name,
5303                              struct type *field)
5304 {
5305   append_composite_type_field_aligned (t, name, field, 0);
5306 }
5307
5308 static struct gdbarch_data *gdbtypes_data;
5309
5310 const struct builtin_type *
5311 builtin_type (struct gdbarch *gdbarch)
5312 {
5313   return (const struct builtin_type *) gdbarch_data (gdbarch, gdbtypes_data);
5314 }
5315
5316 static void *
5317 gdbtypes_post_init (struct gdbarch *gdbarch)
5318 {
5319   struct builtin_type *builtin_type
5320     = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct builtin_type);
5321
5322   /* Basic types.  */
5323   builtin_type->builtin_void
5324     = arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT, "void");
5325   builtin_type->builtin_char
5326     = arch_integer_type (gdbarch, TARGET_CHAR_BIT,
5327                          !gdbarch_char_signed (gdbarch), "char");
5328   TYPE_NOSIGN (builtin_type->builtin_char) = 1;
5329   builtin_type->builtin_signed_char
5330     = arch_integer_type (gdbarch, TARGET_CHAR_BIT,
5331                          0, "signed char");
5332   builtin_type->builtin_unsigned_char
5333     = arch_integer_type (gdbarch, TARGET_CHAR_BIT,
5334                          1, "unsigned char");
5335   builtin_type->builtin_short
5336     = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
5337                          0, "short");
5338   builtin_type->builtin_unsigned_short
5339     = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
5340                          1, "unsigned short");
5341   builtin_type->builtin_int
5342     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
5343                          0, "int");
5344   builtin_type->builtin_unsigned_int
5345     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
5346                          1, "unsigned int");
5347   builtin_type->builtin_long
5348     = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
5349                          0, "long");
5350   builtin_type->builtin_unsigned_long
5351     = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
5352                          1, "unsigned long");
5353   builtin_type->builtin_long_long
5354     = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
5355                          0, "long long");
5356   builtin_type->builtin_unsigned_long_long
5357     = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
5358                          1, "unsigned long long");
5359   builtin_type->builtin_float
5360     = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
5361                        "float", gdbarch_float_format (gdbarch));
5362   builtin_type->builtin_double
5363     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
5364                        "double", gdbarch_double_format (gdbarch));
5365   builtin_type->builtin_long_double
5366     = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
5367                        "long double", gdbarch_long_double_format (gdbarch));
5368   builtin_type->builtin_complex
5369     = arch_complex_type (gdbarch, "complex",
5370                          builtin_type->builtin_float);
5371   builtin_type->builtin_double_complex
5372     = arch_complex_type (gdbarch, "double complex",
5373                          builtin_type->builtin_double);
5374   builtin_type->builtin_string
5375     = arch_type (gdbarch, TYPE_CODE_STRING, TARGET_CHAR_BIT, "string");
5376   builtin_type->builtin_bool
5377     = arch_type (gdbarch, TYPE_CODE_BOOL, TARGET_CHAR_BIT, "bool");
5378
5379   /* The following three are about decimal floating point types, which
5380      are 32-bits, 64-bits and 128-bits respectively.  */
5381   builtin_type->builtin_decfloat
5382     = arch_decfloat_type (gdbarch, 32, "_Decimal32");
5383   builtin_type->builtin_decdouble
5384     = arch_decfloat_type (gdbarch, 64, "_Decimal64");
5385   builtin_type->builtin_declong
5386     = arch_decfloat_type (gdbarch, 128, "_Decimal128");
5387
5388   /* "True" character types.  */
5389   builtin_type->builtin_true_char
5390     = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "true character");
5391   builtin_type->builtin_true_unsigned_char
5392     = arch_character_type (gdbarch, TARGET_CHAR_BIT, 1, "true character");
5393
5394   /* Fixed-size integer types.  */
5395   builtin_type->builtin_int0
5396     = arch_integer_type (gdbarch, 0, 0, "int0_t");
5397   builtin_type->builtin_int8
5398     = arch_integer_type (gdbarch, 8, 0, "int8_t");
5399   builtin_type->builtin_uint8
5400     = arch_integer_type (gdbarch, 8, 1, "uint8_t");
5401   builtin_type->builtin_int16
5402     = arch_integer_type (gdbarch, 16, 0, "int16_t");
5403   builtin_type->builtin_uint16
5404     = arch_integer_type (gdbarch, 16, 1, "uint16_t");
5405   builtin_type->builtin_int32
5406     = arch_integer_type (gdbarch, 32, 0, "int32_t");
5407   builtin_type->builtin_uint32
5408     = arch_integer_type (gdbarch, 32, 1, "uint32_t");
5409   builtin_type->builtin_int64
5410     = arch_integer_type (gdbarch, 64, 0, "int64_t");
5411   builtin_type->builtin_uint64
5412     = arch_integer_type (gdbarch, 64, 1, "uint64_t");
5413   builtin_type->builtin_int128
5414     = arch_integer_type (gdbarch, 128, 0, "int128_t");
5415   builtin_type->builtin_uint128
5416     = arch_integer_type (gdbarch, 128, 1, "uint128_t");
5417   TYPE_INSTANCE_FLAGS (builtin_type->builtin_int8) |=
5418     TYPE_INSTANCE_FLAG_NOTTEXT;
5419   TYPE_INSTANCE_FLAGS (builtin_type->builtin_uint8) |=
5420     TYPE_INSTANCE_FLAG_NOTTEXT;
5421
5422   /* Wide character types.  */
5423   builtin_type->builtin_char16
5424     = arch_integer_type (gdbarch, 16, 1, "char16_t");
5425   builtin_type->builtin_char32
5426     = arch_integer_type (gdbarch, 32, 1, "char32_t");
5427   builtin_type->builtin_wchar
5428     = arch_integer_type (gdbarch, gdbarch_wchar_bit (gdbarch),
5429                          !gdbarch_wchar_signed (gdbarch), "wchar_t");
5430
5431   /* Default data/code pointer types.  */
5432   builtin_type->builtin_data_ptr
5433     = lookup_pointer_type (builtin_type->builtin_void);
5434   builtin_type->builtin_func_ptr
5435     = lookup_pointer_type (lookup_function_type (builtin_type->builtin_void));
5436   builtin_type->builtin_func_func
5437     = lookup_function_type (builtin_type->builtin_func_ptr);
5438
5439   /* This type represents a GDB internal function.  */
5440   builtin_type->internal_fn
5441     = arch_type (gdbarch, TYPE_CODE_INTERNAL_FUNCTION, 0,
5442                  "<internal function>");
5443
5444   /* This type represents an xmethod.  */
5445   builtin_type->xmethod
5446     = arch_type (gdbarch, TYPE_CODE_XMETHOD, 0, "<xmethod>");
5447
5448   return builtin_type;
5449 }
5450
5451 /* This set of objfile-based types is intended to be used by symbol
5452    readers as basic types.  */
5453
5454 static const struct objfile_data *objfile_type_data;
5455
5456 const struct objfile_type *
5457 objfile_type (struct objfile *objfile)
5458 {
5459   struct gdbarch *gdbarch;
5460   struct objfile_type *objfile_type
5461     = (struct objfile_type *) objfile_data (objfile, objfile_type_data);
5462
5463   if (objfile_type)
5464     return objfile_type;
5465
5466   objfile_type = OBSTACK_CALLOC (&objfile->objfile_obstack,
5467                                  1, struct objfile_type);
5468
5469   /* Use the objfile architecture to determine basic type properties.  */
5470   gdbarch = get_objfile_arch (objfile);
5471
5472   /* Basic types.  */
5473   objfile_type->builtin_void
5474     = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, "void");
5475   objfile_type->builtin_char
5476     = init_integer_type (objfile, TARGET_CHAR_BIT,
5477                          !gdbarch_char_signed (gdbarch), "char");
5478   TYPE_NOSIGN (objfile_type->builtin_char) = 1;
5479   objfile_type->builtin_signed_char
5480     = init_integer_type (objfile, TARGET_CHAR_BIT,
5481                          0, "signed char");
5482   objfile_type->builtin_unsigned_char
5483     = init_integer_type (objfile, TARGET_CHAR_BIT,
5484                          1, "unsigned char");
5485   objfile_type->builtin_short
5486     = init_integer_type (objfile, gdbarch_short_bit (gdbarch),
5487                          0, "short");
5488   objfile_type->builtin_unsigned_short
5489     = init_integer_type (objfile, gdbarch_short_bit (gdbarch),
5490                          1, "unsigned short");
5491   objfile_type->builtin_int
5492     = init_integer_type (objfile, gdbarch_int_bit (gdbarch),
5493                          0, "int");
5494   objfile_type->builtin_unsigned_int
5495     = init_integer_type (objfile, gdbarch_int_bit (gdbarch),
5496                          1, "unsigned int");
5497   objfile_type->builtin_long
5498     = init_integer_type (objfile, gdbarch_long_bit (gdbarch),
5499                          0, "long");
5500   objfile_type->builtin_unsigned_long
5501     = init_integer_type (objfile, gdbarch_long_bit (gdbarch),
5502                          1, "unsigned long");
5503   objfile_type->builtin_long_long
5504     = init_integer_type (objfile, gdbarch_long_long_bit (gdbarch),
5505                          0, "long long");
5506   objfile_type->builtin_unsigned_long_long
5507     = init_integer_type (objfile, gdbarch_long_long_bit (gdbarch),
5508                          1, "unsigned long long");
5509   objfile_type->builtin_float
5510     = init_float_type (objfile, gdbarch_float_bit (gdbarch),
5511                        "float", gdbarch_float_format (gdbarch));
5512   objfile_type->builtin_double
5513     = init_float_type (objfile, gdbarch_double_bit (gdbarch),
5514                        "double", gdbarch_double_format (gdbarch));
5515   objfile_type->builtin_long_double
5516     = init_float_type (objfile, gdbarch_long_double_bit (gdbarch),
5517                        "long double", gdbarch_long_double_format (gdbarch));
5518
5519   /* This type represents a type that was unrecognized in symbol read-in.  */
5520   objfile_type->builtin_error
5521     = init_type (objfile, TYPE_CODE_ERROR, 0, "<unknown type>");
5522
5523   /* The following set of types is used for symbols with no
5524      debug information.  */
5525   objfile_type->nodebug_text_symbol
5526     = init_type (objfile, TYPE_CODE_FUNC, TARGET_CHAR_BIT,
5527                  "<text variable, no debug info>");
5528   objfile_type->nodebug_text_gnu_ifunc_symbol
5529     = init_type (objfile, TYPE_CODE_FUNC, TARGET_CHAR_BIT,
5530                  "<text gnu-indirect-function variable, no debug info>");
5531   TYPE_GNU_IFUNC (objfile_type->nodebug_text_gnu_ifunc_symbol) = 1;
5532   objfile_type->nodebug_got_plt_symbol
5533     = init_pointer_type (objfile, gdbarch_addr_bit (gdbarch),
5534                          "<text from jump slot in .got.plt, no debug info>",
5535                          objfile_type->nodebug_text_symbol);
5536   objfile_type->nodebug_data_symbol
5537     = init_nodebug_var_type (objfile, "<data variable, no debug info>");
5538   objfile_type->nodebug_unknown_symbol
5539     = init_nodebug_var_type (objfile, "<variable (not text or data), no debug info>");
5540   objfile_type->nodebug_tls_symbol
5541     = init_nodebug_var_type (objfile, "<thread local variable, no debug info>");
5542
5543   /* NOTE: on some targets, addresses and pointers are not necessarily
5544      the same.
5545
5546      The upshot is:
5547      - gdb's `struct type' always describes the target's
5548        representation.
5549      - gdb's `struct value' objects should always hold values in
5550        target form.
5551      - gdb's CORE_ADDR values are addresses in the unified virtual
5552        address space that the assembler and linker work with.  Thus,
5553        since target_read_memory takes a CORE_ADDR as an argument, it
5554        can access any memory on the target, even if the processor has
5555        separate code and data address spaces.
5556
5557      In this context, objfile_type->builtin_core_addr is a bit odd:
5558      it's a target type for a value the target will never see.  It's
5559      only used to hold the values of (typeless) linker symbols, which
5560      are indeed in the unified virtual address space.  */
5561
5562   objfile_type->builtin_core_addr
5563     = init_integer_type (objfile, gdbarch_addr_bit (gdbarch), 1,
5564                          "__CORE_ADDR");
5565
5566   set_objfile_data (objfile, objfile_type_data, objfile_type);
5567   return objfile_type;
5568 }
5569
5570 void
5571 _initialize_gdbtypes (void)
5572 {
5573   gdbtypes_data = gdbarch_data_register_post_init (gdbtypes_post_init);
5574   objfile_type_data = register_objfile_data ();
5575
5576   add_setshow_zuinteger_cmd ("overload", no_class, &overload_debug,
5577                              _("Set debugging of C++ overloading."),
5578                              _("Show debugging of C++ overloading."),
5579                              _("When enabled, ranking of the "
5580                                "functions is displayed."),
5581                              NULL,
5582                              show_overload_debug,
5583                              &setdebuglist, &showdebuglist);
5584
5585   /* Add user knob for controlling resolution of opaque types.  */
5586   add_setshow_boolean_cmd ("opaque-type-resolution", class_support,
5587                            &opaque_type_resolution,
5588                            _("Set resolution of opaque struct/class/union"
5589                              " types (if set before loading symbols)."),
5590                            _("Show resolution of opaque struct/class/union"
5591                              " types (if set before loading symbols)."),
5592                            NULL, NULL,
5593                            show_opaque_type_resolution,
5594                            &setlist, &showlist);
5595
5596   /* Add an option to permit non-strict type checking.  */
5597   add_setshow_boolean_cmd ("type", class_support,
5598                            &strict_type_checking,
5599                            _("Set strict type checking."),
5600                            _("Show strict type checking."),
5601                            NULL, NULL,
5602                            show_strict_type_checking,
5603                            &setchecklist, &showchecklist);
5604 }