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