]> Git Repo - binutils.git/blob - gdb/gdbtypes.c
* xcofflink.c (xcoff_link_add_symbols): Handle csects in the
[binutils.git] / gdb / gdbtypes.c
1 /* Support routines for manipulating internal types for GDB.
2    Copyright (C) 1992, 1993, 1994, 1995 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 /* Set *LOWP and *HIGHP to the lower and upper bounds of discrete type TYPE.
340    Return 1 of type is a range type, 0 if it is discrete (and bounds
341    will fit in LONGEST), or -1 otherwise. */
342
343 int
344 get_discrete_bounds (type, lowp, highp)
345      struct type *type;
346      LONGEST *lowp, *highp;
347 {
348   switch (TYPE_CODE (type))
349     {
350     case TYPE_CODE_RANGE:
351       *lowp = TYPE_LOW_BOUND (type);
352       *highp = TYPE_HIGH_BOUND (type);
353       return 1;
354     case TYPE_CODE_ENUM:
355       *lowp = TYPE_FIELD_BITPOS (type, 0);
356       *highp = TYPE_FIELD_BITPOS (type, TYPE_NFIELDS (type) - 1);
357       return 0;
358     case TYPE_CODE_BOOL:
359       *lowp = 0;
360       *highp = 1;
361       return 0;
362     case TYPE_CODE_INT:
363       if (TYPE_LENGTH (type) >= sizeof (LONGEST))  /* Too big */
364         return -1;
365       if (!TYPE_UNSIGNED (type))
366         {
367           *lowp = - (1 << (TYPE_LENGTH (type) * TARGET_CHAR_BIT - 1));
368           *highp = -*lowp - 1;
369           return 0;
370         }
371       /* ... fall through for unsigned ints ... */
372     case TYPE_CODE_CHAR:
373       *lowp = 0;
374       *highp = 1 << (TYPE_LENGTH (type) * TARGET_CHAR_BIT) - 1;
375       return 0;
376     default:
377       return -1;
378     }
379 }
380
381 /* A lot of code assumes that the "index type" of an array/string/
382    set/bitstring is specifically a range type, though in some languages
383    it can be any discrete type. */
384
385 struct type *
386 force_to_range_type (type)
387      struct type *type;
388 {
389   switch (TYPE_CODE (type))
390     {
391     case TYPE_CODE_RANGE:
392       return type;
393
394     case TYPE_CODE_ENUM:
395     case TYPE_CODE_BOOL:
396     case TYPE_CODE_CHAR:
397       {
398         LONGEST low_bound, high_bound;
399         struct type *range_type;
400         get_discrete_bounds (type, &low_bound, &high_bound);
401         range_type = create_range_type (NULL, type, low_bound, high_bound);
402         TYPE_NAME (range_type) = TYPE_NAME (range_type);
403         TYPE_DUMMY_RANGE (range_type) = 1;
404         return range_type;
405       }
406     default:
407       {
408         static struct complaint msg =
409           { "array index type must be a discrete type", 0, 0};
410         complain (&msg);
411
412         return create_range_type (NULL, builtin_type_int, 0, 0);
413       }
414     }
415 }
416
417 /* Create an array type using either a blank type supplied in RESULT_TYPE,
418    or creating a new type, inheriting the objfile from RANGE_TYPE.
419
420    Elements will be of type ELEMENT_TYPE, the indices will be of type
421    RANGE_TYPE.
422
423    FIXME:  Maybe we should check the TYPE_CODE of RESULT_TYPE to make
424    sure it is TYPE_CODE_UNDEF before we bash it into an array type? */
425
426 struct type *
427 create_array_type (result_type, element_type, range_type)
428      struct type *result_type;
429      struct type *element_type;
430      struct type *range_type;
431 {
432   int low_bound;
433   int high_bound;
434
435   range_type = force_to_range_type (range_type);
436   if (result_type == NULL)
437     {
438       result_type = alloc_type (TYPE_OBJFILE (range_type));
439     }
440   TYPE_CODE (result_type) = TYPE_CODE_ARRAY;
441   TYPE_TARGET_TYPE (result_type) = element_type;
442   low_bound = TYPE_LOW_BOUND (range_type);
443   high_bound = TYPE_HIGH_BOUND (range_type);
444   TYPE_LENGTH (result_type) =
445     TYPE_LENGTH (element_type) * (high_bound - low_bound + 1);
446   TYPE_NFIELDS (result_type) = 1;
447   TYPE_FIELDS (result_type) =
448     (struct field *) TYPE_ALLOC (result_type, sizeof (struct field));
449   memset (TYPE_FIELDS (result_type), 0, sizeof (struct field));
450   TYPE_FIELD_TYPE (result_type, 0) = range_type;
451   TYPE_VPTR_FIELDNO (result_type) = -1;
452
453   return (result_type);
454 }
455
456 /* Create a string type using either a blank type supplied in RESULT_TYPE,
457    or creating a new type.  String types are similar enough to array of
458    char types that we can use create_array_type to build the basic type
459    and then bash it into a string type.
460
461    For fixed length strings, the range type contains 0 as the lower
462    bound and the length of the string minus one as the upper bound.
463
464    FIXME:  Maybe we should check the TYPE_CODE of RESULT_TYPE to make
465    sure it is TYPE_CODE_UNDEF before we bash it into a string type? */
466
467 struct type *
468 create_string_type (result_type, range_type)
469      struct type *result_type;
470      struct type *range_type;
471 {
472   result_type = create_array_type (result_type,
473                                    *current_language->string_char_type,
474                                    range_type);
475   TYPE_CODE (result_type) = TYPE_CODE_STRING;
476   return (result_type);
477 }
478
479 struct type *
480 create_set_type (result_type, domain_type)
481      struct type *result_type;
482      struct type *domain_type;
483 {
484   int low_bound, high_bound, bit_length;
485   if (result_type == NULL)
486     {
487       result_type = alloc_type (TYPE_OBJFILE (domain_type));
488     }
489   TYPE_CODE (result_type) = TYPE_CODE_SET;
490   TYPE_NFIELDS (result_type) = 1;
491   TYPE_FIELDS (result_type) = (struct field *)
492     TYPE_ALLOC (result_type, 1 * sizeof (struct field));
493   memset (TYPE_FIELDS (result_type), 0, sizeof (struct field));
494
495   if (! (TYPE_FLAGS (domain_type) & TYPE_FLAG_STUB))
496     {
497       domain_type = force_to_range_type (domain_type);
498       low_bound = TYPE_LOW_BOUND (domain_type);
499       high_bound = TYPE_HIGH_BOUND (domain_type);
500       bit_length = high_bound - low_bound + 1;
501       TYPE_LENGTH (result_type)
502         = (bit_length + TARGET_CHAR_BIT - 1) / TARGET_CHAR_BIT;
503     }
504   TYPE_FIELD_TYPE (result_type, 0) = domain_type;
505   return (result_type);
506 }
507
508 /* Smash TYPE to be a type of members of DOMAIN with type TO_TYPE. 
509    A MEMBER is a wierd thing -- it amounts to a typed offset into
510    a struct, e.g. "an int at offset 8".  A MEMBER TYPE doesn't
511    include the offset (that's the value of the MEMBER itself), but does
512    include the structure type into which it points (for some reason).
513
514    When "smashing" the type, we preserve the objfile that the
515    old type pointed to, since we aren't changing where the type is actually
516    allocated.  */
517
518 void
519 smash_to_member_type (type, domain, to_type)
520      struct type *type;
521      struct type *domain;
522      struct type *to_type;
523 {
524   struct objfile *objfile;
525
526   objfile = TYPE_OBJFILE (type);
527
528   memset ((char *) type, 0, sizeof (struct type));
529   TYPE_OBJFILE (type) = objfile;
530   TYPE_TARGET_TYPE (type) = to_type;
531   TYPE_DOMAIN_TYPE (type) = domain;
532   TYPE_LENGTH (type) = 1;       /* In practice, this is never needed.  */
533   TYPE_CODE (type) = TYPE_CODE_MEMBER;
534 }
535
536 /* Smash TYPE to be a type of method of DOMAIN with type TO_TYPE.
537    METHOD just means `function that gets an extra "this" argument'.
538
539    When "smashing" the type, we preserve the objfile that the
540    old type pointed to, since we aren't changing where the type is actually
541    allocated.  */
542
543 void
544 smash_to_method_type (type, domain, to_type, args)
545      struct type *type;
546      struct type *domain;
547      struct type *to_type;
548      struct type **args;
549 {
550   struct objfile *objfile;
551
552   objfile = TYPE_OBJFILE (type);
553
554   memset ((char *) type, 0, sizeof (struct type));
555   TYPE_OBJFILE (type) = objfile;
556   TYPE_TARGET_TYPE (type) = to_type;
557   TYPE_DOMAIN_TYPE (type) = domain;
558   TYPE_ARG_TYPES (type) = args;
559   TYPE_LENGTH (type) = 1;       /* In practice, this is never needed.  */
560   TYPE_CODE (type) = TYPE_CODE_METHOD;
561 }
562
563 /* Return a typename for a struct/union/enum type without "struct ",
564    "union ", or "enum ".  If the type has a NULL name, return NULL.  */
565
566 char *
567 type_name_no_tag (type)
568      register const struct type *type;
569 {
570   if (TYPE_TAG_NAME (type) != NULL)
571     return TYPE_TAG_NAME (type);
572
573   /* Is there code which expects this to return the name if there is no
574      tag name?  My guess is that this is mainly used for C++ in cases where
575      the two will always be the same.  */
576   return TYPE_NAME (type);
577 }
578
579 /* Lookup a primitive type named NAME. 
580    Return zero if NAME is not a primitive type.*/
581
582 struct type *
583 lookup_primitive_typename (name)
584      char *name;
585 {
586    struct type ** const *p;
587
588    for (p = current_language -> la_builtin_type_vector; *p != NULL; p++)
589      {
590        if (STREQ ((**p) -> name, name))
591          {
592            return (**p);
593          }
594      }
595    return (NULL); 
596 }
597
598 /* Lookup a typedef or primitive type named NAME,
599    visible in lexical block BLOCK.
600    If NOERR is nonzero, return zero if NAME is not suitably defined.  */
601
602 struct type *
603 lookup_typename (name, block, noerr)
604      char *name;
605      struct block *block;
606      int noerr;
607 {
608   register struct symbol *sym;
609   register struct type *tmp;
610
611   sym = lookup_symbol (name, block, VAR_NAMESPACE, 0, (struct symtab **) NULL);
612   if (sym == NULL || SYMBOL_CLASS (sym) != LOC_TYPEDEF)
613     {
614       tmp = lookup_primitive_typename (name);
615       if (tmp)
616         {
617           return (tmp);
618         }
619       else if (!tmp && noerr)
620         {
621           return (NULL);
622         }
623       else
624         {
625           error ("No type named %s.", name);
626         }
627     }
628   return (SYMBOL_TYPE (sym));
629 }
630
631 struct type *
632 lookup_unsigned_typename (name)
633      char *name;
634 {
635   char *uns = alloca (strlen (name) + 10);
636
637   strcpy (uns, "unsigned ");
638   strcpy (uns + 9, name);
639   return (lookup_typename (uns, (struct block *) NULL, 0));
640 }
641
642 struct type *
643 lookup_signed_typename (name)
644      char *name;
645 {
646   struct type *t;
647   char *uns = alloca (strlen (name) + 8);
648
649   strcpy (uns, "signed ");
650   strcpy (uns + 7, name);
651   t = lookup_typename (uns, (struct block *) NULL, 1);
652   /* If we don't find "signed FOO" just try again with plain "FOO". */
653   if (t != NULL)
654     return t;
655   return lookup_typename (name, (struct block *) NULL, 0);
656 }
657
658 /* Lookup a structure type named "struct NAME",
659    visible in lexical block BLOCK.  */
660
661 struct type *
662 lookup_struct (name, block)
663      char *name;
664      struct block *block;
665 {
666   register struct symbol *sym;
667
668   sym = lookup_symbol (name, block, STRUCT_NAMESPACE, 0,
669                        (struct symtab **) NULL);
670
671   if (sym == NULL)
672     {
673       error ("No struct type named %s.", name);
674     }
675   if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_STRUCT)
676     {
677       error ("This context has class, union or enum %s, not a struct.", name);
678     }
679   return (SYMBOL_TYPE (sym));
680 }
681
682 /* Lookup a union type named "union NAME",
683    visible in lexical block BLOCK.  */
684
685 struct type *
686 lookup_union (name, block)
687      char *name;
688      struct block *block;
689 {
690   register struct symbol *sym;
691
692   sym = lookup_symbol (name, block, STRUCT_NAMESPACE, 0,
693                        (struct symtab **) NULL);
694
695   if (sym == NULL)
696     {
697       error ("No union type named %s.", name);
698     }
699   if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_UNION)
700     {
701       error ("This context has class, struct or enum %s, not a union.", name);
702     }
703   return (SYMBOL_TYPE (sym));
704 }
705
706 /* Lookup an enum type named "enum NAME",
707    visible in lexical block BLOCK.  */
708
709 struct type *
710 lookup_enum (name, block)
711      char *name;
712      struct block *block;
713 {
714   register struct symbol *sym;
715
716   sym = lookup_symbol (name, block, STRUCT_NAMESPACE, 0, 
717                        (struct symtab **) NULL);
718   if (sym == NULL)
719     {
720       error ("No enum type named %s.", name);
721     }
722   if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_ENUM)
723     {
724       error ("This context has class, struct or union %s, not an enum.", name);
725     }
726   return (SYMBOL_TYPE (sym));
727 }
728
729 /* Lookup a template type named "template NAME<TYPE>",
730    visible in lexical block BLOCK.  */
731
732 struct type *
733 lookup_template_type (name, type, block)
734      char *name;
735      struct type *type;
736      struct block *block;
737 {
738   struct symbol *sym;
739   char *nam = (char*) alloca(strlen(name) + strlen(type->name) + 4);
740   strcpy (nam, name);
741   strcat (nam, "<");
742   strcat (nam, type->name);
743   strcat (nam, " >");   /* FIXME, extra space still introduced in gcc? */
744
745   sym = lookup_symbol (nam, block, VAR_NAMESPACE, 0, (struct symtab **)NULL);
746
747   if (sym == NULL)
748     {
749       error ("No template type named %s.", name);
750     }
751   if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_STRUCT)
752     {
753       error ("This context has class, union or enum %s, not a struct.", name);
754     }
755   return (SYMBOL_TYPE (sym));
756 }
757
758 /* Given a type TYPE, lookup the type of the component of type named NAME.  
759
760    TYPE can be either a struct or union, or a pointer or reference to a struct or
761    union.  If it is a pointer or reference, its target type is automatically used.
762    Thus '.' and '->' are interchangable, as specified for the definitions of the
763    expression element types STRUCTOP_STRUCT and STRUCTOP_PTR.
764
765    If NOERR is nonzero, return zero if NAME is not suitably defined.
766    If NAME is the name of a baseclass type, return that type.  */
767
768 struct type *
769 lookup_struct_elt_type (type, name, noerr)
770      struct type *type;
771      char *name;
772     int noerr;
773 {
774   int i;
775
776   while (TYPE_CODE (type) == TYPE_CODE_PTR ||
777       TYPE_CODE (type) == TYPE_CODE_REF)
778       type = TYPE_TARGET_TYPE (type);
779
780   if (TYPE_CODE (type) != TYPE_CODE_STRUCT &&
781       TYPE_CODE (type) != TYPE_CODE_UNION)
782     {
783       target_terminal_ours ();
784       gdb_flush (gdb_stdout);
785       fprintf_unfiltered (gdb_stderr, "Type ");
786       type_print (type, "", gdb_stderr, -1);
787       error (" is not a structure or union type.");
788     }
789
790   check_stub_type (type);
791
792 #if 0
793   /* FIXME:  This change put in by Michael seems incorrect for the case where
794      the structure tag name is the same as the member name.  I.E. when doing
795      "ptype bell->bar" for "struct foo { int bar; int foo; } bell;"
796      Disabled by fnf. */
797   {
798     char *typename;
799
800     typename = type_name_no_tag (type);
801     if (typename != NULL && STREQ (typename, name))
802       return type;
803   }
804 #endif
805
806   for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
807     {
808       char *t_field_name = TYPE_FIELD_NAME (type, i);
809
810       if (t_field_name && STREQ (t_field_name, name))
811         {
812           return TYPE_FIELD_TYPE (type, i);
813         }
814     }
815
816   /* OK, it's not in this class.  Recursively check the baseclasses.  */
817   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
818     {
819       struct type *t;
820
821       t = lookup_struct_elt_type (TYPE_BASECLASS (type, i), name, noerr);
822       if (t != NULL)
823         {
824           return t;
825         }
826     }
827
828   if (noerr)
829     {
830       return NULL;
831     }
832   
833   target_terminal_ours ();
834   gdb_flush (gdb_stdout);
835   fprintf_unfiltered (gdb_stderr, "Type ");
836   type_print (type, "", gdb_stderr, -1);
837   fprintf_unfiltered (gdb_stderr, " has no component named ");
838   fputs_filtered (name, gdb_stderr);
839   error (".");
840   return (struct type *)-1;     /* For lint */
841 }
842
843 /* If possible, make the vptr_fieldno and vptr_basetype fields of TYPE
844    valid.  Callers should be aware that in some cases (for example,
845    the type or one of its baseclasses is a stub type and we are
846    debugging a .o file), this function will not be able to find the virtual
847    function table pointer, and vptr_fieldno will remain -1 and vptr_basetype
848    will remain NULL.  */
849
850 void
851 fill_in_vptr_fieldno (type)
852      struct type *type;
853 {
854   check_stub_type (type);
855
856   if (TYPE_VPTR_FIELDNO (type) < 0)
857     {
858       int i;
859
860       /* We must start at zero in case the first (and only) baseclass is
861          virtual (and hence we cannot share the table pointer).  */
862       for (i = 0; i < TYPE_N_BASECLASSES (type); i++)
863         {
864           fill_in_vptr_fieldno (TYPE_BASECLASS (type, i));
865           if (TYPE_VPTR_FIELDNO (TYPE_BASECLASS (type, i)) >= 0)
866             {
867               TYPE_VPTR_FIELDNO (type)
868                 = TYPE_VPTR_FIELDNO (TYPE_BASECLASS (type, i));
869               TYPE_VPTR_BASETYPE (type)
870                 = TYPE_VPTR_BASETYPE (TYPE_BASECLASS (type, i));
871               break;
872             }
873         }
874     }
875 }
876
877 /* Added by Bryan Boreham, Kewill, Sun Sep 17 18:07:17 1989.
878
879    If this is a stubbed struct (i.e. declared as struct foo *), see if
880    we can find a full definition in some other file. If so, copy this
881    definition, so we can use it in future.  There used to be a comment (but
882    not any code) that if we don't find a full definition, we'd set a flag
883    so we don't spend time in the future checking the same type.  That would
884    be a mistake, though--we might load in more symbols which contain a
885    full definition for the type.
886
887    This used to be coded as a macro, but I don't think it is called 
888    often enough to merit such treatment.  */
889
890 struct complaint stub_noname_complaint =
891   {"stub type has NULL name", 0, 0};
892
893 void 
894 check_stub_type (type)
895      struct type *type;
896 {
897   if (TYPE_FLAGS(type) & TYPE_FLAG_STUB)
898     {
899       char* name = type_name_no_tag (type);
900       /* FIXME: shouldn't we separately check the TYPE_NAME and the
901          TYPE_TAG_NAME, and look in STRUCT_NAMESPACE and/or VAR_NAMESPACE
902          as appropriate?  (this code was written before TYPE_NAME and
903          TYPE_TAG_NAME were separate).  */
904       struct symbol *sym;
905       if (name == NULL)
906         {
907           complain (&stub_noname_complaint);
908           return;
909         }
910       sym = lookup_symbol (name, 0, STRUCT_NAMESPACE, 0, 
911                            (struct symtab **) NULL);
912       if (sym)
913         {
914           memcpy ((char *)type,
915                   (char *)SYMBOL_TYPE(sym),
916                   sizeof (struct type));
917         }
918     }
919
920   if (TYPE_FLAGS (type) & TYPE_FLAG_TARGET_STUB)
921     {
922       struct type *range_type;
923
924       check_stub_type (TYPE_TARGET_TYPE (type));
925       if (TYPE_FLAGS (TYPE_TARGET_TYPE (type)) & TYPE_FLAG_STUB)
926         { }
927       else if (TYPE_CODE (type) == TYPE_CODE_ARRAY
928                && TYPE_NFIELDS (type) == 1
929                && (TYPE_CODE (range_type = TYPE_FIELD_TYPE (type, 0))
930                    == TYPE_CODE_RANGE))
931         {
932           /* Now recompute the length of the array type, based on its
933              number of elements and the target type's length.  */
934           TYPE_LENGTH (type) =
935             ((TYPE_FIELD_BITPOS (range_type, 1)
936               - TYPE_FIELD_BITPOS (range_type, 0)
937               + 1)
938              * TYPE_LENGTH (TYPE_TARGET_TYPE (type)));
939           TYPE_FLAGS (type) &= ~TYPE_FLAG_TARGET_STUB;
940         }
941       else if (TYPE_CODE (type) == TYPE_CODE_RANGE)
942         {
943           TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
944           TYPE_FLAGS (type) &= ~TYPE_FLAG_TARGET_STUB;
945         }
946     }
947 }
948
949 /* Ugly hack to convert method stubs into method types.
950
951    He ain't kiddin'.  This demangles the name of the method into a string
952    including argument types, parses out each argument type, generates
953    a string casting a zero to that type, evaluates the string, and stuffs
954    the resulting type into an argtype vector!!!  Then it knows the type
955    of the whole function (including argument types for overloading),
956    which info used to be in the stab's but was removed to hack back
957    the space required for them.  */
958
959 void
960 check_stub_method (type, i, j)
961      struct type *type;
962      int i;
963      int j;
964 {
965   struct fn_field *f;
966   char *mangled_name = gdb_mangle_name (type, i, j);
967   char *demangled_name = cplus_demangle (mangled_name,
968                                          DMGL_PARAMS | DMGL_ANSI);
969   char *argtypetext, *p;
970   int depth = 0, argcount = 1;
971   struct type **argtypes;
972   struct type *mtype;
973
974   if (demangled_name == NULL)
975     {
976       error ("Internal: Cannot demangle mangled name `%s'.", mangled_name);
977     }
978
979   /* Now, read in the parameters that define this type.  */
980   argtypetext = strchr (demangled_name, '(') + 1;
981   p = argtypetext;
982   while (*p)
983     {
984       if (*p == '(')
985         {
986           depth += 1;
987         }
988       else if (*p == ')')
989         {
990           depth -= 1;
991         }
992       else if (*p == ',' && depth == 0)
993         {
994           argcount += 1;
995         }
996
997       p += 1;
998     }
999
1000   /* We need two more slots: one for the THIS pointer, and one for the
1001      NULL [...] or void [end of arglist].  */
1002
1003   argtypes = (struct type **)
1004     TYPE_ALLOC (type, (argcount + 2) * sizeof (struct type *));
1005   p = argtypetext;
1006   /* FIXME: This is wrong for static member functions.  */
1007   argtypes[0] = lookup_pointer_type (type);
1008   argcount = 1;
1009
1010   if (*p != ')')                        /* () means no args, skip while */
1011     {
1012       depth = 0;
1013       while (*p)
1014         {
1015           if (depth <= 0 && (*p == ',' || *p == ')'))
1016             {
1017               /* Avoid parsing of ellipsis, they will be handled below.  */
1018               if (strncmp (argtypetext, "...", p - argtypetext) != 0)
1019                 {
1020                   argtypes[argcount] =
1021                       parse_and_eval_type (argtypetext, p - argtypetext);
1022                   argcount += 1;
1023                 }
1024               argtypetext = p + 1;
1025             }
1026
1027           if (*p == '(')
1028             {
1029               depth += 1;
1030             }
1031           else if (*p == ')')
1032             {
1033               depth -= 1;
1034             }
1035
1036           p += 1;
1037         }
1038     }
1039
1040   if (p[-2] != '.')                     /* Not '...' */
1041     {
1042       argtypes[argcount] = builtin_type_void;   /* List terminator */
1043     }
1044   else
1045     {
1046       argtypes[argcount] = NULL;                /* Ellist terminator */
1047     }
1048
1049   free (demangled_name);
1050
1051   f = TYPE_FN_FIELDLIST1 (type, i);
1052   TYPE_FN_FIELD_PHYSNAME (f, j) = mangled_name;
1053
1054   /* Now update the old "stub" type into a real type.  */
1055   mtype = TYPE_FN_FIELD_TYPE (f, j);
1056   TYPE_DOMAIN_TYPE (mtype) = type;
1057   TYPE_ARG_TYPES (mtype) = argtypes;
1058   TYPE_FLAGS (mtype) &= ~TYPE_FLAG_STUB;
1059   TYPE_FN_FIELD_STUB (f, j) = 0;
1060 }
1061
1062 const struct cplus_struct_type cplus_struct_default;
1063
1064 void
1065 allocate_cplus_struct_type (type)
1066      struct type *type;
1067 {
1068   if (!HAVE_CPLUS_STRUCT (type))
1069     {
1070       TYPE_CPLUS_SPECIFIC (type) = (struct cplus_struct_type *)
1071         TYPE_ALLOC (type, sizeof (struct cplus_struct_type));
1072       *(TYPE_CPLUS_SPECIFIC(type)) = cplus_struct_default;
1073     }
1074 }
1075
1076 /* Helper function to initialize the standard scalar types.
1077
1078    If NAME is non-NULL and OBJFILE is non-NULL, then we make a copy
1079    of the string pointed to by name in the type_obstack for that objfile,
1080    and initialize the type name to that copy.  There are places (mipsread.c
1081    in particular, where init_type is called with a NULL value for NAME). */
1082
1083 struct type *
1084 init_type (code, length, flags, name, objfile)
1085      enum type_code code;
1086      int length;
1087      int flags;
1088      char *name;
1089      struct objfile *objfile;
1090 {
1091   register struct type *type;
1092
1093   type = alloc_type (objfile);
1094   TYPE_CODE (type) = code;
1095   TYPE_LENGTH (type) = length;
1096   TYPE_FLAGS (type) |= flags;
1097   if ((name != NULL) && (objfile != NULL))
1098     {
1099       TYPE_NAME (type) =
1100         obsavestring (name, strlen (name), &objfile -> type_obstack);
1101     }
1102   else
1103     {
1104       TYPE_NAME (type) = name;
1105     }
1106
1107   /* C++ fancies.  */
1108
1109   if (code == TYPE_CODE_STRUCT || code == TYPE_CODE_UNION)
1110     {
1111       INIT_CPLUS_SPECIFIC (type);
1112     }
1113   return (type);
1114 }
1115
1116 /* Look up a fundamental type for the specified objfile.
1117    May need to construct such a type if this is the first use.
1118
1119    Some object file formats (ELF, COFF, etc) do not define fundamental
1120    types such as "int" or "double".  Others (stabs for example), do
1121    define fundamental types.
1122
1123    For the formats which don't provide fundamental types, gdb can create
1124    such types, using defaults reasonable for the current language and
1125    the current target machine.
1126
1127    NOTE:  This routine is obsolescent.  Each debugging format reader
1128    should manage it's own fundamental types, either creating them from
1129    suitable defaults or reading them from the debugging information,
1130    whichever is appropriate.  The DWARF reader has already been
1131    fixed to do this.  Once the other readers are fixed, this routine
1132    will go away.  Also note that fundamental types should be managed
1133    on a compilation unit basis in a multi-language environment, not
1134    on a linkage unit basis as is done here. */
1135
1136
1137 struct type *
1138 lookup_fundamental_type (objfile, typeid)
1139      struct objfile *objfile;
1140      int typeid;
1141 {
1142   register struct type **typep;
1143   register int nbytes;
1144
1145   if (typeid < 0 || typeid >= FT_NUM_MEMBERS)
1146     {
1147       error ("internal error - invalid fundamental type id %d", typeid);
1148     }
1149
1150   /* If this is the first time we need a fundamental type for this objfile
1151      then we need to initialize the vector of type pointers. */
1152   
1153   if (objfile -> fundamental_types == NULL)
1154     {
1155       nbytes = FT_NUM_MEMBERS * sizeof (struct type *);
1156       objfile -> fundamental_types = (struct type **)
1157         obstack_alloc (&objfile -> type_obstack, nbytes);
1158       memset ((char *) objfile -> fundamental_types, 0, nbytes);
1159     }
1160
1161   /* Look for this particular type in the fundamental type vector.  If one is
1162      not found, create and install one appropriate for the current language. */
1163
1164   typep = objfile -> fundamental_types + typeid;
1165   if (*typep == NULL)
1166     {
1167       *typep = create_fundamental_type (objfile, typeid);
1168     }
1169
1170   return (*typep);
1171 }
1172
1173 int
1174 can_dereference (t)
1175      struct type *t;
1176 {
1177   /* FIXME: Should we return true for references as well as pointers?  */
1178   return
1179     (t != NULL
1180      && TYPE_CODE (t) == TYPE_CODE_PTR
1181      && TYPE_CODE (TYPE_TARGET_TYPE (t)) != TYPE_CODE_VOID);
1182 }
1183
1184 /* Chill varying string and arrays are represented as follows:
1185
1186    struct { int __var_length; ELEMENT_TYPE[MAX_SIZE] __var_data};
1187
1188    Return true if TYPE is such a Chill varying type. */
1189
1190 int
1191 chill_varying_type (type)
1192      struct type *type;
1193 {
1194   if (TYPE_CODE (type) != TYPE_CODE_STRUCT
1195       || TYPE_NFIELDS (type) != 2
1196       || strcmp (TYPE_FIELD_NAME (type, 0), "__var_length") != 0)
1197     return 0;
1198   return 1;
1199 }
1200
1201 #if MAINTENANCE_CMDS
1202
1203 static void
1204 print_bit_vector (bits, nbits)
1205      B_TYPE *bits;
1206      int nbits;
1207 {
1208   int bitno;
1209
1210   for (bitno = 0; bitno < nbits; bitno++)
1211     {
1212       if ((bitno % 8) == 0)
1213         {
1214           puts_filtered (" ");
1215         }
1216       if (B_TST (bits, bitno))
1217         {
1218           printf_filtered ("1");
1219         }
1220       else
1221         {
1222           printf_filtered ("0");
1223         }
1224     }
1225 }
1226
1227 /* The args list is a strange beast.  It is either terminated by a NULL
1228    pointer for varargs functions, or by a pointer to a TYPE_CODE_VOID
1229    type for normal fixed argcount functions.  (FIXME someday)
1230    Also note the first arg should be the "this" pointer, we may not want to
1231    include it since we may get into a infinitely recursive situation. */
1232
1233 static void
1234 print_arg_types (args, spaces)
1235      struct type **args;
1236      int spaces;
1237 {
1238   if (args != NULL)
1239     {
1240       while (*args != NULL)
1241         {
1242           recursive_dump_type (*args, spaces + 2);
1243           if ((*args++) -> code == TYPE_CODE_VOID)
1244             {
1245               break;
1246             }
1247         }
1248     }
1249 }
1250
1251 static void
1252 dump_fn_fieldlists (type, spaces)
1253      struct type *type;
1254      int spaces;
1255 {
1256   int method_idx;
1257   int overload_idx;
1258   struct fn_field *f;
1259
1260   printfi_filtered (spaces, "fn_fieldlists ");
1261   gdb_print_address (TYPE_FN_FIELDLISTS (type), gdb_stdout);
1262   printf_filtered ("\n");
1263   for (method_idx = 0; method_idx < TYPE_NFN_FIELDS (type); method_idx++)
1264     {
1265       f = TYPE_FN_FIELDLIST1 (type, method_idx);
1266       printfi_filtered (spaces + 2, "[%d] name '%s' (",
1267                         method_idx,
1268                         TYPE_FN_FIELDLIST_NAME (type, method_idx));
1269       gdb_print_address (TYPE_FN_FIELDLIST_NAME (type, method_idx),
1270                          gdb_stdout);
1271       printf_filtered (") length %d\n",
1272                        TYPE_FN_FIELDLIST_LENGTH (type, method_idx));
1273       for (overload_idx = 0;
1274            overload_idx < TYPE_FN_FIELDLIST_LENGTH (type, method_idx);
1275            overload_idx++)
1276         {
1277           printfi_filtered (spaces + 4, "[%d] physname '%s' (",
1278                             overload_idx,
1279                             TYPE_FN_FIELD_PHYSNAME (f, overload_idx));
1280           gdb_print_address (TYPE_FN_FIELD_PHYSNAME (f, overload_idx),
1281                              gdb_stdout);
1282           printf_filtered (")\n");
1283           printfi_filtered (spaces + 8, "type ");
1284           gdb_print_address (TYPE_FN_FIELD_TYPE (f, overload_idx), gdb_stdout);
1285           printf_filtered ("\n");
1286
1287           recursive_dump_type (TYPE_FN_FIELD_TYPE (f, overload_idx),
1288                                spaces + 8 + 2);
1289
1290           printfi_filtered (spaces + 8, "args ");
1291           gdb_print_address (TYPE_FN_FIELD_ARGS (f, overload_idx), gdb_stdout);
1292           printf_filtered ("\n");
1293
1294           print_arg_types (TYPE_FN_FIELD_ARGS (f, overload_idx), spaces);
1295           printfi_filtered (spaces + 8, "fcontext ");
1296           gdb_print_address (TYPE_FN_FIELD_FCONTEXT (f, overload_idx),
1297                              gdb_stdout);
1298           printf_filtered ("\n");
1299
1300           printfi_filtered (spaces + 8, "is_const %d\n",
1301                             TYPE_FN_FIELD_CONST (f, overload_idx));
1302           printfi_filtered (spaces + 8, "is_volatile %d\n",
1303                             TYPE_FN_FIELD_VOLATILE (f, overload_idx));
1304           printfi_filtered (spaces + 8, "is_private %d\n",
1305                             TYPE_FN_FIELD_PRIVATE (f, overload_idx));
1306           printfi_filtered (spaces + 8, "is_protected %d\n",
1307                             TYPE_FN_FIELD_PROTECTED (f, overload_idx));
1308           printfi_filtered (spaces + 8, "is_stub %d\n",
1309                             TYPE_FN_FIELD_STUB (f, overload_idx));
1310           printfi_filtered (spaces + 8, "voffset %u\n",
1311                             TYPE_FN_FIELD_VOFFSET (f, overload_idx));
1312         }
1313     }
1314 }
1315
1316 static void
1317 print_cplus_stuff (type, spaces)
1318      struct type *type;
1319      int spaces;
1320 {
1321   printfi_filtered (spaces, "n_baseclasses %d\n",
1322                     TYPE_N_BASECLASSES (type));
1323   printfi_filtered (spaces, "nfn_fields %d\n",
1324                     TYPE_NFN_FIELDS (type));
1325   printfi_filtered (spaces, "nfn_fields_total %d\n",
1326                     TYPE_NFN_FIELDS_TOTAL (type));
1327   if (TYPE_N_BASECLASSES (type) > 0)
1328     {
1329       printfi_filtered (spaces, "virtual_field_bits (%d bits at *",
1330                         TYPE_N_BASECLASSES (type));
1331       gdb_print_address (TYPE_FIELD_VIRTUAL_BITS (type), gdb_stdout);
1332       printf_filtered (")");
1333
1334       print_bit_vector (TYPE_FIELD_VIRTUAL_BITS (type),
1335                         TYPE_N_BASECLASSES (type));
1336       puts_filtered ("\n");
1337     }
1338   if (TYPE_NFIELDS (type) > 0)
1339     {
1340       if (TYPE_FIELD_PRIVATE_BITS (type) != NULL)
1341         {
1342           printfi_filtered (spaces, "private_field_bits (%d bits at *",
1343                             TYPE_NFIELDS (type));
1344           gdb_print_address (TYPE_FIELD_PRIVATE_BITS (type), gdb_stdout);
1345           printf_filtered (")");
1346           print_bit_vector (TYPE_FIELD_PRIVATE_BITS (type),
1347                             TYPE_NFIELDS (type));
1348           puts_filtered ("\n");
1349         }
1350       if (TYPE_FIELD_PROTECTED_BITS (type) != NULL)
1351         {
1352           printfi_filtered (spaces, "protected_field_bits (%d bits at *",
1353                             TYPE_NFIELDS (type));
1354           gdb_print_address (TYPE_FIELD_PROTECTED_BITS (type), gdb_stdout);
1355           printf_filtered (")");
1356           print_bit_vector (TYPE_FIELD_PROTECTED_BITS (type),
1357                             TYPE_NFIELDS (type));
1358           puts_filtered ("\n");
1359         }
1360     }
1361   if (TYPE_NFN_FIELDS (type) > 0)
1362     {
1363       dump_fn_fieldlists (type, spaces);
1364     }
1365 }
1366
1367 static struct obstack dont_print_type_obstack;
1368
1369 void
1370 recursive_dump_type (type, spaces)
1371      struct type *type;
1372      int spaces;
1373 {
1374   int idx;
1375
1376   if (spaces == 0)
1377     obstack_begin (&dont_print_type_obstack, 0);
1378
1379   if (TYPE_NFIELDS (type) > 0
1380       || (TYPE_CPLUS_SPECIFIC (type) && TYPE_NFN_FIELDS (type) > 0))
1381     {
1382       struct type **first_dont_print
1383         = (struct type **)obstack_base (&dont_print_type_obstack);
1384
1385       int i = (struct type **)obstack_next_free (&dont_print_type_obstack)
1386         - first_dont_print;
1387
1388       while (--i >= 0)
1389         {
1390           if (type == first_dont_print[i])
1391             {
1392               printfi_filtered (spaces, "type node ");
1393               gdb_print_address (type, gdb_stdout);
1394               printf_filtered (" <same as already seen type>\n");
1395               return;
1396             }
1397         }
1398
1399       obstack_ptr_grow (&dont_print_type_obstack, type);
1400     }
1401
1402   printfi_filtered (spaces, "type node ");
1403   gdb_print_address (type, gdb_stdout);
1404   printf_filtered ("\n");
1405   printfi_filtered (spaces, "name '%s' (",
1406                     TYPE_NAME (type) ? TYPE_NAME (type) : "<NULL>");
1407   gdb_print_address (TYPE_NAME (type), gdb_stdout);
1408   printf_filtered (")\n");
1409   if (TYPE_TAG_NAME (type) != NULL)
1410     {
1411       printfi_filtered (spaces, "tagname '%s' (",
1412                         TYPE_TAG_NAME (type));
1413       gdb_print_address (TYPE_TAG_NAME (type), gdb_stdout);
1414       printf_filtered (")\n");
1415     }
1416   printfi_filtered (spaces, "code 0x%x ", TYPE_CODE (type));
1417   switch (TYPE_CODE (type))
1418     {
1419       case TYPE_CODE_UNDEF:
1420         printf_filtered ("(TYPE_CODE_UNDEF)");
1421         break;
1422       case TYPE_CODE_PTR:
1423         printf_filtered ("(TYPE_CODE_PTR)");
1424         break;
1425       case TYPE_CODE_ARRAY:
1426         printf_filtered ("(TYPE_CODE_ARRAY)");
1427         break;
1428       case TYPE_CODE_STRUCT:
1429         printf_filtered ("(TYPE_CODE_STRUCT)");
1430         break;
1431       case TYPE_CODE_UNION:
1432         printf_filtered ("(TYPE_CODE_UNION)");
1433         break;
1434       case TYPE_CODE_ENUM:
1435         printf_filtered ("(TYPE_CODE_ENUM)");
1436         break;
1437       case TYPE_CODE_FUNC:
1438         printf_filtered ("(TYPE_CODE_FUNC)");
1439         break;
1440       case TYPE_CODE_INT:
1441         printf_filtered ("(TYPE_CODE_INT)");
1442         break;
1443       case TYPE_CODE_FLT:
1444         printf_filtered ("(TYPE_CODE_FLT)");
1445         break;
1446       case TYPE_CODE_VOID:
1447         printf_filtered ("(TYPE_CODE_VOID)");
1448         break;
1449       case TYPE_CODE_SET:
1450         printf_filtered ("(TYPE_CODE_SET)");
1451         break;
1452       case TYPE_CODE_RANGE:
1453         printf_filtered ("(TYPE_CODE_RANGE)");
1454         break;
1455       case TYPE_CODE_STRING:
1456         printf_filtered ("(TYPE_CODE_STRING)");
1457         break;
1458       case TYPE_CODE_ERROR:
1459         printf_filtered ("(TYPE_CODE_ERROR)");
1460         break;
1461       case TYPE_CODE_MEMBER:
1462         printf_filtered ("(TYPE_CODE_MEMBER)");
1463         break;
1464       case TYPE_CODE_METHOD:
1465         printf_filtered ("(TYPE_CODE_METHOD)");
1466         break;
1467       case TYPE_CODE_REF:
1468         printf_filtered ("(TYPE_CODE_REF)");
1469         break;
1470       case TYPE_CODE_CHAR:
1471         printf_filtered ("(TYPE_CODE_CHAR)");
1472         break;
1473       case TYPE_CODE_BOOL:
1474         printf_filtered ("(TYPE_CODE_BOOL)");
1475         break;
1476       default:
1477         printf_filtered ("(UNKNOWN TYPE CODE)");
1478         break;
1479     }
1480   puts_filtered ("\n");
1481   printfi_filtered (spaces, "length %d\n", TYPE_LENGTH (type));
1482   printfi_filtered (spaces, "objfile ");
1483   gdb_print_address (TYPE_OBJFILE (type), gdb_stdout);
1484   printf_filtered ("\n");
1485   printfi_filtered (spaces, "target_type ");
1486   gdb_print_address (TYPE_TARGET_TYPE (type), gdb_stdout);
1487   printf_filtered ("\n");
1488   if (TYPE_TARGET_TYPE (type) != NULL)
1489     {
1490       recursive_dump_type (TYPE_TARGET_TYPE (type), spaces + 2);
1491     }
1492   printfi_filtered (spaces, "pointer_type ");
1493   gdb_print_address (TYPE_POINTER_TYPE (type), gdb_stdout);
1494   printf_filtered ("\n");
1495   printfi_filtered (spaces, "reference_type ");
1496   gdb_print_address (TYPE_REFERENCE_TYPE (type), gdb_stdout);
1497   printf_filtered ("\n");
1498   printfi_filtered (spaces, "flags 0x%x", TYPE_FLAGS (type));
1499   if (TYPE_FLAGS (type) & TYPE_FLAG_UNSIGNED)
1500     {
1501       puts_filtered (" TYPE_FLAG_UNSIGNED");
1502     }
1503   if (TYPE_FLAGS (type) & TYPE_FLAG_STUB)
1504     {
1505       puts_filtered (" TYPE_FLAG_STUB");
1506     }
1507   puts_filtered ("\n");
1508   printfi_filtered (spaces, "nfields %d ", TYPE_NFIELDS (type));
1509   gdb_print_address (TYPE_FIELDS (type), gdb_stdout);
1510   puts_filtered ("\n");
1511   for (idx = 0; idx < TYPE_NFIELDS (type); idx++)
1512     {
1513       printfi_filtered (spaces + 2,
1514                         "[%d] bitpos %d bitsize %d type ",
1515                         idx, TYPE_FIELD_BITPOS (type, idx),
1516                         TYPE_FIELD_BITSIZE (type, idx));
1517       gdb_print_address (TYPE_FIELD_TYPE (type, idx), gdb_stdout);
1518       printf_filtered (" name '%s' (",
1519                        TYPE_FIELD_NAME (type, idx) != NULL
1520                        ? TYPE_FIELD_NAME (type, idx)
1521                        : "<NULL>");
1522       gdb_print_address (TYPE_FIELD_NAME (type, idx), gdb_stdout);
1523       printf_filtered (")\n");
1524       if (TYPE_FIELD_TYPE (type, idx) != NULL)
1525         {
1526           recursive_dump_type (TYPE_FIELD_TYPE (type, idx), spaces + 4);
1527         }
1528     }
1529   printfi_filtered (spaces, "vptr_basetype ");
1530   gdb_print_address (TYPE_VPTR_BASETYPE (type), gdb_stdout);
1531   puts_filtered ("\n");
1532   if (TYPE_VPTR_BASETYPE (type) != NULL)
1533     {
1534       recursive_dump_type (TYPE_VPTR_BASETYPE (type), spaces + 2);
1535     }
1536   printfi_filtered (spaces, "vptr_fieldno %d\n", TYPE_VPTR_FIELDNO (type));
1537   switch (TYPE_CODE (type))
1538     {
1539       case TYPE_CODE_METHOD:
1540       case TYPE_CODE_FUNC:
1541         printfi_filtered (spaces, "arg_types ");
1542         gdb_print_address (TYPE_ARG_TYPES (type), gdb_stdout);
1543         puts_filtered ("\n");
1544         print_arg_types (TYPE_ARG_TYPES (type), spaces);
1545         break;
1546
1547       case TYPE_CODE_STRUCT:
1548         printfi_filtered (spaces, "cplus_stuff ");
1549         gdb_print_address (TYPE_CPLUS_SPECIFIC (type), gdb_stdout);
1550         puts_filtered ("\n");
1551         print_cplus_stuff (type, spaces);
1552         break;
1553
1554       default:
1555         /* We have to pick one of the union types to be able print and test
1556            the value.  Pick cplus_struct_type, even though we know it isn't
1557            any particular one. */
1558         printfi_filtered (spaces, "type_specific ");
1559         gdb_print_address (TYPE_CPLUS_SPECIFIC (type), gdb_stdout);
1560         if (TYPE_CPLUS_SPECIFIC (type) != NULL)
1561           {
1562             printf_filtered (" (unknown data form)");
1563           }
1564         printf_filtered ("\n");
1565         break;
1566
1567     }
1568   if (spaces == 0)
1569     obstack_free (&dont_print_type_obstack, NULL);
1570 }
1571
1572 #endif  /* MAINTENANCE_CMDS */
1573
1574 void
1575 _initialize_gdbtypes ()
1576 {
1577   builtin_type_void =
1578     init_type (TYPE_CODE_VOID, 1,
1579                0,
1580                "void", (struct objfile *) NULL);
1581   builtin_type_char =
1582     init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
1583                0,
1584                "char", (struct objfile *) NULL);
1585   builtin_type_signed_char =
1586     init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
1587                0,
1588                "signed char", (struct objfile *) NULL);
1589   builtin_type_unsigned_char =
1590     init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
1591                TYPE_FLAG_UNSIGNED,
1592                "unsigned char", (struct objfile *) NULL);
1593   builtin_type_short =
1594     init_type (TYPE_CODE_INT, TARGET_SHORT_BIT / TARGET_CHAR_BIT,
1595                0,
1596                "short", (struct objfile *) NULL);
1597   builtin_type_unsigned_short =
1598     init_type (TYPE_CODE_INT, TARGET_SHORT_BIT / TARGET_CHAR_BIT,
1599                TYPE_FLAG_UNSIGNED,
1600                "unsigned short", (struct objfile *) NULL);
1601   builtin_type_int =
1602     init_type (TYPE_CODE_INT, TARGET_INT_BIT / TARGET_CHAR_BIT,
1603                0,
1604                "int", (struct objfile *) NULL);
1605   builtin_type_unsigned_int =
1606     init_type (TYPE_CODE_INT, TARGET_INT_BIT / TARGET_CHAR_BIT,
1607                TYPE_FLAG_UNSIGNED,
1608                "unsigned int", (struct objfile *) NULL);
1609   builtin_type_long =
1610     init_type (TYPE_CODE_INT, TARGET_LONG_BIT / TARGET_CHAR_BIT,
1611                0,
1612                "long", (struct objfile *) NULL);
1613   builtin_type_unsigned_long =
1614     init_type (TYPE_CODE_INT, TARGET_LONG_BIT / TARGET_CHAR_BIT,
1615                TYPE_FLAG_UNSIGNED,
1616                "unsigned long", (struct objfile *) NULL);
1617   builtin_type_long_long =
1618     init_type (TYPE_CODE_INT, TARGET_LONG_LONG_BIT / TARGET_CHAR_BIT,
1619                0,
1620                "long long", (struct objfile *) NULL);
1621   builtin_type_unsigned_long_long = 
1622     init_type (TYPE_CODE_INT, TARGET_LONG_LONG_BIT / TARGET_CHAR_BIT,
1623                TYPE_FLAG_UNSIGNED,
1624                "unsigned long long", (struct objfile *) NULL);
1625   builtin_type_float =
1626     init_type (TYPE_CODE_FLT, TARGET_FLOAT_BIT / TARGET_CHAR_BIT,
1627                0,
1628                "float", (struct objfile *) NULL);
1629   builtin_type_double =
1630     init_type (TYPE_CODE_FLT, TARGET_DOUBLE_BIT / TARGET_CHAR_BIT,
1631                0,
1632                "double", (struct objfile *) NULL);
1633   builtin_type_long_double =
1634     init_type (TYPE_CODE_FLT, TARGET_LONG_DOUBLE_BIT / TARGET_CHAR_BIT,
1635                0,
1636                "long double", (struct objfile *) NULL);
1637   builtin_type_complex =
1638     init_type (TYPE_CODE_COMPLEX, 2 * TARGET_FLOAT_BIT / TARGET_CHAR_BIT,
1639                0,
1640                "complex", (struct objfile *) NULL);
1641   TYPE_TARGET_TYPE (builtin_type_complex) = builtin_type_float;
1642   builtin_type_double_complex =
1643     init_type (TYPE_CODE_COMPLEX, 2 * TARGET_DOUBLE_BIT / TARGET_CHAR_BIT,
1644                0,
1645                "double complex", (struct objfile *) NULL);
1646   TYPE_TARGET_TYPE (builtin_type_double_complex) = builtin_type_double;
1647   builtin_type_string =
1648     init_type (TYPE_CODE_STRING, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
1649                0,
1650                "string", (struct objfile *) NULL);
1651 }
This page took 0.117744 seconds and 4 git commands to generate.