* gdbtypes.c (init_type): Make 'name' const.
[platform/upstream/binutils.git] / gdb / gdbtypes.c
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 \f
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 we make a copy of the string pointed
1954    to by name in the objfile_obstack for that objfile, and initialize
1955    the type name to that copy.  There are places (mipsread.c in particular),
1956    where init_type is called with a NULL value for NAME).  */
1957
1958 struct type *
1959 init_type (enum type_code code, int length, int flags,
1960            const char *name, struct objfile *objfile)
1961 {
1962   struct type *type;
1963
1964   type = alloc_type (objfile);
1965   TYPE_CODE (type) = code;
1966   TYPE_LENGTH (type) = length;
1967
1968   gdb_assert (!(flags & (TYPE_FLAG_MIN - 1)));
1969   if (flags & TYPE_FLAG_UNSIGNED)
1970     TYPE_UNSIGNED (type) = 1;
1971   if (flags & TYPE_FLAG_NOSIGN)
1972     TYPE_NOSIGN (type) = 1;
1973   if (flags & TYPE_FLAG_STUB)
1974     TYPE_STUB (type) = 1;
1975   if (flags & TYPE_FLAG_TARGET_STUB)
1976     TYPE_TARGET_STUB (type) = 1;
1977   if (flags & TYPE_FLAG_STATIC)
1978     TYPE_STATIC (type) = 1;
1979   if (flags & TYPE_FLAG_PROTOTYPED)
1980     TYPE_PROTOTYPED (type) = 1;
1981   if (flags & TYPE_FLAG_INCOMPLETE)
1982     TYPE_INCOMPLETE (type) = 1;
1983   if (flags & TYPE_FLAG_VARARGS)
1984     TYPE_VARARGS (type) = 1;
1985   if (flags & TYPE_FLAG_VECTOR)
1986     TYPE_VECTOR (type) = 1;
1987   if (flags & TYPE_FLAG_STUB_SUPPORTED)
1988     TYPE_STUB_SUPPORTED (type) = 1;
1989   if (flags & TYPE_FLAG_FIXED_INSTANCE)
1990     TYPE_FIXED_INSTANCE (type) = 1;
1991   if (flags & TYPE_FLAG_GNU_IFUNC)
1992     TYPE_GNU_IFUNC (type) = 1;
1993
1994   if (name)
1995     TYPE_NAME (type) = obsavestring (name, strlen (name),
1996                                      &objfile->objfile_obstack);
1997
1998   /* C++ fancies.  */
1999
2000   if (name && strcmp (name, "char") == 0)
2001     TYPE_NOSIGN (type) = 1;
2002
2003   switch (code)
2004     {
2005       case TYPE_CODE_STRUCT:
2006       case TYPE_CODE_UNION:
2007       case TYPE_CODE_NAMESPACE:
2008         INIT_CPLUS_SPECIFIC (type);
2009         break;
2010       case TYPE_CODE_FLT:
2011         TYPE_SPECIFIC_FIELD (type) = TYPE_SPECIFIC_FLOATFORMAT;
2012         break;
2013       case TYPE_CODE_FUNC:
2014         INIT_FUNC_SPECIFIC (type);
2015         break;
2016     }
2017   return type;
2018 }
2019 \f
2020 /* Queries on types.  */
2021
2022 int
2023 can_dereference (struct type *t)
2024 {
2025   /* FIXME: Should we return true for references as well as
2026      pointers?  */
2027   CHECK_TYPEDEF (t);
2028   return
2029     (t != NULL
2030      && TYPE_CODE (t) == TYPE_CODE_PTR
2031      && TYPE_CODE (TYPE_TARGET_TYPE (t)) != TYPE_CODE_VOID);
2032 }
2033
2034 int
2035 is_integral_type (struct type *t)
2036 {
2037   CHECK_TYPEDEF (t);
2038   return
2039     ((t != NULL)
2040      && ((TYPE_CODE (t) == TYPE_CODE_INT)
2041          || (TYPE_CODE (t) == TYPE_CODE_ENUM)
2042          || (TYPE_CODE (t) == TYPE_CODE_FLAGS)
2043          || (TYPE_CODE (t) == TYPE_CODE_CHAR)
2044          || (TYPE_CODE (t) == TYPE_CODE_RANGE)
2045          || (TYPE_CODE (t) == TYPE_CODE_BOOL)));
2046 }
2047
2048 /* Return true if TYPE is scalar.  */
2049
2050 static int
2051 is_scalar_type (struct type *type)
2052 {
2053   CHECK_TYPEDEF (type);
2054
2055   switch (TYPE_CODE (type))
2056     {
2057     case TYPE_CODE_ARRAY:
2058     case TYPE_CODE_STRUCT:
2059     case TYPE_CODE_UNION:
2060     case TYPE_CODE_SET:
2061     case TYPE_CODE_STRING:
2062       return 0;
2063     default:
2064       return 1;
2065     }
2066 }
2067
2068 /* Return true if T is scalar, or a composite type which in practice has
2069    the memory layout of a scalar type.  E.g., an array or struct with only
2070    one scalar element inside it, or a union with only scalar elements.  */
2071
2072 int
2073 is_scalar_type_recursive (struct type *t)
2074 {
2075   CHECK_TYPEDEF (t);
2076
2077   if (is_scalar_type (t))
2078     return 1;
2079   /* Are we dealing with an array or string of known dimensions?  */
2080   else if ((TYPE_CODE (t) == TYPE_CODE_ARRAY
2081             || TYPE_CODE (t) == TYPE_CODE_STRING) && TYPE_NFIELDS (t) == 1
2082            && TYPE_CODE (TYPE_INDEX_TYPE (t)) == TYPE_CODE_RANGE)
2083     {
2084       LONGEST low_bound, high_bound;
2085       struct type *elt_type = check_typedef (TYPE_TARGET_TYPE (t));
2086
2087       get_discrete_bounds (TYPE_INDEX_TYPE (t), &low_bound, &high_bound);
2088
2089       return high_bound == low_bound && is_scalar_type_recursive (elt_type);
2090     }
2091   /* Are we dealing with a struct with one element?  */
2092   else if (TYPE_CODE (t) == TYPE_CODE_STRUCT && TYPE_NFIELDS (t) == 1)
2093     return is_scalar_type_recursive (TYPE_FIELD_TYPE (t, 0));
2094   else if (TYPE_CODE (t) == TYPE_CODE_UNION)
2095     {
2096       int i, n = TYPE_NFIELDS (t);
2097
2098       /* If all elements of the union are scalar, then the union is scalar.  */
2099       for (i = 0; i < n; i++)
2100         if (!is_scalar_type_recursive (TYPE_FIELD_TYPE (t, i)))
2101           return 0;
2102
2103       return 1;
2104     }
2105
2106   return 0;
2107 }
2108
2109 /* A helper function which returns true if types A and B represent the
2110    "same" class type.  This is true if the types have the same main
2111    type, or the same name.  */
2112
2113 int
2114 class_types_same_p (const struct type *a, const struct type *b)
2115 {
2116   return (TYPE_MAIN_TYPE (a) == TYPE_MAIN_TYPE (b)
2117           || (TYPE_NAME (a) && TYPE_NAME (b)
2118               && !strcmp (TYPE_NAME (a), TYPE_NAME (b))));
2119 }
2120
2121 /* If BASE is an ancestor of DCLASS return the distance between them.
2122    otherwise return -1;
2123    eg:
2124
2125    class A {};
2126    class B: public A {};
2127    class C: public B {};
2128    class D: C {};
2129
2130    distance_to_ancestor (A, A, 0) = 0
2131    distance_to_ancestor (A, B, 0) = 1
2132    distance_to_ancestor (A, C, 0) = 2
2133    distance_to_ancestor (A, D, 0) = 3
2134
2135    If PUBLIC is 1 then only public ancestors are considered,
2136    and the function returns the distance only if BASE is a public ancestor
2137    of DCLASS.
2138    Eg:
2139
2140    distance_to_ancestor (A, D, 1) = -1.  */
2141
2142 static int
2143 distance_to_ancestor (struct type *base, struct type *dclass, int public)
2144 {
2145   int i;
2146   int d;
2147
2148   CHECK_TYPEDEF (base);
2149   CHECK_TYPEDEF (dclass);
2150
2151   if (class_types_same_p (base, dclass))
2152     return 0;
2153
2154   for (i = 0; i < TYPE_N_BASECLASSES (dclass); i++)
2155     {
2156       if (public && ! BASETYPE_VIA_PUBLIC (dclass, i))
2157         continue;
2158
2159       d = distance_to_ancestor (base, TYPE_BASECLASS (dclass, i), public);
2160       if (d >= 0)
2161         return 1 + d;
2162     }
2163
2164   return -1;
2165 }
2166
2167 /* Check whether BASE is an ancestor or base class or DCLASS
2168    Return 1 if so, and 0 if not.
2169    Note: If BASE and DCLASS are of the same type, this function
2170    will return 1. So for some class A, is_ancestor (A, A) will
2171    return 1.  */
2172
2173 int
2174 is_ancestor (struct type *base, struct type *dclass)
2175 {
2176   return distance_to_ancestor (base, dclass, 0) >= 0;
2177 }
2178
2179 /* Like is_ancestor, but only returns true when BASE is a public
2180    ancestor of DCLASS.  */
2181
2182 int
2183 is_public_ancestor (struct type *base, struct type *dclass)
2184 {
2185   return distance_to_ancestor (base, dclass, 1) >= 0;
2186 }
2187
2188 /* A helper function for is_unique_ancestor.  */
2189
2190 static int
2191 is_unique_ancestor_worker (struct type *base, struct type *dclass,
2192                            int *offset,
2193                            const gdb_byte *valaddr, int embedded_offset,
2194                            CORE_ADDR address, struct value *val)
2195 {
2196   int i, count = 0;
2197
2198   CHECK_TYPEDEF (base);
2199   CHECK_TYPEDEF (dclass);
2200
2201   for (i = 0; i < TYPE_N_BASECLASSES (dclass) && count < 2; ++i)
2202     {
2203       struct type *iter;
2204       int this_offset;
2205
2206       iter = check_typedef (TYPE_BASECLASS (dclass, i));
2207
2208       this_offset = baseclass_offset (dclass, i, valaddr, embedded_offset,
2209                                       address, val);
2210
2211       if (class_types_same_p (base, iter))
2212         {
2213           /* If this is the first subclass, set *OFFSET and set count
2214              to 1.  Otherwise, if this is at the same offset as
2215              previous instances, do nothing.  Otherwise, increment
2216              count.  */
2217           if (*offset == -1)
2218             {
2219               *offset = this_offset;
2220               count = 1;
2221             }
2222           else if (this_offset == *offset)
2223             {
2224               /* Nothing.  */
2225             }
2226           else
2227             ++count;
2228         }
2229       else
2230         count += is_unique_ancestor_worker (base, iter, offset,
2231                                             valaddr,
2232                                             embedded_offset + this_offset,
2233                                             address, val);
2234     }
2235
2236   return count;
2237 }
2238
2239 /* Like is_ancestor, but only returns true if BASE is a unique base
2240    class of the type of VAL.  */
2241
2242 int
2243 is_unique_ancestor (struct type *base, struct value *val)
2244 {
2245   int offset = -1;
2246
2247   return is_unique_ancestor_worker (base, value_type (val), &offset,
2248                                     value_contents_for_printing (val),
2249                                     value_embedded_offset (val),
2250                                     value_address (val), val) == 1;
2251 }
2252
2253 \f
2254 /* Overload resolution.  */
2255
2256 /* Return the sum of the rank of A with the rank of B.  */
2257
2258 struct rank
2259 sum_ranks (struct rank a, struct rank b)
2260 {
2261   struct rank c;
2262   c.rank = a.rank + b.rank;
2263   c.subrank = a.subrank + b.subrank;
2264   return c;
2265 }
2266
2267 /* Compare rank A and B and return:
2268    0 if a = b
2269    1 if a is better than b
2270   -1 if b is better than a.  */
2271
2272 int
2273 compare_ranks (struct rank a, struct rank b)
2274 {
2275   if (a.rank == b.rank)
2276     {
2277       if (a.subrank == b.subrank)
2278         return 0;
2279       if (a.subrank < b.subrank)
2280         return 1;
2281       if (a.subrank > b.subrank)
2282         return -1;
2283     }
2284
2285   if (a.rank < b.rank)
2286     return 1;
2287
2288   /* a.rank > b.rank */
2289   return -1;
2290 }
2291
2292 /* Functions for overload resolution begin here.  */
2293
2294 /* Compare two badness vectors A and B and return the result.
2295    0 => A and B are identical
2296    1 => A and B are incomparable
2297    2 => A is better than B
2298    3 => A is worse than B  */
2299
2300 int
2301 compare_badness (struct badness_vector *a, struct badness_vector *b)
2302 {
2303   int i;
2304   int tmp;
2305   short found_pos = 0;          /* any positives in c? */
2306   short found_neg = 0;          /* any negatives in c? */
2307
2308   /* differing lengths => incomparable */
2309   if (a->length != b->length)
2310     return 1;
2311
2312   /* Subtract b from a */
2313   for (i = 0; i < a->length; i++)
2314     {
2315       tmp = compare_ranks (b->rank[i], a->rank[i]);
2316       if (tmp > 0)
2317         found_pos = 1;
2318       else if (tmp < 0)
2319         found_neg = 1;
2320     }
2321
2322   if (found_pos)
2323     {
2324       if (found_neg)
2325         return 1;               /* incomparable */
2326       else
2327         return 3;               /* A > B */
2328     }
2329   else
2330     /* no positives */
2331     {
2332       if (found_neg)
2333         return 2;               /* A < B */
2334       else
2335         return 0;               /* A == B */
2336     }
2337 }
2338
2339 /* Rank a function by comparing its parameter types (PARMS, length
2340    NPARMS), to the types of an argument list (ARGS, length NARGS).
2341    Return a pointer to a badness vector.  This has NARGS + 1
2342    entries.  */
2343
2344 struct badness_vector *
2345 rank_function (struct type **parms, int nparms, 
2346                struct value **args, int nargs)
2347 {
2348   int i;
2349   struct badness_vector *bv;
2350   int min_len = nparms < nargs ? nparms : nargs;
2351
2352   bv = xmalloc (sizeof (struct badness_vector));
2353   bv->length = nargs + 1;       /* add 1 for the length-match rank.  */
2354   bv->rank = xmalloc ((nargs + 1) * sizeof (int));
2355
2356   /* First compare the lengths of the supplied lists.
2357      If there is a mismatch, set it to a high value.  */
2358
2359   /* pai/1997-06-03 FIXME: when we have debug info about default
2360      arguments and ellipsis parameter lists, we should consider those
2361      and rank the length-match more finely.  */
2362
2363   LENGTH_MATCH (bv) = (nargs != nparms)
2364                       ? LENGTH_MISMATCH_BADNESS
2365                       : EXACT_MATCH_BADNESS;
2366
2367   /* Now rank all the parameters of the candidate function.  */
2368   for (i = 1; i <= min_len; i++)
2369     bv->rank[i] = rank_one_type (parms[i - 1], value_type (args[i - 1]),
2370                                  args[i - 1]);
2371
2372   /* If more arguments than parameters, add dummy entries.  */
2373   for (i = min_len + 1; i <= nargs; i++)
2374     bv->rank[i] = TOO_FEW_PARAMS_BADNESS;
2375
2376   return bv;
2377 }
2378
2379 /* Compare the names of two integer types, assuming that any sign
2380    qualifiers have been checked already.  We do it this way because
2381    there may be an "int" in the name of one of the types.  */
2382
2383 static int
2384 integer_types_same_name_p (const char *first, const char *second)
2385 {
2386   int first_p, second_p;
2387
2388   /* If both are shorts, return 1; if neither is a short, keep
2389      checking.  */
2390   first_p = (strstr (first, "short") != NULL);
2391   second_p = (strstr (second, "short") != NULL);
2392   if (first_p && second_p)
2393     return 1;
2394   if (first_p || second_p)
2395     return 0;
2396
2397   /* Likewise for long.  */
2398   first_p = (strstr (first, "long") != NULL);
2399   second_p = (strstr (second, "long") != NULL);
2400   if (first_p && second_p)
2401     return 1;
2402   if (first_p || second_p)
2403     return 0;
2404
2405   /* Likewise for char.  */
2406   first_p = (strstr (first, "char") != NULL);
2407   second_p = (strstr (second, "char") != NULL);
2408   if (first_p && second_p)
2409     return 1;
2410   if (first_p || second_p)
2411     return 0;
2412
2413   /* They must both be ints.  */
2414   return 1;
2415 }
2416
2417 /* Compares type A to type B returns 1 if the represent the same type
2418    0 otherwise.  */
2419
2420 int
2421 types_equal (struct type *a, struct type *b)
2422 {
2423   /* Identical type pointers.  */
2424   /* However, this still doesn't catch all cases of same type for b
2425      and a.  The reason is that builtin types are different from
2426      the same ones constructed from the object.  */
2427   if (a == b)
2428     return 1;
2429
2430   /* Resolve typedefs */
2431   if (TYPE_CODE (a) == TYPE_CODE_TYPEDEF)
2432     a = check_typedef (a);
2433   if (TYPE_CODE (b) == TYPE_CODE_TYPEDEF)
2434     b = check_typedef (b);
2435
2436   /* If after resolving typedefs a and b are not of the same type
2437      code then they are not equal.  */
2438   if (TYPE_CODE (a) != TYPE_CODE (b))
2439     return 0;
2440
2441   /* If a and b are both pointers types or both reference types then
2442      they are equal of the same type iff the objects they refer to are
2443      of the same type.  */
2444   if (TYPE_CODE (a) == TYPE_CODE_PTR
2445       || TYPE_CODE (a) == TYPE_CODE_REF)
2446     return types_equal (TYPE_TARGET_TYPE (a),
2447                         TYPE_TARGET_TYPE (b));
2448
2449   /* Well, damnit, if the names are exactly the same, I'll say they
2450      are exactly the same.  This happens when we generate method
2451      stubs.  The types won't point to the same address, but they
2452      really are the same.  */
2453
2454   if (TYPE_NAME (a) && TYPE_NAME (b)
2455       && strcmp (TYPE_NAME (a), TYPE_NAME (b)) == 0)
2456     return 1;
2457
2458   /* Check if identical after resolving typedefs.  */
2459   if (a == b)
2460     return 1;
2461
2462   return 0;
2463 }
2464
2465 /* Compare one type (PARM) for compatibility with another (ARG).
2466  * PARM is intended to be the parameter type of a function; and
2467  * ARG is the supplied argument's type.  This function tests if
2468  * the latter can be converted to the former.
2469  * VALUE is the argument's value or NULL if none (or called recursively)
2470  *
2471  * Return 0 if they are identical types;
2472  * Otherwise, return an integer which corresponds to how compatible
2473  * PARM is to ARG.  The higher the return value, the worse the match.
2474  * Generally the "bad" conversions are all uniformly assigned a 100.  */
2475
2476 struct rank
2477 rank_one_type (struct type *parm, struct type *arg, struct value *value)
2478 {
2479   struct rank rank = {0,0};
2480
2481   if (types_equal (parm, arg))
2482     return EXACT_MATCH_BADNESS;
2483
2484   /* Resolve typedefs */
2485   if (TYPE_CODE (parm) == TYPE_CODE_TYPEDEF)
2486     parm = check_typedef (parm);
2487   if (TYPE_CODE (arg) == TYPE_CODE_TYPEDEF)
2488     arg = check_typedef (arg);
2489
2490   /* See through references, since we can almost make non-references
2491      references.  */
2492   if (TYPE_CODE (arg) == TYPE_CODE_REF)
2493     return (sum_ranks (rank_one_type (parm, TYPE_TARGET_TYPE (arg), NULL),
2494                        REFERENCE_CONVERSION_BADNESS));
2495   if (TYPE_CODE (parm) == TYPE_CODE_REF)
2496     return (sum_ranks (rank_one_type (TYPE_TARGET_TYPE (parm), arg, NULL),
2497                        REFERENCE_CONVERSION_BADNESS));
2498   if (overload_debug)
2499   /* Debugging only.  */
2500     fprintf_filtered (gdb_stderr, 
2501                       "------ Arg is %s [%d], parm is %s [%d]\n",
2502                       TYPE_NAME (arg), TYPE_CODE (arg), 
2503                       TYPE_NAME (parm), TYPE_CODE (parm));
2504
2505   /* x -> y means arg of type x being supplied for parameter of type y.  */
2506
2507   switch (TYPE_CODE (parm))
2508     {
2509     case TYPE_CODE_PTR:
2510       switch (TYPE_CODE (arg))
2511         {
2512         case TYPE_CODE_PTR:
2513
2514           /* Allowed pointer conversions are:
2515              (a) pointer to void-pointer conversion.  */
2516           if (TYPE_CODE (TYPE_TARGET_TYPE (parm)) == TYPE_CODE_VOID)
2517             return VOID_PTR_CONVERSION_BADNESS;
2518
2519           /* (b) pointer to ancestor-pointer conversion.  */
2520           rank.subrank = distance_to_ancestor (TYPE_TARGET_TYPE (parm),
2521                                                TYPE_TARGET_TYPE (arg),
2522                                                0);
2523           if (rank.subrank >= 0)
2524             return sum_ranks (BASE_PTR_CONVERSION_BADNESS, rank);
2525
2526           return INCOMPATIBLE_TYPE_BADNESS;
2527         case TYPE_CODE_ARRAY:
2528           if (types_equal (TYPE_TARGET_TYPE (parm),
2529                            TYPE_TARGET_TYPE (arg)))
2530             return EXACT_MATCH_BADNESS;
2531           return INCOMPATIBLE_TYPE_BADNESS;
2532         case TYPE_CODE_FUNC:
2533           return rank_one_type (TYPE_TARGET_TYPE (parm), arg, NULL);
2534         case TYPE_CODE_INT:
2535           if (value != NULL && TYPE_CODE (value_type (value)) == TYPE_CODE_INT)
2536             {
2537               if (value_as_long (value) == 0)
2538                 {
2539                   /* Null pointer conversion: allow it to be cast to a pointer.
2540                      [4.10.1 of C++ standard draft n3290]  */
2541                   return NULL_POINTER_CONVERSION_BADNESS;
2542                 }
2543               else
2544                 {
2545                   /* If type checking is disabled, allow the conversion.  */
2546                   if (!strict_type_checking)
2547                     return NS_INTEGER_POINTER_CONVERSION_BADNESS;
2548                 }
2549             }
2550           /* fall through  */
2551         case TYPE_CODE_ENUM:
2552         case TYPE_CODE_FLAGS:
2553         case TYPE_CODE_CHAR:
2554         case TYPE_CODE_RANGE:
2555         case TYPE_CODE_BOOL:
2556         default:
2557           return INCOMPATIBLE_TYPE_BADNESS;
2558         }
2559     case TYPE_CODE_ARRAY:
2560       switch (TYPE_CODE (arg))
2561         {
2562         case TYPE_CODE_PTR:
2563         case TYPE_CODE_ARRAY:
2564           return rank_one_type (TYPE_TARGET_TYPE (parm), 
2565                                 TYPE_TARGET_TYPE (arg), NULL);
2566         default:
2567           return INCOMPATIBLE_TYPE_BADNESS;
2568         }
2569     case TYPE_CODE_FUNC:
2570       switch (TYPE_CODE (arg))
2571         {
2572         case TYPE_CODE_PTR:     /* funcptr -> func */
2573           return rank_one_type (parm, TYPE_TARGET_TYPE (arg), NULL);
2574         default:
2575           return INCOMPATIBLE_TYPE_BADNESS;
2576         }
2577     case TYPE_CODE_INT:
2578       switch (TYPE_CODE (arg))
2579         {
2580         case TYPE_CODE_INT:
2581           if (TYPE_LENGTH (arg) == TYPE_LENGTH (parm))
2582             {
2583               /* Deal with signed, unsigned, and plain chars and
2584                  signed and unsigned ints.  */
2585               if (TYPE_NOSIGN (parm))
2586                 {
2587                   /* This case only for character types.  */
2588                   if (TYPE_NOSIGN (arg))
2589                     return EXACT_MATCH_BADNESS; /* plain char -> plain char */
2590                   else          /* signed/unsigned char -> plain char */
2591                     return INTEGER_CONVERSION_BADNESS;
2592                 }
2593               else if (TYPE_UNSIGNED (parm))
2594                 {
2595                   if (TYPE_UNSIGNED (arg))
2596                     {
2597                       /* unsigned int -> unsigned int, or 
2598                          unsigned long -> unsigned long */
2599                       if (integer_types_same_name_p (TYPE_NAME (parm), 
2600                                                      TYPE_NAME (arg)))
2601                         return EXACT_MATCH_BADNESS;
2602                       else if (integer_types_same_name_p (TYPE_NAME (arg), 
2603                                                           "int")
2604                                && integer_types_same_name_p (TYPE_NAME (parm),
2605                                                              "long"))
2606                         /* unsigned int -> unsigned long */
2607                         return INTEGER_PROMOTION_BADNESS;
2608                       else
2609                         /* unsigned long -> unsigned int */
2610                         return INTEGER_CONVERSION_BADNESS;
2611                     }
2612                   else
2613                     {
2614                       if (integer_types_same_name_p (TYPE_NAME (arg), 
2615                                                      "long")
2616                           && integer_types_same_name_p (TYPE_NAME (parm), 
2617                                                         "int"))
2618                         /* signed long -> unsigned int */
2619                         return INTEGER_CONVERSION_BADNESS;
2620                       else
2621                         /* signed int/long -> unsigned int/long */
2622                         return INTEGER_CONVERSION_BADNESS;
2623                     }
2624                 }
2625               else if (!TYPE_NOSIGN (arg) && !TYPE_UNSIGNED (arg))
2626                 {
2627                   if (integer_types_same_name_p (TYPE_NAME (parm), 
2628                                                  TYPE_NAME (arg)))
2629                     return EXACT_MATCH_BADNESS;
2630                   else if (integer_types_same_name_p (TYPE_NAME (arg), 
2631                                                       "int")
2632                            && integer_types_same_name_p (TYPE_NAME (parm), 
2633                                                          "long"))
2634                     return INTEGER_PROMOTION_BADNESS;
2635                   else
2636                     return INTEGER_CONVERSION_BADNESS;
2637                 }
2638               else
2639                 return INTEGER_CONVERSION_BADNESS;
2640             }
2641           else if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
2642             return INTEGER_PROMOTION_BADNESS;
2643           else
2644             return INTEGER_CONVERSION_BADNESS;
2645         case TYPE_CODE_ENUM:
2646         case TYPE_CODE_FLAGS:
2647         case TYPE_CODE_CHAR:
2648         case TYPE_CODE_RANGE:
2649         case TYPE_CODE_BOOL:
2650           return INTEGER_PROMOTION_BADNESS;
2651         case TYPE_CODE_FLT:
2652           return INT_FLOAT_CONVERSION_BADNESS;
2653         case TYPE_CODE_PTR:
2654           return NS_POINTER_CONVERSION_BADNESS;
2655         default:
2656           return INCOMPATIBLE_TYPE_BADNESS;
2657         }
2658       break;
2659     case TYPE_CODE_ENUM:
2660       switch (TYPE_CODE (arg))
2661         {
2662         case TYPE_CODE_INT:
2663         case TYPE_CODE_CHAR:
2664         case TYPE_CODE_RANGE:
2665         case TYPE_CODE_BOOL:
2666         case TYPE_CODE_ENUM:
2667           return INTEGER_CONVERSION_BADNESS;
2668         case TYPE_CODE_FLT:
2669           return INT_FLOAT_CONVERSION_BADNESS;
2670         default:
2671           return INCOMPATIBLE_TYPE_BADNESS;
2672         }
2673       break;
2674     case TYPE_CODE_CHAR:
2675       switch (TYPE_CODE (arg))
2676         {
2677         case TYPE_CODE_RANGE:
2678         case TYPE_CODE_BOOL:
2679         case TYPE_CODE_ENUM:
2680           return INTEGER_CONVERSION_BADNESS;
2681         case TYPE_CODE_FLT:
2682           return INT_FLOAT_CONVERSION_BADNESS;
2683         case TYPE_CODE_INT:
2684           if (TYPE_LENGTH (arg) > TYPE_LENGTH (parm))
2685             return INTEGER_CONVERSION_BADNESS;
2686           else if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
2687             return INTEGER_PROMOTION_BADNESS;
2688           /* >>> !! else fall through !! <<< */
2689         case TYPE_CODE_CHAR:
2690           /* Deal with signed, unsigned, and plain chars for C++ and
2691              with int cases falling through from previous case.  */
2692           if (TYPE_NOSIGN (parm))
2693             {
2694               if (TYPE_NOSIGN (arg))
2695                 return EXACT_MATCH_BADNESS;
2696               else
2697                 return INTEGER_CONVERSION_BADNESS;
2698             }
2699           else if (TYPE_UNSIGNED (parm))
2700             {
2701               if (TYPE_UNSIGNED (arg))
2702                 return EXACT_MATCH_BADNESS;
2703               else
2704                 return INTEGER_PROMOTION_BADNESS;
2705             }
2706           else if (!TYPE_NOSIGN (arg) && !TYPE_UNSIGNED (arg))
2707             return EXACT_MATCH_BADNESS;
2708           else
2709             return INTEGER_CONVERSION_BADNESS;
2710         default:
2711           return INCOMPATIBLE_TYPE_BADNESS;
2712         }
2713       break;
2714     case TYPE_CODE_RANGE:
2715       switch (TYPE_CODE (arg))
2716         {
2717         case TYPE_CODE_INT:
2718         case TYPE_CODE_CHAR:
2719         case TYPE_CODE_RANGE:
2720         case TYPE_CODE_BOOL:
2721         case TYPE_CODE_ENUM:
2722           return INTEGER_CONVERSION_BADNESS;
2723         case TYPE_CODE_FLT:
2724           return INT_FLOAT_CONVERSION_BADNESS;
2725         default:
2726           return INCOMPATIBLE_TYPE_BADNESS;
2727         }
2728       break;
2729     case TYPE_CODE_BOOL:
2730       switch (TYPE_CODE (arg))
2731         {
2732           /* n3290 draft, section 4.12.1 (conv.bool):
2733
2734              "A prvalue of arithmetic, unscoped enumeration, pointer, or
2735              pointer to member type can be converted to a prvalue of type
2736              bool.  A zero value, null pointer value, or null member pointer
2737              value is converted to false; any other value is converted to
2738              true.  A prvalue of type std::nullptr_t can be converted to a
2739              prvalue of type bool; the resulting value is false."  */
2740         case TYPE_CODE_INT:
2741         case TYPE_CODE_CHAR:
2742         case TYPE_CODE_ENUM:
2743         case TYPE_CODE_FLT:
2744         case TYPE_CODE_MEMBERPTR:
2745         case TYPE_CODE_PTR:
2746           return BOOL_CONVERSION_BADNESS;
2747         case TYPE_CODE_RANGE:
2748           return INCOMPATIBLE_TYPE_BADNESS;
2749         case TYPE_CODE_BOOL:
2750           return EXACT_MATCH_BADNESS;
2751         default:
2752           return INCOMPATIBLE_TYPE_BADNESS;
2753         }
2754       break;
2755     case TYPE_CODE_FLT:
2756       switch (TYPE_CODE (arg))
2757         {
2758         case TYPE_CODE_FLT:
2759           if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
2760             return FLOAT_PROMOTION_BADNESS;
2761           else if (TYPE_LENGTH (arg) == TYPE_LENGTH (parm))
2762             return EXACT_MATCH_BADNESS;
2763           else
2764             return FLOAT_CONVERSION_BADNESS;
2765         case TYPE_CODE_INT:
2766         case TYPE_CODE_BOOL:
2767         case TYPE_CODE_ENUM:
2768         case TYPE_CODE_RANGE:
2769         case TYPE_CODE_CHAR:
2770           return INT_FLOAT_CONVERSION_BADNESS;
2771         default:
2772           return INCOMPATIBLE_TYPE_BADNESS;
2773         }
2774       break;
2775     case TYPE_CODE_COMPLEX:
2776       switch (TYPE_CODE (arg))
2777         {               /* Strictly not needed for C++, but...  */
2778         case TYPE_CODE_FLT:
2779           return FLOAT_PROMOTION_BADNESS;
2780         case TYPE_CODE_COMPLEX:
2781           return EXACT_MATCH_BADNESS;
2782         default:
2783           return INCOMPATIBLE_TYPE_BADNESS;
2784         }
2785       break;
2786     case TYPE_CODE_STRUCT:
2787       /* currently same as TYPE_CODE_CLASS.  */
2788       switch (TYPE_CODE (arg))
2789         {
2790         case TYPE_CODE_STRUCT:
2791           /* Check for derivation */
2792           rank.subrank = distance_to_ancestor (parm, arg, 0);
2793           if (rank.subrank >= 0)
2794             return sum_ranks (BASE_CONVERSION_BADNESS, rank);
2795           /* else fall through */
2796         default:
2797           return INCOMPATIBLE_TYPE_BADNESS;
2798         }
2799       break;
2800     case TYPE_CODE_UNION:
2801       switch (TYPE_CODE (arg))
2802         {
2803         case TYPE_CODE_UNION:
2804         default:
2805           return INCOMPATIBLE_TYPE_BADNESS;
2806         }
2807       break;
2808     case TYPE_CODE_MEMBERPTR:
2809       switch (TYPE_CODE (arg))
2810         {
2811         default:
2812           return INCOMPATIBLE_TYPE_BADNESS;
2813         }
2814       break;
2815     case TYPE_CODE_METHOD:
2816       switch (TYPE_CODE (arg))
2817         {
2818
2819         default:
2820           return INCOMPATIBLE_TYPE_BADNESS;
2821         }
2822       break;
2823     case TYPE_CODE_REF:
2824       switch (TYPE_CODE (arg))
2825         {
2826
2827         default:
2828           return INCOMPATIBLE_TYPE_BADNESS;
2829         }
2830
2831       break;
2832     case TYPE_CODE_SET:
2833       switch (TYPE_CODE (arg))
2834         {
2835           /* Not in C++ */
2836         case TYPE_CODE_SET:
2837           return rank_one_type (TYPE_FIELD_TYPE (parm, 0), 
2838                                 TYPE_FIELD_TYPE (arg, 0), NULL);
2839         default:
2840           return INCOMPATIBLE_TYPE_BADNESS;
2841         }
2842       break;
2843     case TYPE_CODE_VOID:
2844     default:
2845       return INCOMPATIBLE_TYPE_BADNESS;
2846     }                           /* switch (TYPE_CODE (arg)) */
2847 }
2848
2849 /* End of functions for overload resolution.  */
2850 \f
2851 /* Routines to pretty-print types.  */
2852
2853 static void
2854 print_bit_vector (B_TYPE *bits, int nbits)
2855 {
2856   int bitno;
2857
2858   for (bitno = 0; bitno < nbits; bitno++)
2859     {
2860       if ((bitno % 8) == 0)
2861         {
2862           puts_filtered (" ");
2863         }
2864       if (B_TST (bits, bitno))
2865         printf_filtered (("1"));
2866       else
2867         printf_filtered (("0"));
2868     }
2869 }
2870
2871 /* Note the first arg should be the "this" pointer, we may not want to
2872    include it since we may get into a infinitely recursive
2873    situation.  */
2874
2875 static void
2876 print_arg_types (struct field *args, int nargs, int spaces)
2877 {
2878   if (args != NULL)
2879     {
2880       int i;
2881
2882       for (i = 0; i < nargs; i++)
2883         recursive_dump_type (args[i].type, spaces + 2);
2884     }
2885 }
2886
2887 int
2888 field_is_static (struct field *f)
2889 {
2890   /* "static" fields are the fields whose location is not relative
2891      to the address of the enclosing struct.  It would be nice to
2892      have a dedicated flag that would be set for static fields when
2893      the type is being created.  But in practice, checking the field
2894      loc_kind should give us an accurate answer.  */
2895   return (FIELD_LOC_KIND (*f) == FIELD_LOC_KIND_PHYSNAME
2896           || FIELD_LOC_KIND (*f) == FIELD_LOC_KIND_PHYSADDR);
2897 }
2898
2899 static void
2900 dump_fn_fieldlists (struct type *type, int spaces)
2901 {
2902   int method_idx;
2903   int overload_idx;
2904   struct fn_field *f;
2905
2906   printfi_filtered (spaces, "fn_fieldlists ");
2907   gdb_print_host_address (TYPE_FN_FIELDLISTS (type), gdb_stdout);
2908   printf_filtered ("\n");
2909   for (method_idx = 0; method_idx < TYPE_NFN_FIELDS (type); method_idx++)
2910     {
2911       f = TYPE_FN_FIELDLIST1 (type, method_idx);
2912       printfi_filtered (spaces + 2, "[%d] name '%s' (",
2913                         method_idx,
2914                         TYPE_FN_FIELDLIST_NAME (type, method_idx));
2915       gdb_print_host_address (TYPE_FN_FIELDLIST_NAME (type, method_idx),
2916                               gdb_stdout);
2917       printf_filtered (_(") length %d\n"),
2918                        TYPE_FN_FIELDLIST_LENGTH (type, method_idx));
2919       for (overload_idx = 0;
2920            overload_idx < TYPE_FN_FIELDLIST_LENGTH (type, method_idx);
2921            overload_idx++)
2922         {
2923           printfi_filtered (spaces + 4, "[%d] physname '%s' (",
2924                             overload_idx,
2925                             TYPE_FN_FIELD_PHYSNAME (f, overload_idx));
2926           gdb_print_host_address (TYPE_FN_FIELD_PHYSNAME (f, overload_idx),
2927                                   gdb_stdout);
2928           printf_filtered (")\n");
2929           printfi_filtered (spaces + 8, "type ");
2930           gdb_print_host_address (TYPE_FN_FIELD_TYPE (f, overload_idx), 
2931                                   gdb_stdout);
2932           printf_filtered ("\n");
2933
2934           recursive_dump_type (TYPE_FN_FIELD_TYPE (f, overload_idx),
2935                                spaces + 8 + 2);
2936
2937           printfi_filtered (spaces + 8, "args ");
2938           gdb_print_host_address (TYPE_FN_FIELD_ARGS (f, overload_idx), 
2939                                   gdb_stdout);
2940           printf_filtered ("\n");
2941
2942           print_arg_types (TYPE_FN_FIELD_ARGS (f, overload_idx),
2943                            TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (f, 
2944                                                              overload_idx)),
2945                            spaces);
2946           printfi_filtered (spaces + 8, "fcontext ");
2947           gdb_print_host_address (TYPE_FN_FIELD_FCONTEXT (f, overload_idx),
2948                                   gdb_stdout);
2949           printf_filtered ("\n");
2950
2951           printfi_filtered (spaces + 8, "is_const %d\n",
2952                             TYPE_FN_FIELD_CONST (f, overload_idx));
2953           printfi_filtered (spaces + 8, "is_volatile %d\n",
2954                             TYPE_FN_FIELD_VOLATILE (f, overload_idx));
2955           printfi_filtered (spaces + 8, "is_private %d\n",
2956                             TYPE_FN_FIELD_PRIVATE (f, overload_idx));
2957           printfi_filtered (spaces + 8, "is_protected %d\n",
2958                             TYPE_FN_FIELD_PROTECTED (f, overload_idx));
2959           printfi_filtered (spaces + 8, "is_stub %d\n",
2960                             TYPE_FN_FIELD_STUB (f, overload_idx));
2961           printfi_filtered (spaces + 8, "voffset %u\n",
2962                             TYPE_FN_FIELD_VOFFSET (f, overload_idx));
2963         }
2964     }
2965 }
2966
2967 static void
2968 print_cplus_stuff (struct type *type, int spaces)
2969 {
2970   printfi_filtered (spaces, "n_baseclasses %d\n",
2971                     TYPE_N_BASECLASSES (type));
2972   printfi_filtered (spaces, "nfn_fields %d\n",
2973                     TYPE_NFN_FIELDS (type));
2974   if (TYPE_N_BASECLASSES (type) > 0)
2975     {
2976       printfi_filtered (spaces, "virtual_field_bits (%d bits at *",
2977                         TYPE_N_BASECLASSES (type));
2978       gdb_print_host_address (TYPE_FIELD_VIRTUAL_BITS (type), 
2979                               gdb_stdout);
2980       printf_filtered (")");
2981
2982       print_bit_vector (TYPE_FIELD_VIRTUAL_BITS (type),
2983                         TYPE_N_BASECLASSES (type));
2984       puts_filtered ("\n");
2985     }
2986   if (TYPE_NFIELDS (type) > 0)
2987     {
2988       if (TYPE_FIELD_PRIVATE_BITS (type) != NULL)
2989         {
2990           printfi_filtered (spaces, 
2991                             "private_field_bits (%d bits at *",
2992                             TYPE_NFIELDS (type));
2993           gdb_print_host_address (TYPE_FIELD_PRIVATE_BITS (type), 
2994                                   gdb_stdout);
2995           printf_filtered (")");
2996           print_bit_vector (TYPE_FIELD_PRIVATE_BITS (type),
2997                             TYPE_NFIELDS (type));
2998           puts_filtered ("\n");
2999         }
3000       if (TYPE_FIELD_PROTECTED_BITS (type) != NULL)
3001         {
3002           printfi_filtered (spaces, 
3003                             "protected_field_bits (%d bits at *",
3004                             TYPE_NFIELDS (type));
3005           gdb_print_host_address (TYPE_FIELD_PROTECTED_BITS (type), 
3006                                   gdb_stdout);
3007           printf_filtered (")");
3008           print_bit_vector (TYPE_FIELD_PROTECTED_BITS (type),
3009                             TYPE_NFIELDS (type));
3010           puts_filtered ("\n");
3011         }
3012     }
3013   if (TYPE_NFN_FIELDS (type) > 0)
3014     {
3015       dump_fn_fieldlists (type, spaces);
3016     }
3017 }
3018
3019 /* Print the contents of the TYPE's type_specific union, assuming that
3020    its type-specific kind is TYPE_SPECIFIC_GNAT_STUFF.  */
3021
3022 static void
3023 print_gnat_stuff (struct type *type, int spaces)
3024 {
3025   struct type *descriptive_type = TYPE_DESCRIPTIVE_TYPE (type);
3026
3027   recursive_dump_type (descriptive_type, spaces + 2);
3028 }
3029
3030 static struct obstack dont_print_type_obstack;
3031
3032 void
3033 recursive_dump_type (struct type *type, int spaces)
3034 {
3035   int idx;
3036
3037   if (spaces == 0)
3038     obstack_begin (&dont_print_type_obstack, 0);
3039
3040   if (TYPE_NFIELDS (type) > 0
3041       || (HAVE_CPLUS_STRUCT (type) && TYPE_NFN_FIELDS (type) > 0))
3042     {
3043       struct type **first_dont_print
3044         = (struct type **) obstack_base (&dont_print_type_obstack);
3045
3046       int i = (struct type **) 
3047         obstack_next_free (&dont_print_type_obstack) - first_dont_print;
3048
3049       while (--i >= 0)
3050         {
3051           if (type == first_dont_print[i])
3052             {
3053               printfi_filtered (spaces, "type node ");
3054               gdb_print_host_address (type, gdb_stdout);
3055               printf_filtered (_(" <same as already seen type>\n"));
3056               return;
3057             }
3058         }
3059
3060       obstack_ptr_grow (&dont_print_type_obstack, type);
3061     }
3062
3063   printfi_filtered (spaces, "type node ");
3064   gdb_print_host_address (type, gdb_stdout);
3065   printf_filtered ("\n");
3066   printfi_filtered (spaces, "name '%s' (",
3067                     TYPE_NAME (type) ? TYPE_NAME (type) : "<NULL>");
3068   gdb_print_host_address (TYPE_NAME (type), gdb_stdout);
3069   printf_filtered (")\n");
3070   printfi_filtered (spaces, "tagname '%s' (",
3071                     TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) : "<NULL>");
3072   gdb_print_host_address (TYPE_TAG_NAME (type), gdb_stdout);
3073   printf_filtered (")\n");
3074   printfi_filtered (spaces, "code 0x%x ", TYPE_CODE (type));
3075   switch (TYPE_CODE (type))
3076     {
3077     case TYPE_CODE_UNDEF:
3078       printf_filtered ("(TYPE_CODE_UNDEF)");
3079       break;
3080     case TYPE_CODE_PTR:
3081       printf_filtered ("(TYPE_CODE_PTR)");
3082       break;
3083     case TYPE_CODE_ARRAY:
3084       printf_filtered ("(TYPE_CODE_ARRAY)");
3085       break;
3086     case TYPE_CODE_STRUCT:
3087       printf_filtered ("(TYPE_CODE_STRUCT)");
3088       break;
3089     case TYPE_CODE_UNION:
3090       printf_filtered ("(TYPE_CODE_UNION)");
3091       break;
3092     case TYPE_CODE_ENUM:
3093       printf_filtered ("(TYPE_CODE_ENUM)");
3094       break;
3095     case TYPE_CODE_FLAGS:
3096       printf_filtered ("(TYPE_CODE_FLAGS)");
3097       break;
3098     case TYPE_CODE_FUNC:
3099       printf_filtered ("(TYPE_CODE_FUNC)");
3100       break;
3101     case TYPE_CODE_INT:
3102       printf_filtered ("(TYPE_CODE_INT)");
3103       break;
3104     case TYPE_CODE_FLT:
3105       printf_filtered ("(TYPE_CODE_FLT)");
3106       break;
3107     case TYPE_CODE_VOID:
3108       printf_filtered ("(TYPE_CODE_VOID)");
3109       break;
3110     case TYPE_CODE_SET:
3111       printf_filtered ("(TYPE_CODE_SET)");
3112       break;
3113     case TYPE_CODE_RANGE:
3114       printf_filtered ("(TYPE_CODE_RANGE)");
3115       break;
3116     case TYPE_CODE_STRING:
3117       printf_filtered ("(TYPE_CODE_STRING)");
3118       break;
3119     case TYPE_CODE_ERROR:
3120       printf_filtered ("(TYPE_CODE_ERROR)");
3121       break;
3122     case TYPE_CODE_MEMBERPTR:
3123       printf_filtered ("(TYPE_CODE_MEMBERPTR)");
3124       break;
3125     case TYPE_CODE_METHODPTR:
3126       printf_filtered ("(TYPE_CODE_METHODPTR)");
3127       break;
3128     case TYPE_CODE_METHOD:
3129       printf_filtered ("(TYPE_CODE_METHOD)");
3130       break;
3131     case TYPE_CODE_REF:
3132       printf_filtered ("(TYPE_CODE_REF)");
3133       break;
3134     case TYPE_CODE_CHAR:
3135       printf_filtered ("(TYPE_CODE_CHAR)");
3136       break;
3137     case TYPE_CODE_BOOL:
3138       printf_filtered ("(TYPE_CODE_BOOL)");
3139       break;
3140     case TYPE_CODE_COMPLEX:
3141       printf_filtered ("(TYPE_CODE_COMPLEX)");
3142       break;
3143     case TYPE_CODE_TYPEDEF:
3144       printf_filtered ("(TYPE_CODE_TYPEDEF)");
3145       break;
3146     case TYPE_CODE_NAMESPACE:
3147       printf_filtered ("(TYPE_CODE_NAMESPACE)");
3148       break;
3149     default:
3150       printf_filtered ("(UNKNOWN TYPE CODE)");
3151       break;
3152     }
3153   puts_filtered ("\n");
3154   printfi_filtered (spaces, "length %d\n", TYPE_LENGTH (type));
3155   if (TYPE_OBJFILE_OWNED (type))
3156     {
3157       printfi_filtered (spaces, "objfile ");
3158       gdb_print_host_address (TYPE_OWNER (type).objfile, gdb_stdout);
3159     }
3160   else
3161     {
3162       printfi_filtered (spaces, "gdbarch ");
3163       gdb_print_host_address (TYPE_OWNER (type).gdbarch, gdb_stdout);
3164     }
3165   printf_filtered ("\n");
3166   printfi_filtered (spaces, "target_type ");
3167   gdb_print_host_address (TYPE_TARGET_TYPE (type), gdb_stdout);
3168   printf_filtered ("\n");
3169   if (TYPE_TARGET_TYPE (type) != NULL)
3170     {
3171       recursive_dump_type (TYPE_TARGET_TYPE (type), spaces + 2);
3172     }
3173   printfi_filtered (spaces, "pointer_type ");
3174   gdb_print_host_address (TYPE_POINTER_TYPE (type), gdb_stdout);
3175   printf_filtered ("\n");
3176   printfi_filtered (spaces, "reference_type ");
3177   gdb_print_host_address (TYPE_REFERENCE_TYPE (type), gdb_stdout);
3178   printf_filtered ("\n");
3179   printfi_filtered (spaces, "type_chain ");
3180   gdb_print_host_address (TYPE_CHAIN (type), gdb_stdout);
3181   printf_filtered ("\n");
3182   printfi_filtered (spaces, "instance_flags 0x%x", 
3183                     TYPE_INSTANCE_FLAGS (type));
3184   if (TYPE_CONST (type))
3185     {
3186       puts_filtered (" TYPE_FLAG_CONST");
3187     }
3188   if (TYPE_VOLATILE (type))
3189     {
3190       puts_filtered (" TYPE_FLAG_VOLATILE");
3191     }
3192   if (TYPE_CODE_SPACE (type))
3193     {
3194       puts_filtered (" TYPE_FLAG_CODE_SPACE");
3195     }
3196   if (TYPE_DATA_SPACE (type))
3197     {
3198       puts_filtered (" TYPE_FLAG_DATA_SPACE");
3199     }
3200   if (TYPE_ADDRESS_CLASS_1 (type))
3201     {
3202       puts_filtered (" TYPE_FLAG_ADDRESS_CLASS_1");
3203     }
3204   if (TYPE_ADDRESS_CLASS_2 (type))
3205     {
3206       puts_filtered (" TYPE_FLAG_ADDRESS_CLASS_2");
3207     }
3208   if (TYPE_RESTRICT (type))
3209     {
3210       puts_filtered (" TYPE_FLAG_RESTRICT");
3211     }
3212   puts_filtered ("\n");
3213
3214   printfi_filtered (spaces, "flags");
3215   if (TYPE_UNSIGNED (type))
3216     {
3217       puts_filtered (" TYPE_FLAG_UNSIGNED");
3218     }
3219   if (TYPE_NOSIGN (type))
3220     {
3221       puts_filtered (" TYPE_FLAG_NOSIGN");
3222     }
3223   if (TYPE_STUB (type))
3224     {
3225       puts_filtered (" TYPE_FLAG_STUB");
3226     }
3227   if (TYPE_TARGET_STUB (type))
3228     {
3229       puts_filtered (" TYPE_FLAG_TARGET_STUB");
3230     }
3231   if (TYPE_STATIC (type))
3232     {
3233       puts_filtered (" TYPE_FLAG_STATIC");
3234     }
3235   if (TYPE_PROTOTYPED (type))
3236     {
3237       puts_filtered (" TYPE_FLAG_PROTOTYPED");
3238     }
3239   if (TYPE_INCOMPLETE (type))
3240     {
3241       puts_filtered (" TYPE_FLAG_INCOMPLETE");
3242     }
3243   if (TYPE_VARARGS (type))
3244     {
3245       puts_filtered (" TYPE_FLAG_VARARGS");
3246     }
3247   /* This is used for things like AltiVec registers on ppc.  Gcc emits
3248      an attribute for the array type, which tells whether or not we
3249      have a vector, instead of a regular array.  */
3250   if (TYPE_VECTOR (type))
3251     {
3252       puts_filtered (" TYPE_FLAG_VECTOR");
3253     }
3254   if (TYPE_FIXED_INSTANCE (type))
3255     {
3256       puts_filtered (" TYPE_FIXED_INSTANCE");
3257     }
3258   if (TYPE_STUB_SUPPORTED (type))
3259     {
3260       puts_filtered (" TYPE_STUB_SUPPORTED");
3261     }
3262   if (TYPE_NOTTEXT (type))
3263     {
3264       puts_filtered (" TYPE_NOTTEXT");
3265     }
3266   puts_filtered ("\n");
3267   printfi_filtered (spaces, "nfields %d ", TYPE_NFIELDS (type));
3268   gdb_print_host_address (TYPE_FIELDS (type), gdb_stdout);
3269   puts_filtered ("\n");
3270   for (idx = 0; idx < TYPE_NFIELDS (type); idx++)
3271     {
3272       if (TYPE_CODE (type) == TYPE_CODE_ENUM)
3273         printfi_filtered (spaces + 2,
3274                           "[%d] enumval %s type ",
3275                           idx, plongest (TYPE_FIELD_ENUMVAL (type, idx)));
3276       else
3277         printfi_filtered (spaces + 2,
3278                           "[%d] bitpos %d bitsize %d type ",
3279                           idx, TYPE_FIELD_BITPOS (type, idx),
3280                           TYPE_FIELD_BITSIZE (type, idx));
3281       gdb_print_host_address (TYPE_FIELD_TYPE (type, idx), gdb_stdout);
3282       printf_filtered (" name '%s' (",
3283                        TYPE_FIELD_NAME (type, idx) != NULL
3284                        ? TYPE_FIELD_NAME (type, idx)
3285                        : "<NULL>");
3286       gdb_print_host_address (TYPE_FIELD_NAME (type, idx), gdb_stdout);
3287       printf_filtered (")\n");
3288       if (TYPE_FIELD_TYPE (type, idx) != NULL)
3289         {
3290           recursive_dump_type (TYPE_FIELD_TYPE (type, idx), spaces + 4);
3291         }
3292     }
3293   if (TYPE_CODE (type) == TYPE_CODE_RANGE)
3294     {
3295       printfi_filtered (spaces, "low %s%s  high %s%s\n",
3296                         plongest (TYPE_LOW_BOUND (type)), 
3297                         TYPE_LOW_BOUND_UNDEFINED (type) ? " (undefined)" : "",
3298                         plongest (TYPE_HIGH_BOUND (type)),
3299                         TYPE_HIGH_BOUND_UNDEFINED (type) 
3300                         ? " (undefined)" : "");
3301     }
3302   printfi_filtered (spaces, "vptr_basetype ");
3303   gdb_print_host_address (TYPE_VPTR_BASETYPE (type), gdb_stdout);
3304   puts_filtered ("\n");
3305   if (TYPE_VPTR_BASETYPE (type) != NULL)
3306     {
3307       recursive_dump_type (TYPE_VPTR_BASETYPE (type), spaces + 2);
3308     }
3309   printfi_filtered (spaces, "vptr_fieldno %d\n", 
3310                     TYPE_VPTR_FIELDNO (type));
3311
3312   switch (TYPE_SPECIFIC_FIELD (type))
3313     {
3314       case TYPE_SPECIFIC_CPLUS_STUFF:
3315         printfi_filtered (spaces, "cplus_stuff ");
3316         gdb_print_host_address (TYPE_CPLUS_SPECIFIC (type), 
3317                                 gdb_stdout);
3318         puts_filtered ("\n");
3319         print_cplus_stuff (type, spaces);
3320         break;
3321
3322       case TYPE_SPECIFIC_GNAT_STUFF:
3323         printfi_filtered (spaces, "gnat_stuff ");
3324         gdb_print_host_address (TYPE_GNAT_SPECIFIC (type), gdb_stdout);
3325         puts_filtered ("\n");
3326         print_gnat_stuff (type, spaces);
3327         break;
3328
3329       case TYPE_SPECIFIC_FLOATFORMAT:
3330         printfi_filtered (spaces, "floatformat ");
3331         if (TYPE_FLOATFORMAT (type) == NULL)
3332           puts_filtered ("(null)");
3333         else
3334           {
3335             puts_filtered ("{ ");
3336             if (TYPE_FLOATFORMAT (type)[0] == NULL
3337                 || TYPE_FLOATFORMAT (type)[0]->name == NULL)
3338               puts_filtered ("(null)");
3339             else
3340               puts_filtered (TYPE_FLOATFORMAT (type)[0]->name);
3341
3342             puts_filtered (", ");
3343             if (TYPE_FLOATFORMAT (type)[1] == NULL
3344                 || TYPE_FLOATFORMAT (type)[1]->name == NULL)
3345               puts_filtered ("(null)");
3346             else
3347               puts_filtered (TYPE_FLOATFORMAT (type)[1]->name);
3348
3349             puts_filtered (" }");
3350           }
3351         puts_filtered ("\n");
3352         break;
3353
3354       case TYPE_SPECIFIC_FUNC:
3355         printfi_filtered (spaces, "calling_convention %d\n",
3356                           TYPE_CALLING_CONVENTION (type));
3357         /* tail_call_list is not printed.  */
3358         break;
3359     }
3360
3361   if (spaces == 0)
3362     obstack_free (&dont_print_type_obstack, NULL);
3363 }
3364 \f
3365 /* Trivial helpers for the libiberty hash table, for mapping one
3366    type to another.  */
3367
3368 struct type_pair
3369 {
3370   struct type *old, *new;
3371 };
3372
3373 static hashval_t
3374 type_pair_hash (const void *item)
3375 {
3376   const struct type_pair *pair = item;
3377
3378   return htab_hash_pointer (pair->old);
3379 }
3380
3381 static int
3382 type_pair_eq (const void *item_lhs, const void *item_rhs)
3383 {
3384   const struct type_pair *lhs = item_lhs, *rhs = item_rhs;
3385
3386   return lhs->old == rhs->old;
3387 }
3388
3389 /* Allocate the hash table used by copy_type_recursive to walk
3390    types without duplicates.  We use OBJFILE's obstack, because
3391    OBJFILE is about to be deleted.  */
3392
3393 htab_t
3394 create_copied_types_hash (struct objfile *objfile)
3395 {
3396   return htab_create_alloc_ex (1, type_pair_hash, type_pair_eq,
3397                                NULL, &objfile->objfile_obstack,
3398                                hashtab_obstack_allocate,
3399                                dummy_obstack_deallocate);
3400 }
3401
3402 /* Recursively copy (deep copy) TYPE, if it is associated with
3403    OBJFILE.  Return a new type allocated using malloc, a saved type if
3404    we have already visited TYPE (using COPIED_TYPES), or TYPE if it is
3405    not associated with OBJFILE.  */
3406
3407 struct type *
3408 copy_type_recursive (struct objfile *objfile, 
3409                      struct type *type,
3410                      htab_t copied_types)
3411 {
3412   struct type_pair *stored, pair;
3413   void **slot;
3414   struct type *new_type;
3415
3416   if (! TYPE_OBJFILE_OWNED (type))
3417     return type;
3418
3419   /* This type shouldn't be pointing to any types in other objfiles;
3420      if it did, the type might disappear unexpectedly.  */
3421   gdb_assert (TYPE_OBJFILE (type) == objfile);
3422
3423   pair.old = type;
3424   slot = htab_find_slot (copied_types, &pair, INSERT);
3425   if (*slot != NULL)
3426     return ((struct type_pair *) *slot)->new;
3427
3428   new_type = alloc_type_arch (get_type_arch (type));
3429
3430   /* We must add the new type to the hash table immediately, in case
3431      we encounter this type again during a recursive call below.  */
3432   stored
3433     = obstack_alloc (&objfile->objfile_obstack, sizeof (struct type_pair));
3434   stored->old = type;
3435   stored->new = new_type;
3436   *slot = stored;
3437
3438   /* Copy the common fields of types.  For the main type, we simply
3439      copy the entire thing and then update specific fields as needed.  */
3440   *TYPE_MAIN_TYPE (new_type) = *TYPE_MAIN_TYPE (type);
3441   TYPE_OBJFILE_OWNED (new_type) = 0;
3442   TYPE_OWNER (new_type).gdbarch = get_type_arch (type);
3443
3444   if (TYPE_NAME (type))
3445     TYPE_NAME (new_type) = xstrdup (TYPE_NAME (type));
3446   if (TYPE_TAG_NAME (type))
3447     TYPE_TAG_NAME (new_type) = xstrdup (TYPE_TAG_NAME (type));
3448
3449   TYPE_INSTANCE_FLAGS (new_type) = TYPE_INSTANCE_FLAGS (type);
3450   TYPE_LENGTH (new_type) = TYPE_LENGTH (type);
3451
3452   /* Copy the fields.  */
3453   if (TYPE_NFIELDS (type))
3454     {
3455       int i, nfields;
3456
3457       nfields = TYPE_NFIELDS (type);
3458       TYPE_FIELDS (new_type) = XCALLOC (nfields, struct field);
3459       for (i = 0; i < nfields; i++)
3460         {
3461           TYPE_FIELD_ARTIFICIAL (new_type, i) = 
3462             TYPE_FIELD_ARTIFICIAL (type, i);
3463           TYPE_FIELD_BITSIZE (new_type, i) = TYPE_FIELD_BITSIZE (type, i);
3464           if (TYPE_FIELD_TYPE (type, i))
3465             TYPE_FIELD_TYPE (new_type, i)
3466               = copy_type_recursive (objfile, TYPE_FIELD_TYPE (type, i),
3467                                      copied_types);
3468           if (TYPE_FIELD_NAME (type, i))
3469             TYPE_FIELD_NAME (new_type, i) = 
3470               xstrdup (TYPE_FIELD_NAME (type, i));
3471           switch (TYPE_FIELD_LOC_KIND (type, i))
3472             {
3473             case FIELD_LOC_KIND_BITPOS:
3474               SET_FIELD_BITPOS (TYPE_FIELD (new_type, i),
3475                                 TYPE_FIELD_BITPOS (type, i));
3476               break;
3477             case FIELD_LOC_KIND_ENUMVAL:
3478               SET_FIELD_ENUMVAL (TYPE_FIELD (new_type, i),
3479                                  TYPE_FIELD_ENUMVAL (type, i));
3480               break;
3481             case FIELD_LOC_KIND_PHYSADDR:
3482               SET_FIELD_PHYSADDR (TYPE_FIELD (new_type, i),
3483                                   TYPE_FIELD_STATIC_PHYSADDR (type, i));
3484               break;
3485             case FIELD_LOC_KIND_PHYSNAME:
3486               SET_FIELD_PHYSNAME (TYPE_FIELD (new_type, i),
3487                                   xstrdup (TYPE_FIELD_STATIC_PHYSNAME (type,
3488                                                                        i)));
3489               break;
3490             default:
3491               internal_error (__FILE__, __LINE__,
3492                               _("Unexpected type field location kind: %d"),
3493                               TYPE_FIELD_LOC_KIND (type, i));
3494             }
3495         }
3496     }
3497
3498   /* For range types, copy the bounds information.  */
3499   if (TYPE_CODE (type) == TYPE_CODE_RANGE)
3500     {
3501       TYPE_RANGE_DATA (new_type) = xmalloc (sizeof (struct range_bounds));
3502       *TYPE_RANGE_DATA (new_type) = *TYPE_RANGE_DATA (type);
3503     }
3504
3505   /* Copy pointers to other types.  */
3506   if (TYPE_TARGET_TYPE (type))
3507     TYPE_TARGET_TYPE (new_type) = 
3508       copy_type_recursive (objfile, 
3509                            TYPE_TARGET_TYPE (type),
3510                            copied_types);
3511   if (TYPE_VPTR_BASETYPE (type))
3512     TYPE_VPTR_BASETYPE (new_type) = 
3513       copy_type_recursive (objfile,
3514                            TYPE_VPTR_BASETYPE (type),
3515                            copied_types);
3516   /* Maybe copy the type_specific bits.
3517
3518      NOTE drow/2005-12-09: We do not copy the C++-specific bits like
3519      base classes and methods.  There's no fundamental reason why we
3520      can't, but at the moment it is not needed.  */
3521
3522   if (TYPE_CODE (type) == TYPE_CODE_FLT)
3523     TYPE_FLOATFORMAT (new_type) = TYPE_FLOATFORMAT (type);
3524   else if (TYPE_CODE (type) == TYPE_CODE_STRUCT
3525            || TYPE_CODE (type) == TYPE_CODE_UNION
3526            || TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
3527     INIT_CPLUS_SPECIFIC (new_type);
3528
3529   return new_type;
3530 }
3531
3532 /* Make a copy of the given TYPE, except that the pointer & reference
3533    types are not preserved.
3534    
3535    This function assumes that the given type has an associated objfile.
3536    This objfile is used to allocate the new type.  */
3537
3538 struct type *
3539 copy_type (const struct type *type)
3540 {
3541   struct type *new_type;
3542
3543   gdb_assert (TYPE_OBJFILE_OWNED (type));
3544
3545   new_type = alloc_type_copy (type);
3546   TYPE_INSTANCE_FLAGS (new_type) = TYPE_INSTANCE_FLAGS (type);
3547   TYPE_LENGTH (new_type) = TYPE_LENGTH (type);
3548   memcpy (TYPE_MAIN_TYPE (new_type), TYPE_MAIN_TYPE (type),
3549           sizeof (struct main_type));
3550
3551   return new_type;
3552 }
3553 \f
3554 /* Helper functions to initialize architecture-specific types.  */
3555
3556 /* Allocate a type structure associated with GDBARCH and set its
3557    CODE, LENGTH, and NAME fields.  */
3558
3559 struct type *
3560 arch_type (struct gdbarch *gdbarch,
3561            enum type_code code, int length, char *name)
3562 {
3563   struct type *type;
3564
3565   type = alloc_type_arch (gdbarch);
3566   TYPE_CODE (type) = code;
3567   TYPE_LENGTH (type) = length;
3568
3569   if (name)
3570     TYPE_NAME (type) = xstrdup (name);
3571
3572   return type;
3573 }
3574
3575 /* Allocate a TYPE_CODE_INT type structure associated with GDBARCH.
3576    BIT is the type size in bits.  If UNSIGNED_P is non-zero, set
3577    the type's TYPE_UNSIGNED flag.  NAME is the type name.  */
3578
3579 struct type *
3580 arch_integer_type (struct gdbarch *gdbarch,
3581                    int bit, int unsigned_p, char *name)
3582 {
3583   struct type *t;
3584
3585   t = arch_type (gdbarch, TYPE_CODE_INT, bit / TARGET_CHAR_BIT, name);
3586   if (unsigned_p)
3587     TYPE_UNSIGNED (t) = 1;
3588   if (name && strcmp (name, "char") == 0)
3589     TYPE_NOSIGN (t) = 1;
3590
3591   return t;
3592 }
3593
3594 /* Allocate a TYPE_CODE_CHAR type structure associated with GDBARCH.
3595    BIT is the type size in bits.  If UNSIGNED_P is non-zero, set
3596    the type's TYPE_UNSIGNED flag.  NAME is the type name.  */
3597
3598 struct type *
3599 arch_character_type (struct gdbarch *gdbarch,
3600                      int bit, int unsigned_p, char *name)
3601 {
3602   struct type *t;
3603
3604   t = arch_type (gdbarch, TYPE_CODE_CHAR, bit / TARGET_CHAR_BIT, name);
3605   if (unsigned_p)
3606     TYPE_UNSIGNED (t) = 1;
3607
3608   return t;
3609 }
3610
3611 /* Allocate a TYPE_CODE_BOOL type structure associated with GDBARCH.
3612    BIT is the type size in bits.  If UNSIGNED_P is non-zero, set
3613    the type's TYPE_UNSIGNED flag.  NAME is the type name.  */
3614
3615 struct type *
3616 arch_boolean_type (struct gdbarch *gdbarch,
3617                    int bit, int unsigned_p, char *name)
3618 {
3619   struct type *t;
3620
3621   t = arch_type (gdbarch, TYPE_CODE_BOOL, bit / TARGET_CHAR_BIT, name);
3622   if (unsigned_p)
3623     TYPE_UNSIGNED (t) = 1;
3624
3625   return t;
3626 }
3627
3628 /* Allocate a TYPE_CODE_FLT type structure associated with GDBARCH.
3629    BIT is the type size in bits; if BIT equals -1, the size is
3630    determined by the floatformat.  NAME is the type name.  Set the
3631    TYPE_FLOATFORMAT from FLOATFORMATS.  */
3632
3633 struct type *
3634 arch_float_type (struct gdbarch *gdbarch,
3635                  int bit, char *name, const struct floatformat **floatformats)
3636 {
3637   struct type *t;
3638
3639   if (bit == -1)
3640     {
3641       gdb_assert (floatformats != NULL);
3642       gdb_assert (floatformats[0] != NULL && floatformats[1] != NULL);
3643       bit = floatformats[0]->totalsize;
3644     }
3645   gdb_assert (bit >= 0);
3646
3647   t = arch_type (gdbarch, TYPE_CODE_FLT, bit / TARGET_CHAR_BIT, name);
3648   TYPE_FLOATFORMAT (t) = floatformats;
3649   return t;
3650 }
3651
3652 /* Allocate a TYPE_CODE_COMPLEX type structure associated with GDBARCH.
3653    NAME is the type name.  TARGET_TYPE is the component float type.  */
3654
3655 struct type *
3656 arch_complex_type (struct gdbarch *gdbarch,
3657                    char *name, struct type *target_type)
3658 {
3659   struct type *t;
3660
3661   t = arch_type (gdbarch, TYPE_CODE_COMPLEX,
3662                  2 * TYPE_LENGTH (target_type), name);
3663   TYPE_TARGET_TYPE (t) = target_type;
3664   return t;
3665 }
3666
3667 /* Allocate a TYPE_CODE_FLAGS type structure associated with GDBARCH.
3668    NAME is the type name.  LENGTH is the size of the flag word in bytes.  */
3669
3670 struct type *
3671 arch_flags_type (struct gdbarch *gdbarch, char *name, int length)
3672 {
3673   int nfields = length * TARGET_CHAR_BIT;
3674   struct type *type;
3675
3676   type = arch_type (gdbarch, TYPE_CODE_FLAGS, length, name);
3677   TYPE_UNSIGNED (type) = 1;
3678   TYPE_NFIELDS (type) = nfields;
3679   TYPE_FIELDS (type) = TYPE_ZALLOC (type, nfields * sizeof (struct field));
3680
3681   return type;
3682 }
3683
3684 /* Add field to TYPE_CODE_FLAGS type TYPE to indicate the bit at
3685    position BITPOS is called NAME.  */
3686
3687 void
3688 append_flags_type_flag (struct type *type, int bitpos, char *name)
3689 {
3690   gdb_assert (TYPE_CODE (type) == TYPE_CODE_FLAGS);
3691   gdb_assert (bitpos < TYPE_NFIELDS (type));
3692   gdb_assert (bitpos >= 0);
3693
3694   if (name)
3695     {
3696       TYPE_FIELD_NAME (type, bitpos) = xstrdup (name);
3697       SET_FIELD_BITPOS (TYPE_FIELD (type, bitpos), bitpos);
3698     }
3699   else
3700     {
3701       /* Don't show this field to the user.  */
3702       SET_FIELD_BITPOS (TYPE_FIELD (type, bitpos), -1);
3703     }
3704 }
3705
3706 /* Allocate a TYPE_CODE_STRUCT or TYPE_CODE_UNION type structure (as
3707    specified by CODE) associated with GDBARCH.  NAME is the type name.  */
3708
3709 struct type *
3710 arch_composite_type (struct gdbarch *gdbarch, char *name, enum type_code code)
3711 {
3712   struct type *t;
3713
3714   gdb_assert (code == TYPE_CODE_STRUCT || code == TYPE_CODE_UNION);
3715   t = arch_type (gdbarch, code, 0, NULL);
3716   TYPE_TAG_NAME (t) = name;
3717   INIT_CPLUS_SPECIFIC (t);
3718   return t;
3719 }
3720
3721 /* Add new field with name NAME and type FIELD to composite type T.
3722    Do not set the field's position or adjust the type's length;
3723    the caller should do so.  Return the new field.  */
3724
3725 struct field *
3726 append_composite_type_field_raw (struct type *t, char *name,
3727                                  struct type *field)
3728 {
3729   struct field *f;
3730
3731   TYPE_NFIELDS (t) = TYPE_NFIELDS (t) + 1;
3732   TYPE_FIELDS (t) = xrealloc (TYPE_FIELDS (t),
3733                               sizeof (struct field) * TYPE_NFIELDS (t));
3734   f = &(TYPE_FIELDS (t)[TYPE_NFIELDS (t) - 1]);
3735   memset (f, 0, sizeof f[0]);
3736   FIELD_TYPE (f[0]) = field;
3737   FIELD_NAME (f[0]) = name;
3738   return f;
3739 }
3740
3741 /* Add new field with name NAME and type FIELD to composite type T.
3742    ALIGNMENT (if non-zero) specifies the minimum field alignment.  */
3743
3744 void
3745 append_composite_type_field_aligned (struct type *t, char *name,
3746                                      struct type *field, int alignment)
3747 {
3748   struct field *f = append_composite_type_field_raw (t, name, field);
3749
3750   if (TYPE_CODE (t) == TYPE_CODE_UNION)
3751     {
3752       if (TYPE_LENGTH (t) < TYPE_LENGTH (field))
3753         TYPE_LENGTH (t) = TYPE_LENGTH (field);
3754     }
3755   else if (TYPE_CODE (t) == TYPE_CODE_STRUCT)
3756     {
3757       TYPE_LENGTH (t) = TYPE_LENGTH (t) + TYPE_LENGTH (field);
3758       if (TYPE_NFIELDS (t) > 1)
3759         {
3760           SET_FIELD_BITPOS (f[0],
3761                             (FIELD_BITPOS (f[-1])
3762                              + (TYPE_LENGTH (FIELD_TYPE (f[-1]))
3763                                 * TARGET_CHAR_BIT)));
3764
3765           if (alignment)
3766             {
3767               int left;
3768
3769               alignment *= TARGET_CHAR_BIT;
3770               left = FIELD_BITPOS (f[0]) % alignment;
3771
3772               if (left)
3773                 {
3774                   SET_FIELD_BITPOS (f[0], FIELD_BITPOS (f[0]) + (alignment - left));
3775                   TYPE_LENGTH (t) += (alignment - left) / TARGET_CHAR_BIT;
3776                 }
3777             }
3778         }
3779     }
3780 }
3781
3782 /* Add new field with name NAME and type FIELD to composite type T.  */
3783
3784 void
3785 append_composite_type_field (struct type *t, char *name,
3786                              struct type *field)
3787 {
3788   append_composite_type_field_aligned (t, name, field, 0);
3789 }
3790
3791 static struct gdbarch_data *gdbtypes_data;
3792
3793 const struct builtin_type *
3794 builtin_type (struct gdbarch *gdbarch)
3795 {
3796   return gdbarch_data (gdbarch, gdbtypes_data);
3797 }
3798
3799 static void *
3800 gdbtypes_post_init (struct gdbarch *gdbarch)
3801 {
3802   struct builtin_type *builtin_type
3803     = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct builtin_type);
3804
3805   /* Basic types.  */
3806   builtin_type->builtin_void
3807     = arch_type (gdbarch, TYPE_CODE_VOID, 1, "void");
3808   builtin_type->builtin_char
3809     = arch_integer_type (gdbarch, TARGET_CHAR_BIT,
3810                          !gdbarch_char_signed (gdbarch), "char");
3811   builtin_type->builtin_signed_char
3812     = arch_integer_type (gdbarch, TARGET_CHAR_BIT,
3813                          0, "signed char");
3814   builtin_type->builtin_unsigned_char
3815     = arch_integer_type (gdbarch, TARGET_CHAR_BIT,
3816                          1, "unsigned char");
3817   builtin_type->builtin_short
3818     = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
3819                          0, "short");
3820   builtin_type->builtin_unsigned_short
3821     = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
3822                          1, "unsigned short");
3823   builtin_type->builtin_int
3824     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
3825                          0, "int");
3826   builtin_type->builtin_unsigned_int
3827     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
3828                          1, "unsigned int");
3829   builtin_type->builtin_long
3830     = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
3831                          0, "long");
3832   builtin_type->builtin_unsigned_long
3833     = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
3834                          1, "unsigned long");
3835   builtin_type->builtin_long_long
3836     = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
3837                          0, "long long");
3838   builtin_type->builtin_unsigned_long_long
3839     = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
3840                          1, "unsigned long long");
3841   builtin_type->builtin_float
3842     = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
3843                        "float", gdbarch_float_format (gdbarch));
3844   builtin_type->builtin_double
3845     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
3846                        "double", gdbarch_double_format (gdbarch));
3847   builtin_type->builtin_long_double
3848     = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
3849                        "long double", gdbarch_long_double_format (gdbarch));
3850   builtin_type->builtin_complex
3851     = arch_complex_type (gdbarch, "complex",
3852                          builtin_type->builtin_float);
3853   builtin_type->builtin_double_complex
3854     = arch_complex_type (gdbarch, "double complex",
3855                          builtin_type->builtin_double);
3856   builtin_type->builtin_string
3857     = arch_type (gdbarch, TYPE_CODE_STRING, 1, "string");
3858   builtin_type->builtin_bool
3859     = arch_type (gdbarch, TYPE_CODE_BOOL, 1, "bool");
3860
3861   /* The following three are about decimal floating point types, which
3862      are 32-bits, 64-bits and 128-bits respectively.  */
3863   builtin_type->builtin_decfloat
3864     = arch_type (gdbarch, TYPE_CODE_DECFLOAT, 32 / 8, "_Decimal32");
3865   builtin_type->builtin_decdouble
3866     = arch_type (gdbarch, TYPE_CODE_DECFLOAT, 64 / 8, "_Decimal64");
3867   builtin_type->builtin_declong
3868     = arch_type (gdbarch, TYPE_CODE_DECFLOAT, 128 / 8, "_Decimal128");
3869
3870   /* "True" character types.  */
3871   builtin_type->builtin_true_char
3872     = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "true character");
3873   builtin_type->builtin_true_unsigned_char
3874     = arch_character_type (gdbarch, TARGET_CHAR_BIT, 1, "true character");
3875
3876   /* Fixed-size integer types.  */
3877   builtin_type->builtin_int0
3878     = arch_integer_type (gdbarch, 0, 0, "int0_t");
3879   builtin_type->builtin_int8
3880     = arch_integer_type (gdbarch, 8, 0, "int8_t");
3881   builtin_type->builtin_uint8
3882     = arch_integer_type (gdbarch, 8, 1, "uint8_t");
3883   builtin_type->builtin_int16
3884     = arch_integer_type (gdbarch, 16, 0, "int16_t");
3885   builtin_type->builtin_uint16
3886     = arch_integer_type (gdbarch, 16, 1, "uint16_t");
3887   builtin_type->builtin_int32
3888     = arch_integer_type (gdbarch, 32, 0, "int32_t");
3889   builtin_type->builtin_uint32
3890     = arch_integer_type (gdbarch, 32, 1, "uint32_t");
3891   builtin_type->builtin_int64
3892     = arch_integer_type (gdbarch, 64, 0, "int64_t");
3893   builtin_type->builtin_uint64
3894     = arch_integer_type (gdbarch, 64, 1, "uint64_t");
3895   builtin_type->builtin_int128
3896     = arch_integer_type (gdbarch, 128, 0, "int128_t");
3897   builtin_type->builtin_uint128
3898     = arch_integer_type (gdbarch, 128, 1, "uint128_t");
3899   TYPE_INSTANCE_FLAGS (builtin_type->builtin_int8) |=
3900     TYPE_INSTANCE_FLAG_NOTTEXT;
3901   TYPE_INSTANCE_FLAGS (builtin_type->builtin_uint8) |=
3902     TYPE_INSTANCE_FLAG_NOTTEXT;
3903
3904   /* Wide character types.  */
3905   builtin_type->builtin_char16
3906     = arch_integer_type (gdbarch, 16, 0, "char16_t");
3907   builtin_type->builtin_char32
3908     = arch_integer_type (gdbarch, 32, 0, "char32_t");
3909         
3910
3911   /* Default data/code pointer types.  */
3912   builtin_type->builtin_data_ptr
3913     = lookup_pointer_type (builtin_type->builtin_void);
3914   builtin_type->builtin_func_ptr
3915     = lookup_pointer_type (lookup_function_type (builtin_type->builtin_void));
3916   builtin_type->builtin_func_func
3917     = lookup_function_type (builtin_type->builtin_func_ptr);
3918
3919   /* This type represents a GDB internal function.  */
3920   builtin_type->internal_fn
3921     = arch_type (gdbarch, TYPE_CODE_INTERNAL_FUNCTION, 0,
3922                  "<internal function>");
3923
3924   return builtin_type;
3925 }
3926
3927 /* This set of objfile-based types is intended to be used by symbol
3928    readers as basic types.  */
3929
3930 static const struct objfile_data *objfile_type_data;
3931
3932 const struct objfile_type *
3933 objfile_type (struct objfile *objfile)
3934 {
3935   struct gdbarch *gdbarch;
3936   struct objfile_type *objfile_type
3937     = objfile_data (objfile, objfile_type_data);
3938
3939   if (objfile_type)
3940     return objfile_type;
3941
3942   objfile_type = OBSTACK_CALLOC (&objfile->objfile_obstack,
3943                                  1, struct objfile_type);
3944
3945   /* Use the objfile architecture to determine basic type properties.  */
3946   gdbarch = get_objfile_arch (objfile);
3947
3948   /* Basic types.  */
3949   objfile_type->builtin_void
3950     = init_type (TYPE_CODE_VOID, 1,
3951                  0,
3952                  "void", objfile);
3953
3954   objfile_type->builtin_char
3955     = init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
3956                  (TYPE_FLAG_NOSIGN
3957                   | (gdbarch_char_signed (gdbarch) ? 0 : TYPE_FLAG_UNSIGNED)),
3958                  "char", objfile);
3959   objfile_type->builtin_signed_char
3960     = init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
3961                  0,
3962                  "signed char", objfile);
3963   objfile_type->builtin_unsigned_char
3964     = init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
3965                  TYPE_FLAG_UNSIGNED,
3966                  "unsigned char", objfile);
3967   objfile_type->builtin_short
3968     = init_type (TYPE_CODE_INT,
3969                  gdbarch_short_bit (gdbarch) / TARGET_CHAR_BIT,
3970                  0, "short", objfile);
3971   objfile_type->builtin_unsigned_short
3972     = init_type (TYPE_CODE_INT,
3973                  gdbarch_short_bit (gdbarch) / TARGET_CHAR_BIT,
3974                  TYPE_FLAG_UNSIGNED, "unsigned short", objfile);
3975   objfile_type->builtin_int
3976     = init_type (TYPE_CODE_INT,
3977                  gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT,
3978                  0, "int", objfile);
3979   objfile_type->builtin_unsigned_int
3980     = init_type (TYPE_CODE_INT,
3981                  gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT,
3982                  TYPE_FLAG_UNSIGNED, "unsigned int", objfile);
3983   objfile_type->builtin_long
3984     = init_type (TYPE_CODE_INT,
3985                  gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT,
3986                  0, "long", objfile);
3987   objfile_type->builtin_unsigned_long
3988     = init_type (TYPE_CODE_INT,
3989                  gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT,
3990                  TYPE_FLAG_UNSIGNED, "unsigned long", objfile);
3991   objfile_type->builtin_long_long
3992     = init_type (TYPE_CODE_INT,
3993                  gdbarch_long_long_bit (gdbarch) / TARGET_CHAR_BIT,
3994                  0, "long long", objfile);
3995   objfile_type->builtin_unsigned_long_long
3996     = init_type (TYPE_CODE_INT,
3997                  gdbarch_long_long_bit (gdbarch) / TARGET_CHAR_BIT,
3998                  TYPE_FLAG_UNSIGNED, "unsigned long long", objfile);
3999
4000   objfile_type->builtin_float
4001     = init_type (TYPE_CODE_FLT,
4002                  gdbarch_float_bit (gdbarch) / TARGET_CHAR_BIT,
4003                  0, "float", objfile);
4004   TYPE_FLOATFORMAT (objfile_type->builtin_float)
4005     = gdbarch_float_format (gdbarch);
4006   objfile_type->builtin_double
4007     = init_type (TYPE_CODE_FLT,
4008                  gdbarch_double_bit (gdbarch) / TARGET_CHAR_BIT,
4009                  0, "double", objfile);
4010   TYPE_FLOATFORMAT (objfile_type->builtin_double)
4011     = gdbarch_double_format (gdbarch);
4012   objfile_type->builtin_long_double
4013     = init_type (TYPE_CODE_FLT,
4014                  gdbarch_long_double_bit (gdbarch) / TARGET_CHAR_BIT,
4015                  0, "long double", objfile);
4016   TYPE_FLOATFORMAT (objfile_type->builtin_long_double)
4017     = gdbarch_long_double_format (gdbarch);
4018
4019   /* This type represents a type that was unrecognized in symbol read-in.  */
4020   objfile_type->builtin_error
4021     = init_type (TYPE_CODE_ERROR, 0, 0, "<unknown type>", objfile);
4022
4023   /* The following set of types is used for symbols with no
4024      debug information.  */
4025   objfile_type->nodebug_text_symbol
4026     = init_type (TYPE_CODE_FUNC, 1, 0,
4027                  "<text variable, no debug info>", objfile);
4028   TYPE_TARGET_TYPE (objfile_type->nodebug_text_symbol)
4029     = objfile_type->builtin_int;
4030   objfile_type->nodebug_text_gnu_ifunc_symbol
4031     = init_type (TYPE_CODE_FUNC, 1, TYPE_FLAG_GNU_IFUNC,
4032                  "<text gnu-indirect-function variable, no debug info>",
4033                  objfile);
4034   TYPE_TARGET_TYPE (objfile_type->nodebug_text_gnu_ifunc_symbol)
4035     = objfile_type->nodebug_text_symbol;
4036   objfile_type->nodebug_got_plt_symbol
4037     = init_type (TYPE_CODE_PTR, gdbarch_addr_bit (gdbarch) / 8, 0,
4038                  "<text from jump slot in .got.plt, no debug info>",
4039                  objfile);
4040   TYPE_TARGET_TYPE (objfile_type->nodebug_got_plt_symbol)
4041     = objfile_type->nodebug_text_symbol;
4042   objfile_type->nodebug_data_symbol
4043     = init_type (TYPE_CODE_INT,
4044                  gdbarch_int_bit (gdbarch) / HOST_CHAR_BIT, 0,
4045                  "<data variable, no debug info>", objfile);
4046   objfile_type->nodebug_unknown_symbol
4047     = init_type (TYPE_CODE_INT, 1, 0,
4048                  "<variable (not text or data), no debug info>", objfile);
4049   objfile_type->nodebug_tls_symbol
4050     = init_type (TYPE_CODE_INT,
4051                  gdbarch_int_bit (gdbarch) / HOST_CHAR_BIT, 0,
4052                  "<thread local variable, no debug info>", objfile);
4053
4054   /* NOTE: on some targets, addresses and pointers are not necessarily
4055      the same --- for example, on the D10V, pointers are 16 bits long,
4056      but addresses are 32 bits long.  See doc/gdbint.texinfo,
4057      ``Pointers Are Not Always Addresses''.
4058
4059      The upshot is:
4060      - gdb's `struct type' always describes the target's
4061        representation.
4062      - gdb's `struct value' objects should always hold values in
4063        target form.
4064      - gdb's CORE_ADDR values are addresses in the unified virtual
4065        address space that the assembler and linker work with.  Thus,
4066        since target_read_memory takes a CORE_ADDR as an argument, it
4067        can access any memory on the target, even if the processor has
4068        separate code and data address spaces.
4069
4070      So, for example:
4071      - If v is a value holding a D10V code pointer, its contents are
4072        in target form: a big-endian address left-shifted two bits.
4073      - If p is a D10V pointer type, TYPE_LENGTH (p) == 2, just as
4074        sizeof (void *) == 2 on the target.
4075
4076      In this context, objfile_type->builtin_core_addr is a bit odd:
4077      it's a target type for a value the target will never see.  It's
4078      only used to hold the values of (typeless) linker symbols, which
4079      are indeed in the unified virtual address space.  */
4080
4081   objfile_type->builtin_core_addr
4082     = init_type (TYPE_CODE_INT,
4083                  gdbarch_addr_bit (gdbarch) / 8,
4084                  TYPE_FLAG_UNSIGNED, "__CORE_ADDR", objfile);
4085
4086   set_objfile_data (objfile, objfile_type_data, objfile_type);
4087   return objfile_type;
4088 }
4089
4090 extern initialize_file_ftype _initialize_gdbtypes;
4091
4092 void
4093 _initialize_gdbtypes (void)
4094 {
4095   gdbtypes_data = gdbarch_data_register_post_init (gdbtypes_post_init);
4096   objfile_type_data = register_objfile_data ();
4097
4098   add_setshow_zuinteger_cmd ("overload", no_class, &overload_debug,
4099                              _("Set debugging of C++ overloading."),
4100                              _("Show debugging of C++ overloading."),
4101                              _("When enabled, ranking of the "
4102                                "functions is displayed."),
4103                              NULL,
4104                              show_overload_debug,
4105                              &setdebuglist, &showdebuglist);
4106
4107   /* Add user knob for controlling resolution of opaque types.  */
4108   add_setshow_boolean_cmd ("opaque-type-resolution", class_support,
4109                            &opaque_type_resolution,
4110                            _("Set resolution of opaque struct/class/union"
4111                              " types (if set before loading symbols)."),
4112                            _("Show resolution of opaque struct/class/union"
4113                              " types (if set before loading symbols)."),
4114                            NULL, NULL,
4115                            show_opaque_type_resolution,
4116                            &setlist, &showlist);
4117
4118   /* Add an option to permit non-strict type checking.  */
4119   add_setshow_boolean_cmd ("type", class_support,
4120                            &strict_type_checking,
4121                            _("Set strict type checking."),
4122                            _("Show strict type checking."),
4123                            NULL, NULL,
4124                            show_strict_type_checking,
4125                            &setchecklist, &showchecklist);
4126 }