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