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