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