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