]> Git Repo - binutils.git/blob - gdb/gdbtypes.c
* m68kmri.h: Remove.
[binutils.git] / gdb / gdbtypes.c
1 /* Support routines for manipulating internal types for GDB.
2    Copyright (C) 1992 Free Software Foundation, Inc.
3    Contributed by Cygnus Support, using pieces from other GDB modules.
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
20
21 #include "defs.h"
22 #include "gdb_string.h"
23 #include "bfd.h"
24 #include "symtab.h"
25 #include "symfile.h"
26 #include "objfiles.h"
27 #include "gdbtypes.h"
28 #include "expression.h"
29 #include "language.h"
30 #include "target.h"
31 #include "value.h"
32 #include "demangle.h"
33 #include "complaints.h"
34
35 /* These variables point to the objects
36    representing the predefined C data types.  */
37
38 struct type *builtin_type_void;
39 struct type *builtin_type_char;
40 struct type *builtin_type_short;
41 struct type *builtin_type_int;
42 struct type *builtin_type_long;
43 struct type *builtin_type_long_long;
44 struct type *builtin_type_signed_char;
45 struct type *builtin_type_unsigned_char;
46 struct type *builtin_type_unsigned_short;
47 struct type *builtin_type_unsigned_int;
48 struct type *builtin_type_unsigned_long;
49 struct type *builtin_type_unsigned_long_long;
50 struct type *builtin_type_float;
51 struct type *builtin_type_double;
52 struct type *builtin_type_long_double;
53 struct type *builtin_type_complex;
54 struct type *builtin_type_double_complex;
55 struct type *builtin_type_string;
56
57 /* Alloc a new type structure and fill it with some defaults.  If
58    OBJFILE is non-NULL, then allocate the space for the type structure
59    in that objfile's type_obstack. */
60
61 struct type *
62 alloc_type (objfile)
63      struct objfile *objfile;
64 {
65   register struct type *type;
66
67   /* Alloc the structure and start off with all fields zeroed. */
68
69   if (objfile == NULL)
70     {
71       type  = (struct type *) xmalloc (sizeof (struct type));
72     }
73   else
74     {
75       type  = (struct type *) obstack_alloc (&objfile -> type_obstack,
76                                              sizeof (struct type));
77     }
78   memset ((char *) type, 0, sizeof (struct type));
79
80   /* Initialize the fields that might not be zero. */
81
82   TYPE_CODE (type) = TYPE_CODE_UNDEF;
83   TYPE_OBJFILE (type) = objfile;
84   TYPE_VPTR_FIELDNO (type) = -1;
85
86   return (type);
87 }
88
89 /* Lookup a pointer to a type TYPE.  TYPEPTR, if nonzero, points
90    to a pointer to memory where the pointer type should be stored.
91    If *TYPEPTR is zero, update it to point to the pointer type we return.
92    We allocate new memory if needed.  */
93
94 struct type *
95 make_pointer_type (type, typeptr)
96      struct type *type;
97      struct type **typeptr;
98 {
99   register struct type *ntype;          /* New type */
100   struct objfile *objfile;
101
102   ntype = TYPE_POINTER_TYPE (type);
103
104   if (ntype) 
105     if (typeptr == 0)           
106       return ntype;     /* Don't care about alloc, and have new type.  */
107     else if (*typeptr == 0)
108       {
109         *typeptr = ntype;       /* Tracking alloc, and we have new type.  */
110         return ntype;
111       }
112
113   if (typeptr == 0 || *typeptr == 0)    /* We'll need to allocate one.  */
114     {
115       ntype = alloc_type (TYPE_OBJFILE (type));
116       if (typeptr)
117         *typeptr = ntype;
118     }
119   else                          /* We have storage, but need to reset it.  */
120     {
121       ntype = *typeptr;
122       objfile = TYPE_OBJFILE (ntype);
123       memset ((char *) ntype, 0, sizeof (struct type));
124       TYPE_OBJFILE (ntype) = objfile;
125     }
126
127   TYPE_TARGET_TYPE (ntype) = type;
128   TYPE_POINTER_TYPE (type) = ntype;
129
130   /* FIXME!  Assume the machine has only one representation for pointers!  */
131
132   TYPE_LENGTH (ntype) = TARGET_PTR_BIT / TARGET_CHAR_BIT;
133   TYPE_CODE (ntype) = TYPE_CODE_PTR;
134
135   /* pointers are unsigned */
136   TYPE_FLAGS (ntype) |= TYPE_FLAG_UNSIGNED;
137   
138   if (!TYPE_POINTER_TYPE (type))        /* Remember it, if don't have one.  */
139     TYPE_POINTER_TYPE (type) = ntype;
140
141   return ntype;
142 }
143
144 /* Given a type TYPE, return a type of pointers to that type.
145    May need to construct such a type if this is the first use.  */
146
147 struct type *
148 lookup_pointer_type (type)
149      struct type *type;
150 {
151   return make_pointer_type (type, (struct type **)0);
152 }
153
154 /* Lookup a C++ `reference' to a type TYPE.  TYPEPTR, if nonzero, points
155    to a pointer to memory where the reference type should be stored.
156    If *TYPEPTR is zero, update it to point to the reference type we return.
157    We allocate new memory if needed.  */
158
159 struct type *
160 make_reference_type (type, typeptr)
161      struct type *type;
162      struct type **typeptr;
163 {
164   register struct type *ntype;          /* New type */
165   struct objfile *objfile;
166
167   ntype = TYPE_REFERENCE_TYPE (type);
168
169   if (ntype) 
170     if (typeptr == 0)           
171       return ntype;     /* Don't care about alloc, and have new type.  */
172     else if (*typeptr == 0)
173       {
174         *typeptr = ntype;       /* Tracking alloc, and we have new type.  */
175         return ntype;
176       }
177
178   if (typeptr == 0 || *typeptr == 0)    /* We'll need to allocate one.  */
179     {
180       ntype = alloc_type (TYPE_OBJFILE (type));
181       if (typeptr)
182         *typeptr = ntype;
183     }
184   else                          /* We have storage, but need to reset it.  */
185     {
186       ntype = *typeptr;
187       objfile = TYPE_OBJFILE (ntype);
188       memset ((char *) ntype, 0, sizeof (struct type));
189       TYPE_OBJFILE (ntype) = objfile;
190     }
191
192   TYPE_TARGET_TYPE (ntype) = type;
193   TYPE_REFERENCE_TYPE (type) = ntype;
194
195   /* FIXME!  Assume the machine has only one representation for references,
196      and that it matches the (only) representation for pointers!  */
197
198   TYPE_LENGTH (ntype) = TARGET_PTR_BIT / TARGET_CHAR_BIT;
199   TYPE_CODE (ntype) = TYPE_CODE_REF;
200   
201   if (!TYPE_REFERENCE_TYPE (type))      /* Remember it, if don't have one.  */
202     TYPE_REFERENCE_TYPE (type) = ntype;
203
204   return ntype;
205 }
206
207 /* Same as above, but caller doesn't care about memory allocation details.  */
208
209 struct type *
210 lookup_reference_type (type)
211      struct type *type;
212 {
213   return make_reference_type (type, (struct type **)0);
214 }
215
216 /* Lookup a function type that returns type TYPE.  TYPEPTR, if nonzero, points
217    to a pointer to memory where the function type should be stored.
218    If *TYPEPTR is zero, update it to point to the function type we return.
219    We allocate new memory if needed.  */
220
221 struct type *
222 make_function_type (type, typeptr)
223      struct type *type;
224      struct type **typeptr;
225 {
226   register struct type *ntype;          /* New type */
227   struct objfile *objfile;
228
229   if (typeptr == 0 || *typeptr == 0)    /* We'll need to allocate one.  */
230     {
231       ntype = alloc_type (TYPE_OBJFILE (type));
232       if (typeptr)
233         *typeptr = ntype;
234     }
235   else                          /* We have storage, but need to reset it.  */
236     {
237       ntype = *typeptr;
238       objfile = TYPE_OBJFILE (ntype);
239       memset ((char *) ntype, 0, sizeof (struct type));
240       TYPE_OBJFILE (ntype) = objfile;
241     }
242
243   TYPE_TARGET_TYPE (ntype) = type;
244
245   TYPE_LENGTH (ntype) = 1;
246   TYPE_CODE (ntype) = TYPE_CODE_FUNC;
247   
248   return ntype;
249 }
250
251
252 /* Given a type TYPE, return a type of functions that return that type.
253    May need to construct such a type if this is the first use.  */
254
255 struct type *
256 lookup_function_type (type)
257      struct type *type;
258 {
259   return make_function_type (type, (struct type **)0);
260 }
261
262 /* Implement direct support for MEMBER_TYPE in GNU C++.
263    May need to construct such a type if this is the first use.
264    The TYPE is the type of the member.  The DOMAIN is the type
265    of the aggregate that the member belongs to.  */
266
267 struct type *
268 lookup_member_type (type, domain)
269      struct type *type;
270      struct type *domain;
271 {
272   register struct type *mtype;
273
274   mtype = alloc_type (TYPE_OBJFILE (type));
275   smash_to_member_type (mtype, domain, type);
276   return (mtype);
277 }
278
279 /* Allocate a stub method whose return type is TYPE.  
280    This apparently happens for speed of symbol reading, since parsing
281    out the arguments to the method is cpu-intensive, the way we are doing
282    it.  So, we will fill in arguments later.
283    This always returns a fresh type.   */
284
285 struct type *
286 allocate_stub_method (type)
287      struct type *type;
288 {
289   struct type *mtype;
290
291   mtype = alloc_type (TYPE_OBJFILE (type));
292   TYPE_TARGET_TYPE (mtype) = type;
293   /*  _DOMAIN_TYPE (mtype) = unknown yet */
294   /*  _ARG_TYPES (mtype) = unknown yet */
295   TYPE_FLAGS (mtype) = TYPE_FLAG_STUB;
296   TYPE_CODE (mtype) = TYPE_CODE_METHOD;
297   TYPE_LENGTH (mtype) = 1;
298   return (mtype);
299 }
300
301 /* Create a range type using either a blank type supplied in RESULT_TYPE,
302    or creating a new type, inheriting the objfile from INDEX_TYPE.
303
304    Indices will be of type INDEX_TYPE, and will range from LOW_BOUND to
305    HIGH_BOUND, inclusive.
306
307    FIXME:  Maybe we should check the TYPE_CODE of RESULT_TYPE to make
308    sure it is TYPE_CODE_UNDEF before we bash it into a range type? */
309
310 struct type *
311 create_range_type (result_type, index_type, low_bound, high_bound)
312      struct type *result_type;
313      struct type *index_type;
314      int low_bound;
315      int high_bound;
316 {
317   if (result_type == NULL)
318     {
319       result_type = alloc_type (TYPE_OBJFILE (index_type));
320     }
321   TYPE_CODE (result_type) = TYPE_CODE_RANGE;
322   TYPE_TARGET_TYPE (result_type) = index_type;
323   if (TYPE_FLAGS (index_type) & TYPE_FLAG_STUB)
324     TYPE_FLAGS (result_type) |= TYPE_FLAG_TARGET_STUB;
325   else
326     TYPE_LENGTH (result_type) = TYPE_LENGTH (index_type);
327   TYPE_NFIELDS (result_type) = 2;
328   TYPE_FIELDS (result_type) = (struct field *)
329     TYPE_ALLOC (result_type, 2 * sizeof (struct field));
330   memset (TYPE_FIELDS (result_type), 0, 2 * sizeof (struct field));
331   TYPE_FIELD_BITPOS (result_type, 0) = low_bound;
332   TYPE_FIELD_BITPOS (result_type, 1) = high_bound;
333   TYPE_FIELD_TYPE (result_type, 0) = builtin_type_int;          /* FIXME */
334   TYPE_FIELD_TYPE (result_type, 1) = builtin_type_int;          /* FIXME */
335
336   return (result_type);
337 }
338
339 /* A lot of code assumes that the "index type" of an array/string/
340    set/bitstring is specifically a range type, though in some languages
341    it can be any discrete type. */
342
343 struct type *
344 force_to_range_type (type)
345      struct type *type;
346 {
347   switch (TYPE_CODE (type))
348     {
349     case TYPE_CODE_RANGE:
350       return type;
351
352     case TYPE_CODE_ENUM:
353       {
354         int low_bound = TYPE_FIELD_BITPOS (type, 0);
355         int high_bound = TYPE_FIELD_BITPOS (type, TYPE_NFIELDS (type) - 1);
356         struct type *range_type =
357           create_range_type (NULL, type, low_bound, high_bound);
358         TYPE_NAME (range_type) = TYPE_NAME (range_type);
359         TYPE_DUMMY_RANGE (range_type) = 1;
360         return range_type;
361       }
362     case TYPE_CODE_BOOL:
363       {
364         struct type *range_type = create_range_type (NULL, type, 0, 1);
365         TYPE_NAME (range_type) = TYPE_NAME (range_type);
366         TYPE_DUMMY_RANGE (range_type) = 1;
367         return range_type;
368       }
369     case TYPE_CODE_CHAR:
370       {
371         struct type *range_type = create_range_type (NULL, type, 0, 255);
372         TYPE_NAME (range_type) = TYPE_NAME (range_type);
373         TYPE_DUMMY_RANGE (range_type) = 1;
374         return range_type;
375       }
376     default:
377       {
378         static struct complaint msg =
379           { "array index type must be a discrete type", 0, 0};
380         complain (&msg);
381
382         return create_range_type (NULL, builtin_type_int, 0, 0);
383       }
384     }
385 }
386
387 /* Create an array type using either a blank type supplied in RESULT_TYPE,
388    or creating a new type, inheriting the objfile from RANGE_TYPE.
389
390    Elements will be of type ELEMENT_TYPE, the indices will be of type
391    RANGE_TYPE.
392
393    FIXME:  Maybe we should check the TYPE_CODE of RESULT_TYPE to make
394    sure it is TYPE_CODE_UNDEF before we bash it into an array type? */
395
396 struct type *
397 create_array_type (result_type, element_type, range_type)
398      struct type *result_type;
399      struct type *element_type;
400      struct type *range_type;
401 {
402   int low_bound;
403   int high_bound;
404
405   range_type = force_to_range_type (range_type);
406   if (result_type == NULL)
407     {
408       result_type = alloc_type (TYPE_OBJFILE (range_type));
409     }
410   TYPE_CODE (result_type) = TYPE_CODE_ARRAY;
411   TYPE_TARGET_TYPE (result_type) = element_type;
412   low_bound = TYPE_LOW_BOUND (range_type);
413   high_bound = TYPE_HIGH_BOUND (range_type);
414   TYPE_LENGTH (result_type) =
415     TYPE_LENGTH (element_type) * (high_bound - low_bound + 1);
416   TYPE_NFIELDS (result_type) = 1;
417   TYPE_FIELDS (result_type) =
418     (struct field *) TYPE_ALLOC (result_type, sizeof (struct field));
419   memset (TYPE_FIELDS (result_type), 0, sizeof (struct field));
420   TYPE_FIELD_TYPE (result_type, 0) = range_type;
421   TYPE_VPTR_FIELDNO (result_type) = -1;
422
423   return (result_type);
424 }
425
426 /* Create a string type using either a blank type supplied in RESULT_TYPE,
427    or creating a new type.  String types are similar enough to array of
428    char types that we can use create_array_type to build the basic type
429    and then bash it into a string type.
430
431    For fixed length strings, the range type contains 0 as the lower
432    bound and the length of the string minus one as the upper bound.
433
434    FIXME:  Maybe we should check the TYPE_CODE of RESULT_TYPE to make
435    sure it is TYPE_CODE_UNDEF before we bash it into a string type? */
436
437 struct type *
438 create_string_type (result_type, range_type)
439      struct type *result_type;
440      struct type *range_type;
441 {
442   result_type = create_array_type (result_type,
443                                    *current_language->string_char_type,
444                                    range_type);
445   TYPE_CODE (result_type) = TYPE_CODE_STRING;
446   return (result_type);
447 }
448
449 struct type *
450 create_set_type (result_type, domain_type)
451      struct type *result_type;
452      struct type *domain_type;
453 {
454   int low_bound, high_bound, bit_length;
455   if (result_type == NULL)
456     {
457       result_type = alloc_type (TYPE_OBJFILE (domain_type));
458     }
459   TYPE_CODE (result_type) = TYPE_CODE_SET;
460   TYPE_NFIELDS (result_type) = 1;
461   TYPE_FIELDS (result_type) = (struct field *)
462     TYPE_ALLOC (result_type, 1 * sizeof (struct field));
463   memset (TYPE_FIELDS (result_type), 0, sizeof (struct field));
464
465   if (! (TYPE_FLAGS (domain_type) & TYPE_FLAG_STUB))
466     {
467       domain_type = force_to_range_type (domain_type);
468       low_bound = TYPE_LOW_BOUND (domain_type);
469       high_bound = TYPE_HIGH_BOUND (domain_type);
470       bit_length = high_bound - low_bound + 1;
471       TYPE_LENGTH (result_type)
472         = ((bit_length + TARGET_CHAR_BIT - 1) / TARGET_CHAR_BIT)
473           * TARGET_CHAR_BIT;
474     }
475   TYPE_FIELD_TYPE (result_type, 0) = domain_type;
476   return (result_type);
477 }
478
479 /* Smash TYPE to be a type of members of DOMAIN with type TO_TYPE. 
480    A MEMBER is a wierd thing -- it amounts to a typed offset into
481    a struct, e.g. "an int at offset 8".  A MEMBER TYPE doesn't
482    include the offset (that's the value of the MEMBER itself), but does
483    include the structure type into which it points (for some reason).
484
485    When "smashing" the type, we preserve the objfile that the
486    old type pointed to, since we aren't changing where the type is actually
487    allocated.  */
488
489 void
490 smash_to_member_type (type, domain, to_type)
491      struct type *type;
492      struct type *domain;
493      struct type *to_type;
494 {
495   struct objfile *objfile;
496
497   objfile = TYPE_OBJFILE (type);
498
499   memset ((char *) type, 0, sizeof (struct type));
500   TYPE_OBJFILE (type) = objfile;
501   TYPE_TARGET_TYPE (type) = to_type;
502   TYPE_DOMAIN_TYPE (type) = domain;
503   TYPE_LENGTH (type) = 1;       /* In practice, this is never needed.  */
504   TYPE_CODE (type) = TYPE_CODE_MEMBER;
505 }
506
507 /* Smash TYPE to be a type of method of DOMAIN with type TO_TYPE.
508    METHOD just means `function that gets an extra "this" argument'.
509
510    When "smashing" the type, we preserve the objfile that the
511    old type pointed to, since we aren't changing where the type is actually
512    allocated.  */
513
514 void
515 smash_to_method_type (type, domain, to_type, args)
516      struct type *type;
517      struct type *domain;
518      struct type *to_type;
519      struct type **args;
520 {
521   struct objfile *objfile;
522
523   objfile = TYPE_OBJFILE (type);
524
525   memset ((char *) type, 0, sizeof (struct type));
526   TYPE_OBJFILE (type) = objfile;
527   TYPE_TARGET_TYPE (type) = to_type;
528   TYPE_DOMAIN_TYPE (type) = domain;
529   TYPE_ARG_TYPES (type) = args;
530   TYPE_LENGTH (type) = 1;       /* In practice, this is never needed.  */
531   TYPE_CODE (type) = TYPE_CODE_METHOD;
532 }
533
534 /* Return a typename for a struct/union/enum type without "struct ",
535    "union ", or "enum ".  If the type has a NULL name, return NULL.  */
536
537 char *
538 type_name_no_tag (type)
539      register const struct type *type;
540 {
541   if (TYPE_TAG_NAME (type) != NULL)
542     return TYPE_TAG_NAME (type);
543
544   /* Is there code which expects this to return the name if there is no
545      tag name?  My guess is that this is mainly used for C++ in cases where
546      the two will always be the same.  */
547   return TYPE_NAME (type);
548 }
549
550 /* Lookup a primitive type named NAME. 
551    Return zero if NAME is not a primitive type.*/
552
553 struct type *
554 lookup_primitive_typename (name)
555      char *name;
556 {
557    struct type ** const *p;
558
559    for (p = current_language -> la_builtin_type_vector; *p != NULL; p++)
560      {
561        if (STREQ ((**p) -> name, name))
562          {
563            return (**p);
564          }
565      }
566    return (NULL); 
567 }
568
569 /* Lookup a typedef or primitive type named NAME,
570    visible in lexical block BLOCK.
571    If NOERR is nonzero, return zero if NAME is not suitably defined.  */
572
573 struct type *
574 lookup_typename (name, block, noerr)
575      char *name;
576      struct block *block;
577      int noerr;
578 {
579   register struct symbol *sym;
580   register struct type *tmp;
581
582   sym = lookup_symbol (name, block, VAR_NAMESPACE, 0, (struct symtab **) NULL);
583   if (sym == NULL || SYMBOL_CLASS (sym) != LOC_TYPEDEF)
584     {
585       tmp = lookup_primitive_typename (name);
586       if (tmp)
587         {
588           return (tmp);
589         }
590       else if (!tmp && noerr)
591         {
592           return (NULL);
593         }
594       else
595         {
596           error ("No type named %s.", name);
597         }
598     }
599   return (SYMBOL_TYPE (sym));
600 }
601
602 struct type *
603 lookup_unsigned_typename (name)
604      char *name;
605 {
606   char *uns = alloca (strlen (name) + 10);
607
608   strcpy (uns, "unsigned ");
609   strcpy (uns + 9, name);
610   return (lookup_typename (uns, (struct block *) NULL, 0));
611 }
612
613 struct type *
614 lookup_signed_typename (name)
615      char *name;
616 {
617   struct type *t;
618   char *uns = alloca (strlen (name) + 8);
619
620   strcpy (uns, "signed ");
621   strcpy (uns + 7, name);
622   t = lookup_typename (uns, (struct block *) NULL, 1);
623   /* If we don't find "signed FOO" just try again with plain "FOO". */
624   if (t != NULL)
625     return t;
626   return lookup_typename (name, (struct block *) NULL, 0);
627 }
628
629 /* Lookup a structure type named "struct NAME",
630    visible in lexical block BLOCK.  */
631
632 struct type *
633 lookup_struct (name, block)
634      char *name;
635      struct block *block;
636 {
637   register struct symbol *sym;
638
639   sym = lookup_symbol (name, block, STRUCT_NAMESPACE, 0,
640                        (struct symtab **) NULL);
641
642   if (sym == NULL)
643     {
644       error ("No struct type named %s.", name);
645     }
646   if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_STRUCT)
647     {
648       error ("This context has class, union or enum %s, not a struct.", name);
649     }
650   return (SYMBOL_TYPE (sym));
651 }
652
653 /* Lookup a union type named "union NAME",
654    visible in lexical block BLOCK.  */
655
656 struct type *
657 lookup_union (name, block)
658      char *name;
659      struct block *block;
660 {
661   register struct symbol *sym;
662
663   sym = lookup_symbol (name, block, STRUCT_NAMESPACE, 0,
664                        (struct symtab **) NULL);
665
666   if (sym == NULL)
667     {
668       error ("No union type named %s.", name);
669     }
670   if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_UNION)
671     {
672       error ("This context has class, struct or enum %s, not a union.", name);
673     }
674   return (SYMBOL_TYPE (sym));
675 }
676
677 /* Lookup an enum type named "enum NAME",
678    visible in lexical block BLOCK.  */
679
680 struct type *
681 lookup_enum (name, block)
682      char *name;
683      struct block *block;
684 {
685   register struct symbol *sym;
686
687   sym = lookup_symbol (name, block, STRUCT_NAMESPACE, 0, 
688                        (struct symtab **) NULL);
689   if (sym == NULL)
690     {
691       error ("No enum type named %s.", name);
692     }
693   if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_ENUM)
694     {
695       error ("This context has class, struct or union %s, not an enum.", name);
696     }
697   return (SYMBOL_TYPE (sym));
698 }
699
700 /* Lookup a template type named "template NAME<TYPE>",
701    visible in lexical block BLOCK.  */
702
703 struct type *
704 lookup_template_type (name, type, block)
705      char *name;
706      struct type *type;
707      struct block *block;
708 {
709   struct symbol *sym;
710   char *nam = (char*) alloca(strlen(name) + strlen(type->name) + 4);
711   strcpy (nam, name);
712   strcat (nam, "<");
713   strcat (nam, type->name);
714   strcat (nam, " >");   /* FIXME, extra space still introduced in gcc? */
715
716   sym = lookup_symbol (nam, block, VAR_NAMESPACE, 0, (struct symtab **)NULL);
717
718   if (sym == NULL)
719     {
720       error ("No template type named %s.", name);
721     }
722   if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_STRUCT)
723     {
724       error ("This context has class, union or enum %s, not a struct.", name);
725     }
726   return (SYMBOL_TYPE (sym));
727 }
728
729 /* Given a type TYPE, lookup the type of the component of type named NAME.  
730
731    TYPE can be either a struct or union, or a pointer or reference to a struct or
732    union.  If it is a pointer or reference, its target type is automatically used.
733    Thus '.' and '->' are interchangable, as specified for the definitions of the
734    expression element types STRUCTOP_STRUCT and STRUCTOP_PTR.
735
736    If NOERR is nonzero, return zero if NAME is not suitably defined.
737    If NAME is the name of a baseclass type, return that type.  */
738
739 struct type *
740 lookup_struct_elt_type (type, name, noerr)
741      struct type *type;
742      char *name;
743     int noerr;
744 {
745   int i;
746
747   while (TYPE_CODE (type) == TYPE_CODE_PTR ||
748       TYPE_CODE (type) == TYPE_CODE_REF)
749       type = TYPE_TARGET_TYPE (type);
750
751   if (TYPE_CODE (type) != TYPE_CODE_STRUCT &&
752       TYPE_CODE (type) != TYPE_CODE_UNION)
753     {
754       target_terminal_ours ();
755       gdb_flush (gdb_stdout);
756       fprintf_unfiltered (gdb_stderr, "Type ");
757       type_print (type, "", gdb_stderr, -1);
758       error (" is not a structure or union type.");
759     }
760
761   check_stub_type (type);
762
763 #if 0
764   /* FIXME:  This change put in by Michael seems incorrect for the case where
765      the structure tag name is the same as the member name.  I.E. when doing
766      "ptype bell->bar" for "struct foo { int bar; int foo; } bell;"
767      Disabled by fnf. */
768   {
769     char *typename;
770
771     typename = type_name_no_tag (type);
772     if (typename != NULL && STREQ (typename, name))
773       return type;
774   }
775 #endif
776
777   for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
778     {
779       char *t_field_name = TYPE_FIELD_NAME (type, i);
780
781       if (t_field_name && STREQ (t_field_name, name))
782         {
783           return TYPE_FIELD_TYPE (type, i);
784         }
785     }
786
787   /* OK, it's not in this class.  Recursively check the baseclasses.  */
788   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
789     {
790       struct type *t;
791
792       t = lookup_struct_elt_type (TYPE_BASECLASS (type, i), name, noerr);
793       if (t != NULL)
794         {
795           return t;
796         }
797     }
798
799   if (noerr)
800     {
801       return NULL;
802     }
803   
804   target_terminal_ours ();
805   gdb_flush (gdb_stdout);
806   fprintf_unfiltered (gdb_stderr, "Type ");
807   type_print (type, "", gdb_stderr, -1);
808   fprintf_unfiltered (gdb_stderr, " has no component named ");
809   fputs_filtered (name, gdb_stderr);
810   error (".");
811   return (struct type *)-1;     /* For lint */
812 }
813
814 /* If possible, make the vptr_fieldno and vptr_basetype fields of TYPE
815    valid.  Callers should be aware that in some cases (for example,
816    the type or one of its baseclasses is a stub type and we are
817    debugging a .o file), this function will not be able to find the virtual
818    function table pointer, and vptr_fieldno will remain -1 and vptr_basetype
819    will remain NULL.  */
820
821 void
822 fill_in_vptr_fieldno (type)
823      struct type *type;
824 {
825   check_stub_type (type);
826
827   if (TYPE_VPTR_FIELDNO (type) < 0)
828     {
829       int i;
830
831       /* We must start at zero in case the first (and only) baseclass is
832          virtual (and hence we cannot share the table pointer).  */
833       for (i = 0; i < TYPE_N_BASECLASSES (type); i++)
834         {
835           fill_in_vptr_fieldno (TYPE_BASECLASS (type, i));
836           if (TYPE_VPTR_FIELDNO (TYPE_BASECLASS (type, i)) >= 0)
837             {
838               TYPE_VPTR_FIELDNO (type)
839                 = TYPE_VPTR_FIELDNO (TYPE_BASECLASS (type, i));
840               TYPE_VPTR_BASETYPE (type)
841                 = TYPE_VPTR_BASETYPE (TYPE_BASECLASS (type, i));
842               break;
843             }
844         }
845     }
846 }
847
848 /* Added by Bryan Boreham, Kewill, Sun Sep 17 18:07:17 1989.
849
850    If this is a stubbed struct (i.e. declared as struct foo *), see if
851    we can find a full definition in some other file. If so, copy this
852    definition, so we can use it in future.  There used to be a comment (but
853    not any code) that if we don't find a full definition, we'd set a flag
854    so we don't spend time in the future checking the same type.  That would
855    be a mistake, though--we might load in more symbols which contain a
856    full definition for the type.
857
858    This used to be coded as a macro, but I don't think it is called 
859    often enough to merit such treatment.  */
860
861 struct complaint stub_noname_complaint =
862   {"stub type has NULL name", 0, 0};
863
864 void 
865 check_stub_type (type)
866      struct type *type;
867 {
868   if (TYPE_FLAGS(type) & TYPE_FLAG_STUB)
869     {
870       char* name = type_name_no_tag (type);
871       /* FIXME: shouldn't we separately check the TYPE_NAME and the
872          TYPE_TAG_NAME, and look in STRUCT_NAMESPACE and/or VAR_NAMESPACE
873          as appropriate?  (this code was written before TYPE_NAME and
874          TYPE_TAG_NAME were separate).  */
875       struct symbol *sym;
876       if (name == NULL)
877         {
878           complain (&stub_noname_complaint);
879           return;
880         }
881       sym = lookup_symbol (name, 0, STRUCT_NAMESPACE, 0, 
882                            (struct symtab **) NULL);
883       if (sym)
884         {
885           memcpy ((char *)type,
886                   (char *)SYMBOL_TYPE(sym),
887                   sizeof (struct type));
888         }
889     }
890
891   if (TYPE_FLAGS (type) & TYPE_FLAG_TARGET_STUB)
892     {
893       struct type *range_type;
894
895       check_stub_type (TYPE_TARGET_TYPE (type));
896       if (TYPE_FLAGS (TYPE_TARGET_TYPE (type)) & TYPE_FLAG_STUB)
897         { }
898       else if (TYPE_CODE (type) == TYPE_CODE_ARRAY
899                && TYPE_NFIELDS (type) == 1
900                && (TYPE_CODE (range_type = TYPE_FIELD_TYPE (type, 0))
901                    == TYPE_CODE_RANGE))
902         {
903           /* Now recompute the length of the array type, based on its
904              number of elements and the target type's length.  */
905           TYPE_LENGTH (type) =
906             ((TYPE_FIELD_BITPOS (range_type, 1)
907               - TYPE_FIELD_BITPOS (range_type, 0)
908               + 1)
909              * TYPE_LENGTH (TYPE_TARGET_TYPE (type)));
910           TYPE_FLAGS (type) &= ~TYPE_FLAG_TARGET_STUB;
911         }
912       else if (TYPE_CODE (type) == TYPE_CODE_RANGE)
913         {
914           TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
915           TYPE_FLAGS (type) &= ~TYPE_FLAG_TARGET_STUB;
916         }
917     }
918 }
919
920 /* Ugly hack to convert method stubs into method types.
921
922    He ain't kiddin'.  This demangles the name of the method into a string
923    including argument types, parses out each argument type, generates
924    a string casting a zero to that type, evaluates the string, and stuffs
925    the resulting type into an argtype vector!!!  Then it knows the type
926    of the whole function (including argument types for overloading),
927    which info used to be in the stab's but was removed to hack back
928    the space required for them.  */
929
930 void
931 check_stub_method (type, i, j)
932      struct type *type;
933      int i;
934      int j;
935 {
936   struct fn_field *f;
937   char *mangled_name = gdb_mangle_name (type, i, j);
938   char *demangled_name = cplus_demangle (mangled_name,
939                                          DMGL_PARAMS | DMGL_ANSI);
940   char *argtypetext, *p;
941   int depth = 0, argcount = 1;
942   struct type **argtypes;
943   struct type *mtype;
944
945   if (demangled_name == NULL)
946     {
947       error ("Internal: Cannot demangle mangled name `%s'.", mangled_name);
948     }
949
950   /* Now, read in the parameters that define this type.  */
951   argtypetext = strchr (demangled_name, '(') + 1;
952   p = argtypetext;
953   while (*p)
954     {
955       if (*p == '(')
956         {
957           depth += 1;
958         }
959       else if (*p == ')')
960         {
961           depth -= 1;
962         }
963       else if (*p == ',' && depth == 0)
964         {
965           argcount += 1;
966         }
967
968       p += 1;
969     }
970
971   /* We need two more slots: one for the THIS pointer, and one for the
972      NULL [...] or void [end of arglist].  */
973
974   argtypes = (struct type **)
975     TYPE_ALLOC (type, (argcount + 2) * sizeof (struct type *));
976   p = argtypetext;
977   /* FIXME: This is wrong for static member functions.  */
978   argtypes[0] = lookup_pointer_type (type);
979   argcount = 1;
980
981   if (*p != ')')                        /* () means no args, skip while */
982     {
983       depth = 0;
984       while (*p)
985         {
986           if (depth <= 0 && (*p == ',' || *p == ')'))
987             {
988               /* Avoid parsing of ellipsis, they will be handled below.  */
989               if (strncmp (argtypetext, "...", p - argtypetext) != 0)
990                 {
991                   argtypes[argcount] =
992                       parse_and_eval_type (argtypetext, p - argtypetext);
993                   argcount += 1;
994                 }
995               argtypetext = p + 1;
996             }
997
998           if (*p == '(')
999             {
1000               depth += 1;
1001             }
1002           else if (*p == ')')
1003             {
1004               depth -= 1;
1005             }
1006
1007           p += 1;
1008         }
1009     }
1010
1011   if (p[-2] != '.')                     /* Not '...' */
1012     {
1013       argtypes[argcount] = builtin_type_void;   /* List terminator */
1014     }
1015   else
1016     {
1017       argtypes[argcount] = NULL;                /* Ellist terminator */
1018     }
1019
1020   free (demangled_name);
1021
1022   f = TYPE_FN_FIELDLIST1 (type, i);
1023   TYPE_FN_FIELD_PHYSNAME (f, j) = mangled_name;
1024
1025   /* Now update the old "stub" type into a real type.  */
1026   mtype = TYPE_FN_FIELD_TYPE (f, j);
1027   TYPE_DOMAIN_TYPE (mtype) = type;
1028   TYPE_ARG_TYPES (mtype) = argtypes;
1029   TYPE_FLAGS (mtype) &= ~TYPE_FLAG_STUB;
1030   TYPE_FN_FIELD_STUB (f, j) = 0;
1031 }
1032
1033 const struct cplus_struct_type cplus_struct_default;
1034
1035 void
1036 allocate_cplus_struct_type (type)
1037      struct type *type;
1038 {
1039   if (!HAVE_CPLUS_STRUCT (type))
1040     {
1041       TYPE_CPLUS_SPECIFIC (type) = (struct cplus_struct_type *)
1042         TYPE_ALLOC (type, sizeof (struct cplus_struct_type));
1043       *(TYPE_CPLUS_SPECIFIC(type)) = cplus_struct_default;
1044     }
1045 }
1046
1047 /* Helper function to initialize the standard scalar types.
1048
1049    If NAME is non-NULL and OBJFILE is non-NULL, then we make a copy
1050    of the string pointed to by name in the type_obstack for that objfile,
1051    and initialize the type name to that copy.  There are places (mipsread.c
1052    in particular, where init_type is called with a NULL value for NAME). */
1053
1054 struct type *
1055 init_type (code, length, flags, name, objfile)
1056      enum type_code code;
1057      int length;
1058      int flags;
1059      char *name;
1060      struct objfile *objfile;
1061 {
1062   register struct type *type;
1063
1064   type = alloc_type (objfile);
1065   TYPE_CODE (type) = code;
1066   TYPE_LENGTH (type) = length;
1067   TYPE_FLAGS (type) |= flags;
1068   if ((name != NULL) && (objfile != NULL))
1069     {
1070       TYPE_NAME (type) =
1071         obsavestring (name, strlen (name), &objfile -> type_obstack);
1072     }
1073   else
1074     {
1075       TYPE_NAME (type) = name;
1076     }
1077
1078   /* C++ fancies.  */
1079
1080   if (code == TYPE_CODE_STRUCT || code == TYPE_CODE_UNION)
1081     {
1082       INIT_CPLUS_SPECIFIC (type);
1083     }
1084   return (type);
1085 }
1086
1087 /* Look up a fundamental type for the specified objfile.
1088    May need to construct such a type if this is the first use.
1089
1090    Some object file formats (ELF, COFF, etc) do not define fundamental
1091    types such as "int" or "double".  Others (stabs for example), do
1092    define fundamental types.
1093
1094    For the formats which don't provide fundamental types, gdb can create
1095    such types, using defaults reasonable for the current language and
1096    the current target machine.
1097
1098    NOTE:  This routine is obsolescent.  Each debugging format reader
1099    should manage it's own fundamental types, either creating them from
1100    suitable defaults or reading them from the debugging information,
1101    whichever is appropriate.  The DWARF reader has already been
1102    fixed to do this.  Once the other readers are fixed, this routine
1103    will go away.  Also note that fundamental types should be managed
1104    on a compilation unit basis in a multi-language environment, not
1105    on a linkage unit basis as is done here. */
1106
1107
1108 struct type *
1109 lookup_fundamental_type (objfile, typeid)
1110      struct objfile *objfile;
1111      int typeid;
1112 {
1113   register struct type **typep;
1114   register int nbytes;
1115
1116   if (typeid < 0 || typeid >= FT_NUM_MEMBERS)
1117     {
1118       error ("internal error - invalid fundamental type id %d", typeid);
1119     }
1120
1121   /* If this is the first time we need a fundamental type for this objfile
1122      then we need to initialize the vector of type pointers. */
1123   
1124   if (objfile -> fundamental_types == NULL)
1125     {
1126       nbytes = FT_NUM_MEMBERS * sizeof (struct type *);
1127       objfile -> fundamental_types = (struct type **)
1128         obstack_alloc (&objfile -> type_obstack, nbytes);
1129       memset ((char *) objfile -> fundamental_types, 0, nbytes);
1130     }
1131
1132   /* Look for this particular type in the fundamental type vector.  If one is
1133      not found, create and install one appropriate for the current language. */
1134
1135   typep = objfile -> fundamental_types + typeid;
1136   if (*typep == NULL)
1137     {
1138       *typep = create_fundamental_type (objfile, typeid);
1139     }
1140
1141   return (*typep);
1142 }
1143
1144 int
1145 can_dereference (t)
1146      struct type *t;
1147 {
1148   /* FIXME: Should we return true for references as well as pointers?  */
1149   return
1150     (t != NULL
1151      && TYPE_CODE (t) == TYPE_CODE_PTR
1152      && TYPE_CODE (TYPE_TARGET_TYPE (t)) != TYPE_CODE_VOID);
1153 }
1154
1155 /* Chill varying string and arrays are represented as follows:
1156
1157    struct { int __var_length; ELEMENT_TYPE[MAX_SIZE] __var_data};
1158
1159    Return true if TYPE is such a Chill varying type. */
1160
1161 int
1162 chill_varying_type (type)
1163      struct type *type;
1164 {
1165   if (TYPE_CODE (type) != TYPE_CODE_STRUCT
1166       || TYPE_NFIELDS (type) != 2
1167       || strcmp (TYPE_FIELD_NAME (type, 0), "__var_length") != 0)
1168     return 0;
1169   return 1;
1170 }
1171
1172 #if MAINTENANCE_CMDS
1173
1174 static void
1175 print_bit_vector (bits, nbits)
1176      B_TYPE *bits;
1177      int nbits;
1178 {
1179   int bitno;
1180
1181   for (bitno = 0; bitno < nbits; bitno++)
1182     {
1183       if ((bitno % 8) == 0)
1184         {
1185           puts_filtered (" ");
1186         }
1187       if (B_TST (bits, bitno))
1188         {
1189           printf_filtered ("1");
1190         }
1191       else
1192         {
1193           printf_filtered ("0");
1194         }
1195     }
1196 }
1197
1198 /* The args list is a strange beast.  It is either terminated by a NULL
1199    pointer for varargs functions, or by a pointer to a TYPE_CODE_VOID
1200    type for normal fixed argcount functions.  (FIXME someday)
1201    Also note the first arg should be the "this" pointer, we may not want to
1202    include it since we may get into a infinitely recursive situation. */
1203
1204 static void
1205 print_arg_types (args, spaces)
1206      struct type **args;
1207      int spaces;
1208 {
1209   if (args != NULL)
1210     {
1211       while (*args != NULL)
1212         {
1213           recursive_dump_type (*args, spaces + 2);
1214           if ((*args++) -> code == TYPE_CODE_VOID)
1215             {
1216               break;
1217             }
1218         }
1219     }
1220 }
1221
1222 static void
1223 dump_fn_fieldlists (type, spaces)
1224      struct type *type;
1225      int spaces;
1226 {
1227   int method_idx;
1228   int overload_idx;
1229   struct fn_field *f;
1230
1231   printfi_filtered (spaces, "fn_fieldlists ");
1232   gdb_print_address (TYPE_FN_FIELDLISTS (type), gdb_stdout);
1233   printf_filtered ("\n");
1234   for (method_idx = 0; method_idx < TYPE_NFN_FIELDS (type); method_idx++)
1235     {
1236       f = TYPE_FN_FIELDLIST1 (type, method_idx);
1237       printfi_filtered (spaces + 2, "[%d] name '%s' (",
1238                         method_idx,
1239                         TYPE_FN_FIELDLIST_NAME (type, method_idx));
1240       gdb_print_address (TYPE_FN_FIELDLIST_NAME (type, method_idx),
1241                          gdb_stdout);
1242       printf_filtered (") length %d\n",
1243                        TYPE_FN_FIELDLIST_LENGTH (type, method_idx));
1244       for (overload_idx = 0;
1245            overload_idx < TYPE_FN_FIELDLIST_LENGTH (type, method_idx);
1246            overload_idx++)
1247         {
1248           printfi_filtered (spaces + 4, "[%d] physname '%s' (",
1249                             overload_idx,
1250                             TYPE_FN_FIELD_PHYSNAME (f, overload_idx));
1251           gdb_print_address (TYPE_FN_FIELD_PHYSNAME (f, overload_idx),
1252                              gdb_stdout);
1253           printf_filtered (")\n");
1254           printfi_filtered (spaces + 8, "type ");
1255           gdb_print_address (TYPE_FN_FIELD_TYPE (f, overload_idx), gdb_stdout);
1256           printf_filtered ("\n");
1257
1258           recursive_dump_type (TYPE_FN_FIELD_TYPE (f, overload_idx),
1259                                spaces + 8 + 2);
1260
1261           printfi_filtered (spaces + 8, "args ");
1262           gdb_print_address (TYPE_FN_FIELD_ARGS (f, overload_idx), gdb_stdout);
1263           printf_filtered ("\n");
1264
1265           print_arg_types (TYPE_FN_FIELD_ARGS (f, overload_idx), spaces);
1266           printfi_filtered (spaces + 8, "fcontext ");
1267           gdb_print_address (TYPE_FN_FIELD_FCONTEXT (f, overload_idx),
1268                              gdb_stdout);
1269           printf_filtered ("\n");
1270
1271           printfi_filtered (spaces + 8, "is_const %d\n",
1272                             TYPE_FN_FIELD_CONST (f, overload_idx));
1273           printfi_filtered (spaces + 8, "is_volatile %d\n",
1274                             TYPE_FN_FIELD_VOLATILE (f, overload_idx));
1275           printfi_filtered (spaces + 8, "is_private %d\n",
1276                             TYPE_FN_FIELD_PRIVATE (f, overload_idx));
1277           printfi_filtered (spaces + 8, "is_protected %d\n",
1278                             TYPE_FN_FIELD_PROTECTED (f, overload_idx));
1279           printfi_filtered (spaces + 8, "is_stub %d\n",
1280                             TYPE_FN_FIELD_STUB (f, overload_idx));
1281           printfi_filtered (spaces + 8, "voffset %u\n",
1282                             TYPE_FN_FIELD_VOFFSET (f, overload_idx));
1283         }
1284     }
1285 }
1286
1287 static void
1288 print_cplus_stuff (type, spaces)
1289      struct type *type;
1290      int spaces;
1291 {
1292   printfi_filtered (spaces, "n_baseclasses %d\n",
1293                     TYPE_N_BASECLASSES (type));
1294   printfi_filtered (spaces, "nfn_fields %d\n",
1295                     TYPE_NFN_FIELDS (type));
1296   printfi_filtered (spaces, "nfn_fields_total %d\n",
1297                     TYPE_NFN_FIELDS_TOTAL (type));
1298   if (TYPE_N_BASECLASSES (type) > 0)
1299     {
1300       printfi_filtered (spaces, "virtual_field_bits (%d bits at *",
1301                         TYPE_N_BASECLASSES (type));
1302       gdb_print_address (TYPE_FIELD_VIRTUAL_BITS (type), gdb_stdout);
1303       printf_filtered (")");
1304
1305       print_bit_vector (TYPE_FIELD_VIRTUAL_BITS (type),
1306                         TYPE_N_BASECLASSES (type));
1307       puts_filtered ("\n");
1308     }
1309   if (TYPE_NFIELDS (type) > 0)
1310     {
1311       if (TYPE_FIELD_PRIVATE_BITS (type) != NULL)
1312         {
1313           printfi_filtered (spaces, "private_field_bits (%d bits at *",
1314                             TYPE_NFIELDS (type));
1315           gdb_print_address (TYPE_FIELD_PRIVATE_BITS (type), gdb_stdout);
1316           printf_filtered (")");
1317           print_bit_vector (TYPE_FIELD_PRIVATE_BITS (type),
1318                             TYPE_NFIELDS (type));
1319           puts_filtered ("\n");
1320         }
1321       if (TYPE_FIELD_PROTECTED_BITS (type) != NULL)
1322         {
1323           printfi_filtered (spaces, "protected_field_bits (%d bits at *",
1324                             TYPE_NFIELDS (type));
1325           gdb_print_address (TYPE_FIELD_PROTECTED_BITS (type), gdb_stdout);
1326           printf_filtered (")");
1327           print_bit_vector (TYPE_FIELD_PROTECTED_BITS (type),
1328                             TYPE_NFIELDS (type));
1329           puts_filtered ("\n");
1330         }
1331     }
1332   if (TYPE_NFN_FIELDS (type) > 0)
1333     {
1334       dump_fn_fieldlists (type, spaces);
1335     }
1336 }
1337
1338 void
1339 recursive_dump_type (type, spaces)
1340      struct type *type;
1341      int spaces;
1342 {
1343   int idx;
1344
1345   printfi_filtered (spaces, "type node ");
1346   gdb_print_address (type, gdb_stdout);
1347   printf_filtered ("\n");
1348   printfi_filtered (spaces, "name '%s' (",
1349                     TYPE_NAME (type) ? TYPE_NAME (type) : "<NULL>");
1350   gdb_print_address (TYPE_NAME (type), gdb_stdout);
1351   printf_filtered (")\n");
1352   if (TYPE_TAG_NAME (type) != NULL)
1353     {
1354       printfi_filtered (spaces, "tagname '%s' (",
1355                         TYPE_TAG_NAME (type));
1356       gdb_print_address (TYPE_TAG_NAME (type), gdb_stdout);
1357       printf_filtered (")\n");
1358     }
1359   printfi_filtered (spaces, "code 0x%x ", TYPE_CODE (type));
1360   switch (TYPE_CODE (type))
1361     {
1362       case TYPE_CODE_UNDEF:
1363         printf_filtered ("(TYPE_CODE_UNDEF)");
1364         break;
1365       case TYPE_CODE_PTR:
1366         printf_filtered ("(TYPE_CODE_PTR)");
1367         break;
1368       case TYPE_CODE_ARRAY:
1369         printf_filtered ("(TYPE_CODE_ARRAY)");
1370         break;
1371       case TYPE_CODE_STRUCT:
1372         printf_filtered ("(TYPE_CODE_STRUCT)");
1373         break;
1374       case TYPE_CODE_UNION:
1375         printf_filtered ("(TYPE_CODE_UNION)");
1376         break;
1377       case TYPE_CODE_ENUM:
1378         printf_filtered ("(TYPE_CODE_ENUM)");
1379         break;
1380       case TYPE_CODE_FUNC:
1381         printf_filtered ("(TYPE_CODE_FUNC)");
1382         break;
1383       case TYPE_CODE_INT:
1384         printf_filtered ("(TYPE_CODE_INT)");
1385         break;
1386       case TYPE_CODE_FLT:
1387         printf_filtered ("(TYPE_CODE_FLT)");
1388         break;
1389       case TYPE_CODE_VOID:
1390         printf_filtered ("(TYPE_CODE_VOID)");
1391         break;
1392       case TYPE_CODE_SET:
1393         printf_filtered ("(TYPE_CODE_SET)");
1394         break;
1395       case TYPE_CODE_RANGE:
1396         printf_filtered ("(TYPE_CODE_RANGE)");
1397         break;
1398       case TYPE_CODE_STRING:
1399         printf_filtered ("(TYPE_CODE_STRING)");
1400         break;
1401       case TYPE_CODE_ERROR:
1402         printf_filtered ("(TYPE_CODE_ERROR)");
1403         break;
1404       case TYPE_CODE_MEMBER:
1405         printf_filtered ("(TYPE_CODE_MEMBER)");
1406         break;
1407       case TYPE_CODE_METHOD:
1408         printf_filtered ("(TYPE_CODE_METHOD)");
1409         break;
1410       case TYPE_CODE_REF:
1411         printf_filtered ("(TYPE_CODE_REF)");
1412         break;
1413       case TYPE_CODE_CHAR:
1414         printf_filtered ("(TYPE_CODE_CHAR)");
1415         break;
1416       case TYPE_CODE_BOOL:
1417         printf_filtered ("(TYPE_CODE_BOOL)");
1418         break;
1419       default:
1420         printf_filtered ("(UNKNOWN TYPE CODE)");
1421         break;
1422     }
1423   puts_filtered ("\n");
1424   printfi_filtered (spaces, "length %d\n", TYPE_LENGTH (type));
1425   printfi_filtered (spaces, "objfile ");
1426   gdb_print_address (TYPE_OBJFILE (type), gdb_stdout);
1427   printf_filtered ("\n");
1428   printfi_filtered (spaces, "target_type ");
1429   gdb_print_address (TYPE_TARGET_TYPE (type), gdb_stdout);
1430   printf_filtered ("\n");
1431   if (TYPE_TARGET_TYPE (type) != NULL)
1432     {
1433       recursive_dump_type (TYPE_TARGET_TYPE (type), spaces + 2);
1434     }
1435   printfi_filtered (spaces, "pointer_type ");
1436   gdb_print_address (TYPE_POINTER_TYPE (type), gdb_stdout);
1437   printf_filtered ("\n");
1438   printfi_filtered (spaces, "reference_type ");
1439   gdb_print_address (TYPE_REFERENCE_TYPE (type), gdb_stdout);
1440   printf_filtered ("\n");
1441   printfi_filtered (spaces, "flags 0x%x", TYPE_FLAGS (type));
1442   if (TYPE_FLAGS (type) & TYPE_FLAG_UNSIGNED)
1443     {
1444       puts_filtered (" TYPE_FLAG_UNSIGNED");
1445     }
1446   if (TYPE_FLAGS (type) & TYPE_FLAG_STUB)
1447     {
1448       puts_filtered (" TYPE_FLAG_STUB");
1449     }
1450   puts_filtered ("\n");
1451   printfi_filtered (spaces, "nfields %d ", TYPE_NFIELDS (type));
1452   gdb_print_address (TYPE_FIELDS (type), gdb_stdout);
1453   puts_filtered ("\n");
1454   for (idx = 0; idx < TYPE_NFIELDS (type); idx++)
1455     {
1456       printfi_filtered (spaces + 2,
1457                         "[%d] bitpos %d bitsize %d type ",
1458                         idx, TYPE_FIELD_BITPOS (type, idx),
1459                         TYPE_FIELD_BITSIZE (type, idx));
1460       gdb_print_address (TYPE_FIELD_TYPE (type, idx), gdb_stdout);
1461       printf_filtered (" name '%s' (",
1462                        TYPE_FIELD_NAME (type, idx) != NULL
1463                        ? TYPE_FIELD_NAME (type, idx)
1464                        : "<NULL>");
1465       gdb_print_address (TYPE_FIELD_NAME (type, idx), gdb_stdout);
1466       printf_filtered (")\n");
1467       if (TYPE_FIELD_TYPE (type, idx) != NULL)
1468         {
1469           recursive_dump_type (TYPE_FIELD_TYPE (type, idx), spaces + 4);
1470         }
1471     }
1472   printfi_filtered (spaces, "vptr_basetype ");
1473   gdb_print_address (TYPE_VPTR_BASETYPE (type), gdb_stdout);
1474   puts_filtered ("\n");
1475   if (TYPE_VPTR_BASETYPE (type) != NULL)
1476     {
1477       recursive_dump_type (TYPE_VPTR_BASETYPE (type), spaces + 2);
1478     }
1479   printfi_filtered (spaces, "vptr_fieldno %d\n", TYPE_VPTR_FIELDNO (type));
1480   switch (TYPE_CODE (type))
1481     {
1482       case TYPE_CODE_METHOD:
1483       case TYPE_CODE_FUNC:
1484         printfi_filtered (spaces, "arg_types ");
1485         gdb_print_address (TYPE_ARG_TYPES (type), gdb_stdout);
1486         puts_filtered ("\n");
1487         print_arg_types (TYPE_ARG_TYPES (type), spaces);
1488         break;
1489
1490       case TYPE_CODE_STRUCT:
1491         printfi_filtered (spaces, "cplus_stuff ");
1492         gdb_print_address (TYPE_CPLUS_SPECIFIC (type), gdb_stdout);
1493         puts_filtered ("\n");
1494         print_cplus_stuff (type, spaces);
1495         break;
1496
1497       default:
1498         /* We have to pick one of the union types to be able print and test
1499            the value.  Pick cplus_struct_type, even though we know it isn't
1500            any particular one. */
1501         printfi_filtered (spaces, "type_specific ");
1502         gdb_print_address (TYPE_CPLUS_SPECIFIC (type), gdb_stdout);
1503         if (TYPE_CPLUS_SPECIFIC (type) != NULL)
1504           {
1505             printf_filtered (" (unknown data form)");
1506           }
1507         printf_filtered ("\n");
1508         break;
1509
1510     }
1511 }
1512
1513 #endif  /* MAINTENANCE_CMDS */
1514
1515 void
1516 _initialize_gdbtypes ()
1517 {
1518   builtin_type_void =
1519     init_type (TYPE_CODE_VOID, 1,
1520                0,
1521                "void", (struct objfile *) NULL);
1522   builtin_type_char =
1523     init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
1524                0,
1525                "char", (struct objfile *) NULL);
1526   builtin_type_signed_char =
1527     init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
1528                0,
1529                "signed char", (struct objfile *) NULL);
1530   builtin_type_unsigned_char =
1531     init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
1532                TYPE_FLAG_UNSIGNED,
1533                "unsigned char", (struct objfile *) NULL);
1534   builtin_type_short =
1535     init_type (TYPE_CODE_INT, TARGET_SHORT_BIT / TARGET_CHAR_BIT,
1536                0,
1537                "short", (struct objfile *) NULL);
1538   builtin_type_unsigned_short =
1539     init_type (TYPE_CODE_INT, TARGET_SHORT_BIT / TARGET_CHAR_BIT,
1540                TYPE_FLAG_UNSIGNED,
1541                "unsigned short", (struct objfile *) NULL);
1542   builtin_type_int =
1543     init_type (TYPE_CODE_INT, TARGET_INT_BIT / TARGET_CHAR_BIT,
1544                0,
1545                "int", (struct objfile *) NULL);
1546   builtin_type_unsigned_int =
1547     init_type (TYPE_CODE_INT, TARGET_INT_BIT / TARGET_CHAR_BIT,
1548                TYPE_FLAG_UNSIGNED,
1549                "unsigned int", (struct objfile *) NULL);
1550   builtin_type_long =
1551     init_type (TYPE_CODE_INT, TARGET_LONG_BIT / TARGET_CHAR_BIT,
1552                0,
1553                "long", (struct objfile *) NULL);
1554   builtin_type_unsigned_long =
1555     init_type (TYPE_CODE_INT, TARGET_LONG_BIT / TARGET_CHAR_BIT,
1556                TYPE_FLAG_UNSIGNED,
1557                "unsigned long", (struct objfile *) NULL);
1558   builtin_type_long_long =
1559     init_type (TYPE_CODE_INT, TARGET_LONG_LONG_BIT / TARGET_CHAR_BIT,
1560                0,
1561                "long long", (struct objfile *) NULL);
1562   builtin_type_unsigned_long_long = 
1563     init_type (TYPE_CODE_INT, TARGET_LONG_LONG_BIT / TARGET_CHAR_BIT,
1564                TYPE_FLAG_UNSIGNED,
1565                "unsigned long long", (struct objfile *) NULL);
1566   builtin_type_float =
1567     init_type (TYPE_CODE_FLT, TARGET_FLOAT_BIT / TARGET_CHAR_BIT,
1568                0,
1569                "float", (struct objfile *) NULL);
1570   builtin_type_double =
1571     init_type (TYPE_CODE_FLT, TARGET_DOUBLE_BIT / TARGET_CHAR_BIT,
1572                0,
1573                "double", (struct objfile *) NULL);
1574   builtin_type_long_double =
1575     init_type (TYPE_CODE_FLT, TARGET_LONG_DOUBLE_BIT / TARGET_CHAR_BIT,
1576                0,
1577                "long double", (struct objfile *) NULL);
1578   builtin_type_complex =
1579     init_type (TYPE_CODE_COMPLEX, 2 * TARGET_FLOAT_BIT / TARGET_CHAR_BIT,
1580                0,
1581                "complex", (struct objfile *) NULL);
1582   TYPE_TARGET_TYPE (builtin_type_complex) = builtin_type_float;
1583   builtin_type_double_complex =
1584     init_type (TYPE_CODE_COMPLEX, 2 * TARGET_DOUBLE_BIT / TARGET_CHAR_BIT,
1585                0,
1586                "double complex", (struct objfile *) NULL);
1587   TYPE_TARGET_TYPE (builtin_type_double_complex) = builtin_type_double;
1588   builtin_type_string =
1589     init_type (TYPE_CODE_STRING, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
1590                0,
1591                "string", (struct objfile *) NULL);
1592 }
This page took 0.110099 seconds and 4 git commands to generate.