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