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