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