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