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