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