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