* convex-xdep.c, hppab-nat.c, i860-tdep.c, infptrace.c: Remove
[binutils-gdb.git] / gdb / gdbtypes.c
1 /* Support routines for manipulating internal types for GDB.
2 Copyright (C) 1992 Free Software Foundation, Inc.
3 Contributed by Cygnus Support, using pieces from other GDB modules.
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
20
21 #include "defs.h"
22 #include <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
34 /* Alloc a new type structure and fill it with some defaults. If
35 OBJFILE is non-NULL, then allocate the space for the type structure
36 in that objfile's type_obstack. */
37
38 struct type *
39 alloc_type (objfile)
40 struct objfile *objfile;
41 {
42 register struct type *type;
43
44 /* Alloc the structure and start off with all fields zeroed. */
45
46 if (objfile == NULL)
47 {
48 type = (struct type *) xmalloc (sizeof (struct type));
49 }
50 else
51 {
52 type = (struct type *) obstack_alloc (&objfile -> type_obstack,
53 sizeof (struct type));
54 }
55 memset ((char *) type, 0, sizeof (struct type));
56
57 /* Initialize the fields that might not be zero. */
58
59 TYPE_CODE (type) = TYPE_CODE_UNDEF;
60 TYPE_OBJFILE (type) = objfile;
61 TYPE_VPTR_FIELDNO (type) = -1;
62
63 return (type);
64 }
65
66 /* Lookup a pointer to a type TYPE. TYPEPTR, if nonzero, points
67 to a pointer to memory where the pointer type should be stored.
68 If *TYPEPTR is zero, update it to point to the pointer type we return.
69 We allocate new memory if needed. */
70
71 struct type *
72 make_pointer_type (type, typeptr)
73 struct type *type;
74 struct type **typeptr;
75 {
76 register struct type *ntype; /* New type */
77 struct objfile *objfile;
78
79 ntype = TYPE_POINTER_TYPE (type);
80
81 if (ntype)
82 if (typeptr == 0)
83 return ntype; /* Don't care about alloc, and have new type. */
84 else if (*typeptr == 0)
85 {
86 *typeptr = ntype; /* Tracking alloc, and we have new type. */
87 return ntype;
88 }
89
90 if (typeptr == 0 || *typeptr == 0) /* We'll need to allocate one. */
91 {
92 ntype = alloc_type (TYPE_OBJFILE (type));
93 if (typeptr)
94 *typeptr = ntype;
95 }
96 else /* We have storage, but need to reset it. */
97 {
98 ntype = *typeptr;
99 objfile = TYPE_OBJFILE (ntype);
100 memset ((char *) ntype, 0, sizeof (struct type));
101 TYPE_OBJFILE (ntype) = objfile;
102 }
103
104 TYPE_TARGET_TYPE (ntype) = type;
105 TYPE_POINTER_TYPE (type) = ntype;
106
107 /* FIXME! Assume the machine has only one representation for pointers! */
108
109 TYPE_LENGTH (ntype) = TARGET_PTR_BIT / TARGET_CHAR_BIT;
110 TYPE_CODE (ntype) = TYPE_CODE_PTR;
111
112 /* pointers are unsigned */
113 TYPE_FLAGS (ntype) |= TYPE_FLAG_UNSIGNED;
114
115 if (!TYPE_POINTER_TYPE (type)) /* Remember it, if don't have one. */
116 TYPE_POINTER_TYPE (type) = ntype;
117
118 return ntype;
119 }
120
121 /* Given a type TYPE, return a type of pointers to that type.
122 May need to construct such a type if this is the first use. */
123
124 struct type *
125 lookup_pointer_type (type)
126 struct type *type;
127 {
128 return make_pointer_type (type, (struct type **)0);
129 }
130
131 /* Lookup a C++ `reference' to a type TYPE. TYPEPTR, if nonzero, points
132 to a pointer to memory where the reference type should be stored.
133 If *TYPEPTR is zero, update it to point to the reference type we return.
134 We allocate new memory if needed. */
135
136 struct type *
137 make_reference_type (type, typeptr)
138 struct type *type;
139 struct type **typeptr;
140 {
141 register struct type *ntype; /* New type */
142 struct objfile *objfile;
143
144 ntype = TYPE_REFERENCE_TYPE (type);
145
146 if (ntype)
147 if (typeptr == 0)
148 return ntype; /* Don't care about alloc, and have new type. */
149 else if (*typeptr == 0)
150 {
151 *typeptr = ntype; /* Tracking alloc, and we have new type. */
152 return ntype;
153 }
154
155 if (typeptr == 0 || *typeptr == 0) /* We'll need to allocate one. */
156 {
157 ntype = alloc_type (TYPE_OBJFILE (type));
158 if (typeptr)
159 *typeptr = ntype;
160 }
161 else /* We have storage, but need to reset it. */
162 {
163 ntype = *typeptr;
164 objfile = TYPE_OBJFILE (ntype);
165 memset ((char *) ntype, 0, sizeof (struct type));
166 TYPE_OBJFILE (ntype) = objfile;
167 }
168
169 TYPE_TARGET_TYPE (ntype) = type;
170 TYPE_REFERENCE_TYPE (type) = ntype;
171
172 /* FIXME! Assume the machine has only one representation for references,
173 and that it matches the (only) representation for pointers! */
174
175 TYPE_LENGTH (ntype) = TARGET_PTR_BIT / TARGET_CHAR_BIT;
176 TYPE_CODE (ntype) = TYPE_CODE_REF;
177
178 if (!TYPE_REFERENCE_TYPE (type)) /* Remember it, if don't have one. */
179 TYPE_REFERENCE_TYPE (type) = ntype;
180
181 return ntype;
182 }
183
184 /* Same as above, but caller doesn't care about memory allocation details. */
185
186 struct type *
187 lookup_reference_type (type)
188 struct type *type;
189 {
190 return make_reference_type (type, (struct type **)0);
191 }
192
193 /* Lookup a function type that returns type TYPE. TYPEPTR, if nonzero, points
194 to a pointer to memory where the function type should be stored.
195 If *TYPEPTR is zero, update it to point to the function type we return.
196 We allocate new memory if needed. */
197
198 struct type *
199 make_function_type (type, typeptr)
200 struct type *type;
201 struct type **typeptr;
202 {
203 register struct type *ntype; /* New type */
204 struct objfile *objfile;
205
206 ntype = TYPE_FUNCTION_TYPE (type);
207
208 if (ntype)
209 if (typeptr == 0)
210 return ntype; /* Don't care about alloc, and have new type. */
211 else if (*typeptr == 0)
212 {
213 *typeptr = ntype; /* Tracking alloc, and we have new type. */
214 return ntype;
215 }
216
217 if (typeptr == 0 || *typeptr == 0) /* We'll need to allocate one. */
218 {
219 ntype = alloc_type (TYPE_OBJFILE (type));
220 if (typeptr)
221 *typeptr = ntype;
222 }
223 else /* We have storage, but need to reset it. */
224 {
225 ntype = *typeptr;
226 objfile = TYPE_OBJFILE (ntype);
227 memset ((char *) ntype, 0, sizeof (struct type));
228 TYPE_OBJFILE (ntype) = objfile;
229 }
230
231 TYPE_TARGET_TYPE (ntype) = type;
232 TYPE_FUNCTION_TYPE (type) = ntype;
233
234 TYPE_LENGTH (ntype) = 1;
235 TYPE_CODE (ntype) = TYPE_CODE_FUNC;
236
237 if (!TYPE_FUNCTION_TYPE (type)) /* Remember it, if don't have one. */
238 TYPE_FUNCTION_TYPE (type) = ntype;
239
240 return ntype;
241 }
242
243
244 /* Given a type TYPE, return a type of functions that return that type.
245 May need to construct such a type if this is the first use. */
246
247 struct type *
248 lookup_function_type (type)
249 struct type *type;
250 {
251 return make_function_type (type, (struct type **)0);
252 }
253
254 /* Implement direct support for MEMBER_TYPE in GNU C++.
255 May need to construct such a type if this is the first use.
256 The TYPE is the type of the member. The DOMAIN is the type
257 of the aggregate that the member belongs to. */
258
259 struct type *
260 lookup_member_type (type, domain)
261 struct type *type;
262 struct type *domain;
263 {
264 register struct type *mtype;
265
266 mtype = alloc_type (TYPE_OBJFILE (type));
267 smash_to_member_type (mtype, domain, type);
268 return (mtype);
269 }
270
271 /* Allocate a stub method whose return type is TYPE.
272 This apparently happens for speed of symbol reading, since parsing
273 out the arguments to the method is cpu-intensive, the way we are doing
274 it. So, we will fill in arguments later.
275 This always returns a fresh type. */
276
277 struct type *
278 allocate_stub_method (type)
279 struct type *type;
280 {
281 struct type *mtype;
282
283 mtype = alloc_type (TYPE_OBJFILE (type));
284 TYPE_TARGET_TYPE (mtype) = type;
285 /* _DOMAIN_TYPE (mtype) = unknown yet */
286 /* _ARG_TYPES (mtype) = unknown yet */
287 TYPE_FLAGS (mtype) = TYPE_FLAG_STUB;
288 TYPE_CODE (mtype) = TYPE_CODE_METHOD;
289 TYPE_LENGTH (mtype) = 1;
290 return (mtype);
291 }
292
293 /* Create an array type. Elements will be of type TYPE, and there will
294 be NUM of them.
295
296 Eventually this should be extended to take two more arguments which
297 specify the bounds of the array and the type of the index.
298 It should also be changed to be a "lookup" function, with the
299 appropriate data structures added to the type field.
300 Then read array type should call here. */
301
302 struct type *
303 create_array_type (element_type, number)
304 struct type *element_type;
305 int number;
306 {
307 struct type *result_type;
308 struct type *range_type;
309
310 result_type = alloc_type (TYPE_OBJFILE (element_type));
311
312 TYPE_CODE (result_type) = TYPE_CODE_ARRAY;
313 TYPE_TARGET_TYPE (result_type) = element_type;
314 TYPE_LENGTH (result_type) = number * TYPE_LENGTH (element_type);
315 TYPE_NFIELDS (result_type) = 1;
316 TYPE_FIELDS (result_type) = (struct field *)
317 TYPE_ALLOC (result_type, sizeof (struct field));
318
319 {
320 /* Create range type. */
321 range_type = alloc_type (TYPE_OBJFILE (result_type));
322 TYPE_CODE (range_type) = TYPE_CODE_RANGE;
323 TYPE_TARGET_TYPE (range_type) = builtin_type_int; /* FIXME */
324
325 /* This should never be needed. */
326 TYPE_LENGTH (range_type) = sizeof (int);
327
328 TYPE_NFIELDS (range_type) = 2;
329 TYPE_FIELDS (range_type) = (struct field *)
330 TYPE_ALLOC (range_type, 2 * sizeof (struct field));
331 TYPE_FIELD_BITPOS (range_type, 0) = 0; /* FIXME */
332 TYPE_FIELD_BITPOS (range_type, 1) = number-1; /* FIXME */
333 TYPE_FIELD_TYPE (range_type, 0) = builtin_type_int; /* FIXME */
334 TYPE_FIELD_TYPE (range_type, 1) = builtin_type_int; /* FIXME */
335 }
336 TYPE_FIELD_TYPE (result_type, 0) = range_type;
337 TYPE_VPTR_FIELDNO (result_type) = -1;
338
339 return (result_type);
340 }
341
342
343 /* Smash TYPE to be a type of members of DOMAIN with type TO_TYPE.
344 A MEMBER is a wierd thing -- it amounts to a typed offset into
345 a struct, e.g. "an int at offset 8". A MEMBER TYPE doesn't
346 include the offset (that's the value of the MEMBER itself), but does
347 include the structure type into which it points (for some reason).
348
349 When "smashing" the type, we preserve the objfile that the
350 old type pointed to, since we aren't changing where the type is actually
351 allocated. */
352
353 void
354 smash_to_member_type (type, domain, to_type)
355 struct type *type;
356 struct type *domain;
357 struct type *to_type;
358 {
359 struct objfile *objfile;
360
361 objfile = TYPE_OBJFILE (type);
362
363 memset ((char *) type, 0, sizeof (struct type));
364 TYPE_OBJFILE (type) = objfile;
365 TYPE_TARGET_TYPE (type) = to_type;
366 TYPE_DOMAIN_TYPE (type) = domain;
367 TYPE_LENGTH (type) = 1; /* In practice, this is never needed. */
368 TYPE_CODE (type) = TYPE_CODE_MEMBER;
369 }
370
371 /* Smash TYPE to be a type of method of DOMAIN with type TO_TYPE.
372 METHOD just means `function that gets an extra "this" argument'.
373
374 When "smashing" the type, we preserve the objfile that the
375 old type pointed to, since we aren't changing where the type is actually
376 allocated. */
377
378 void
379 smash_to_method_type (type, domain, to_type, args)
380 struct type *type;
381 struct type *domain;
382 struct type *to_type;
383 struct type **args;
384 {
385 struct objfile *objfile;
386
387 objfile = TYPE_OBJFILE (type);
388
389 memset ((char *) type, 0, sizeof (struct type));
390 TYPE_OBJFILE (type) = objfile;
391 TYPE_TARGET_TYPE (type) = to_type;
392 TYPE_DOMAIN_TYPE (type) = domain;
393 TYPE_ARG_TYPES (type) = args;
394 TYPE_LENGTH (type) = 1; /* In practice, this is never needed. */
395 TYPE_CODE (type) = TYPE_CODE_METHOD;
396 }
397
398 /* Return a typename for a struct/union/enum type
399 without the tag qualifier. If the type has a NULL name,
400 NULL is returned. */
401
402 char *
403 type_name_no_tag (type)
404 register const struct type *type;
405 {
406 register char *name;
407
408 if ((name = TYPE_NAME (type)) != NULL)
409 {
410 switch (TYPE_CODE (type))
411 {
412 case TYPE_CODE_STRUCT:
413 if(!strncmp (name, "struct ", 7))
414 {
415 name += 7;
416 }
417 break;
418 case TYPE_CODE_UNION:
419 if(!strncmp (name, "union ", 6))
420 {
421 name += 6;
422 }
423 break;
424 case TYPE_CODE_ENUM:
425 if(!strncmp (name, "enum ", 5))
426 {
427 name += 5;
428 }
429 break;
430 default: /* To avoid -Wall warnings */
431 break;
432 }
433 }
434 return (name);
435 }
436
437 /* Lookup a primitive type named NAME.
438 Return zero if NAME is not a primitive type.*/
439
440 struct type *
441 lookup_primitive_typename (name)
442 char *name;
443 {
444 struct type ** const *p;
445
446 for (p = current_language -> la_builtin_type_vector; *p != NULL; p++)
447 {
448 if (!strcmp ((**p) -> name, name))
449 {
450 return (**p);
451 }
452 }
453 return (NULL);
454 }
455
456 /* Lookup a typedef or primitive type named NAME,
457 visible in lexical block BLOCK.
458 If NOERR is nonzero, return zero if NAME is not suitably defined. */
459
460 struct type *
461 lookup_typename (name, block, noerr)
462 char *name;
463 struct block *block;
464 int noerr;
465 {
466 register struct symbol *sym;
467 register struct type *tmp;
468
469 sym = lookup_symbol (name, block, VAR_NAMESPACE, 0, (struct symtab **) NULL);
470 if (sym == NULL || SYMBOL_CLASS (sym) != LOC_TYPEDEF)
471 {
472 tmp = lookup_primitive_typename (name);
473 if (tmp)
474 {
475 return (tmp);
476 }
477 else if (!tmp && noerr)
478 {
479 return (NULL);
480 }
481 else
482 {
483 error ("No type named %s.", name);
484 }
485 }
486 return (SYMBOL_TYPE (sym));
487 }
488
489 struct type *
490 lookup_unsigned_typename (name)
491 char *name;
492 {
493 char *uns = alloca (strlen (name) + 10);
494
495 strcpy (uns, "unsigned ");
496 strcpy (uns + 9, name);
497 return (lookup_typename (uns, (struct block *) NULL, 0));
498 }
499
500 struct type *
501 lookup_signed_typename (name)
502 char *name;
503 {
504 struct type *t;
505 char *uns = alloca (strlen (name) + 8);
506
507 strcpy (uns, "signed ");
508 strcpy (uns + 7, name);
509 t = lookup_typename (uns, (struct block *) NULL, 1);
510 /* If we don't find "signed FOO" just try again with plain "FOO". */
511 if (t != NULL)
512 return t;
513 return lookup_typename (name, (struct block *) NULL, 0);
514 }
515
516 /* Lookup a structure type named "struct NAME",
517 visible in lexical block BLOCK. */
518
519 struct type *
520 lookup_struct (name, block)
521 char *name;
522 struct block *block;
523 {
524 register struct symbol *sym;
525
526 sym = lookup_symbol (name, block, STRUCT_NAMESPACE, 0,
527 (struct symtab **) NULL);
528
529 if (sym == NULL)
530 {
531 error ("No struct type named %s.", name);
532 }
533 if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_STRUCT)
534 {
535 error ("This context has class, union or enum %s, not a struct.", name);
536 }
537 return (SYMBOL_TYPE (sym));
538 }
539
540 /* Lookup a union type named "union NAME",
541 visible in lexical block BLOCK. */
542
543 struct type *
544 lookup_union (name, block)
545 char *name;
546 struct block *block;
547 {
548 register struct symbol *sym;
549
550 sym = lookup_symbol (name, block, STRUCT_NAMESPACE, 0,
551 (struct symtab **) NULL);
552
553 if (sym == NULL)
554 {
555 error ("No union type named %s.", name);
556 }
557 if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_UNION)
558 {
559 error ("This context has class, struct or enum %s, not a union.", name);
560 }
561 return (SYMBOL_TYPE (sym));
562 }
563
564 /* Lookup an enum type named "enum NAME",
565 visible in lexical block BLOCK. */
566
567 struct type *
568 lookup_enum (name, block)
569 char *name;
570 struct block *block;
571 {
572 register struct symbol *sym;
573
574 sym = lookup_symbol (name, block, STRUCT_NAMESPACE, 0,
575 (struct symtab **) NULL);
576 if (sym == NULL)
577 {
578 error ("No enum type named %s.", name);
579 }
580 if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_ENUM)
581 {
582 error ("This context has class, struct or union %s, not an enum.", name);
583 }
584 return (SYMBOL_TYPE (sym));
585 }
586
587 /* Lookup a template type named "template NAME<TYPE>",
588 visible in lexical block BLOCK. */
589
590 struct type *
591 lookup_template_type (name, type, block)
592 char *name;
593 struct type *type;
594 struct block *block;
595 {
596 struct symbol *sym;
597 char *nam = (char*) alloca(strlen(name) + strlen(type->name) + 4);
598 strcpy (nam, name);
599 strcat (nam, "<");
600 strcat (nam, type->name);
601 strcat (nam, " >"); /* FIXME, extra space still introduced in gcc? */
602
603 sym = lookup_symbol (nam, block, VAR_NAMESPACE, 0, (struct symtab **)NULL);
604
605 if (sym == NULL)
606 {
607 error ("No template type named %s.", name);
608 }
609 if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_STRUCT)
610 {
611 error ("This context has class, union or enum %s, not a struct.", name);
612 }
613 return (SYMBOL_TYPE (sym));
614 }
615
616 /* Given a type TYPE, lookup the type of the component of type named
617 NAME.
618 If NOERR is nonzero, return zero if NAME is not suitably defined. */
619
620 struct type *
621 lookup_struct_elt_type (type, name, noerr)
622 struct type *type;
623 char *name;
624 int noerr;
625 {
626 int i;
627
628 if (TYPE_CODE (type) == TYPE_CODE_PTR ||
629 TYPE_CODE (type) == TYPE_CODE_REF)
630 type = TYPE_TARGET_TYPE (type);
631
632 if (TYPE_CODE (type) != TYPE_CODE_STRUCT &&
633 TYPE_CODE (type) != TYPE_CODE_UNION)
634 {
635 target_terminal_ours ();
636 fflush (stdout);
637 fprintf (stderr, "Type ");
638 type_print (type, "", stderr, -1);
639 error (" is not a structure or union type.");
640 }
641
642 check_stub_type (type);
643
644 for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
645 {
646 char *t_field_name = TYPE_FIELD_NAME (type, i);
647
648 if (t_field_name && !strcmp (t_field_name, name))
649 {
650 return TYPE_FIELD_TYPE (type, i);
651 }
652 }
653
654 /* OK, it's not in this class. Recursively check the baseclasses. */
655 for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
656 {
657 struct type *t;
658
659 t = lookup_struct_elt_type (TYPE_BASECLASS (type, i), name, 0);
660 if (t != NULL)
661 {
662 return t;
663 }
664 }
665
666 if (noerr)
667 {
668 return NULL;
669 }
670
671 target_terminal_ours ();
672 fflush (stdout);
673 fprintf (stderr, "Type ");
674 type_print (type, "", stderr, -1);
675 fprintf (stderr, " has no component named ");
676 fputs_filtered (name, stderr);
677 error (".");
678 return (struct type *)-1; /* For lint */
679 }
680
681 /* This function is really horrible, but to avoid it, there would need
682 to be more filling in of forward references. */
683
684 void
685 fill_in_vptr_fieldno (type)
686 struct type *type;
687 {
688 if (TYPE_VPTR_FIELDNO (type) < 0)
689 {
690 int i;
691 for (i = 1; i < TYPE_N_BASECLASSES (type); i++)
692 {
693 fill_in_vptr_fieldno (TYPE_BASECLASS (type, i));
694 if (TYPE_VPTR_FIELDNO (TYPE_BASECLASS (type, i)) >= 0)
695 {
696 TYPE_VPTR_FIELDNO (type)
697 = TYPE_VPTR_FIELDNO (TYPE_BASECLASS (type, i));
698 TYPE_VPTR_BASETYPE (type)
699 = TYPE_VPTR_BASETYPE (TYPE_BASECLASS (type, i));
700 break;
701 }
702 }
703 }
704 }
705
706 /* Added by Bryan Boreham, Kewill, Sun Sep 17 18:07:17 1989.
707
708 If this is a stubbed struct (i.e. declared as struct foo *), see if
709 we can find a full definition in some other file. If so, copy this
710 definition, so we can use it in future. If not, set a flag so we
711 don't waste too much time in future. (FIXME, this doesn't seem
712 to be happening...)
713
714 This used to be coded as a macro, but I don't think it is called
715 often enough to merit such treatment.
716 */
717
718 struct complaint stub_noname_complaint =
719 {"stub type has NULL name", 0, 0};
720
721 void
722 check_stub_type (type)
723 struct type *type;
724 {
725 if (TYPE_FLAGS(type) & TYPE_FLAG_STUB)
726 {
727 char* name = type_name_no_tag (type);
728 struct symbol *sym;
729 if (name == NULL)
730 {
731 complain (&stub_noname_complaint, 0);
732 return;
733 }
734 sym = lookup_symbol (name, 0, STRUCT_NAMESPACE, 0,
735 (struct symtab **) NULL);
736 if (sym)
737 {
738 memcpy ((char *)type, (char *)SYMBOL_TYPE(sym), sizeof (struct type));
739 }
740 }
741 }
742
743 /* Ugly hack to convert method stubs into method types.
744
745 He ain't kiddin'. This demangles the name of the method into a string
746 including argument types, parses out each argument type, generates
747 a string casting a zero to that type, evaluates the string, and stuffs
748 the resulting type into an argtype vector!!! Then it knows the type
749 of the whole function (including argument types for overloading),
750 which info used to be in the stab's but was removed to hack back
751 the space required for them. */
752
753 void
754 check_stub_method (type, i, j)
755 struct type *type;
756 int i;
757 int j;
758 {
759 struct fn_field *f;
760 char *mangled_name = gdb_mangle_name (type, i, j);
761 char *demangled_name = cplus_demangle (mangled_name,
762 DMGL_PARAMS | DMGL_ANSI);
763 char *argtypetext, *p;
764 int depth = 0, argcount = 1;
765 struct type **argtypes;
766 struct type *mtype;
767
768 if (demangled_name == NULL)
769 {
770 error ("Internal: Cannot demangle mangled name `%s'.", mangled_name);
771 }
772
773 /* Now, read in the parameters that define this type. */
774 argtypetext = strchr (demangled_name, '(') + 1;
775 p = argtypetext;
776 while (*p)
777 {
778 if (*p == '(')
779 {
780 depth += 1;
781 }
782 else if (*p == ')')
783 {
784 depth -= 1;
785 }
786 else if (*p == ',' && depth == 0)
787 {
788 argcount += 1;
789 }
790
791 p += 1;
792 }
793
794 /* We need two more slots: one for the THIS pointer, and one for the
795 NULL [...] or void [end of arglist]. */
796
797 argtypes = (struct type **)
798 TYPE_ALLOC (type, (argcount + 2) * sizeof (struct type *));
799 p = argtypetext;
800 argtypes[0] = lookup_pointer_type (type);
801 argcount = 1;
802
803 if (*p != ')') /* () means no args, skip while */
804 {
805 depth = 0;
806 while (*p)
807 {
808 if (depth <= 0 && (*p == ',' || *p == ')'))
809 {
810 argtypes[argcount] =
811 parse_and_eval_type (argtypetext, p - argtypetext);
812 argcount += 1;
813 argtypetext = p + 1;
814 }
815
816 if (*p == '(')
817 {
818 depth += 1;
819 }
820 else if (*p == ')')
821 {
822 depth -= 1;
823 }
824
825 p += 1;
826 }
827 }
828
829 if (p[-2] != '.') /* Not '...' */
830 {
831 argtypes[argcount] = builtin_type_void; /* List terminator */
832 }
833 else
834 {
835 argtypes[argcount] = NULL; /* Ellist terminator */
836 }
837
838 free (demangled_name);
839
840 f = TYPE_FN_FIELDLIST1 (type, i);
841 TYPE_FN_FIELD_PHYSNAME (f, j) = mangled_name;
842
843 /* Now update the old "stub" type into a real type. */
844 mtype = TYPE_FN_FIELD_TYPE (f, j);
845 TYPE_DOMAIN_TYPE (mtype) = type;
846 TYPE_ARG_TYPES (mtype) = argtypes;
847 TYPE_FLAGS (mtype) &= ~TYPE_FLAG_STUB;
848 TYPE_FN_FIELD_STUB (f, j) = 0;
849 }
850
851 struct cplus_struct_type cplus_struct_default;
852
853 void
854 allocate_cplus_struct_type (type)
855 struct type *type;
856 {
857 if (!HAVE_CPLUS_STRUCT (type))
858 {
859 TYPE_CPLUS_SPECIFIC (type) = (struct cplus_struct_type *)
860 TYPE_ALLOC (type, sizeof (struct cplus_struct_type));
861 *(TYPE_CPLUS_SPECIFIC(type)) = cplus_struct_default;
862 }
863 }
864
865 /* Helper function to initialize the standard scalar types.
866
867 If NAME is non-NULL and OBJFILE is non-NULL, then we make a copy
868 of the string pointed to by name in the type_obstack for that objfile,
869 and initialize the type name to that copy. There are places (mipsread.c
870 in particular, where init_type is called with a NULL value for NAME). */
871
872 struct type *
873 init_type (code, length, flags, name, objfile)
874 enum type_code code;
875 int length;
876 int flags;
877 char *name;
878 struct objfile *objfile;
879 {
880 register struct type *type;
881
882 type = alloc_type (objfile);
883 TYPE_CODE (type) = code;
884 TYPE_LENGTH (type) = length;
885 TYPE_FLAGS (type) |= flags;
886 if ((name != NULL) && (objfile != NULL))
887 {
888 TYPE_NAME (type) =
889 obsavestring (name, strlen (name), &objfile -> type_obstack);
890 }
891 else
892 {
893 TYPE_NAME (type) = name;
894 }
895
896 /* C++ fancies. */
897
898 if (code == TYPE_CODE_STRUCT || code == TYPE_CODE_UNION)
899 {
900 INIT_CPLUS_SPECIFIC (type);
901 }
902 return (type);
903 }
904
905 /* Look up a fundamental type for the specified objfile.
906 May need to construct such a type if this is the first use.
907
908 Some object file formats (ELF, COFF, etc) do not define fundamental
909 types such as "int" or "double". Others (stabs for example), do
910 define fundamental types.
911
912 For the formats which don't provide fundamental types, gdb can create
913 such types, using defaults reasonable for the current language and
914 the current target machine.
915
916 NOTE: This routine is obsolescent. Each debugging format reader
917 should manage it's own fundamental types, either creating them from
918 suitable defaults or reading them from the debugging information,
919 whichever is appropriate. The DWARF reader has already been
920 fixed to do this. Once the other readers are fixed, this routine
921 will go away. Also note that fundamental types should be managed
922 on a compilation unit basis in a multi-language environment, not
923 on a linkage unit basis as is done here. */
924
925
926 struct type *
927 lookup_fundamental_type (objfile, typeid)
928 struct objfile *objfile;
929 int typeid;
930 {
931 register struct type **typep;
932 register int nbytes;
933
934 if (typeid < 0 || typeid >= FT_NUM_MEMBERS)
935 {
936 error ("internal error - invalid fundamental type id %d", typeid);
937 }
938
939 /* If this is the first time we need a fundamental type for this objfile
940 then we need to initialize the vector of type pointers. */
941
942 if (objfile -> fundamental_types == NULL)
943 {
944 nbytes = FT_NUM_MEMBERS * sizeof (struct type *);
945 objfile -> fundamental_types = (struct type **)
946 obstack_alloc (&objfile -> type_obstack, nbytes);
947 memset ((char *) objfile -> fundamental_types, 0, nbytes);
948 }
949
950 /* Look for this particular type in the fundamental type vector. If one is
951 not found, create and install one appropriate for the current language. */
952
953 typep = objfile -> fundamental_types + typeid;
954 if (*typep == NULL)
955 {
956 *typep = create_fundamental_type (objfile, typeid);
957 }
958
959 return (*typep);
960 }
961
962 #if MAINTENANCE_CMDS
963
964 static void
965 print_bit_vector (bits, nbits)
966 B_TYPE *bits;
967 int nbits;
968 {
969 int bitno;
970
971 for (bitno = 0; bitno < nbits; bitno++)
972 {
973 if ((bitno % 8) == 0)
974 {
975 puts_filtered (" ");
976 }
977 if (B_TST (bits, bitno))
978 {
979 printf_filtered ("1");
980 }
981 else
982 {
983 printf_filtered ("0");
984 }
985 }
986 }
987
988 /* The args list is a strange beast. It is either terminated by a NULL
989 pointer for varargs functions, or by a pointer to a TYPE_CODE_VOID
990 type for normal fixed argcount functions. (FIXME someday)
991 Also note the first arg should be the "this" pointer, we may not want to
992 include it since we may get into a infinitely recursive situation. */
993
994 static void
995 print_arg_types (args, spaces)
996 struct type **args;
997 int spaces;
998 {
999 if (args != NULL)
1000 {
1001 while (*args != NULL)
1002 {
1003 recursive_dump_type (*args, spaces + 2);
1004 if ((*args++) -> code == TYPE_CODE_VOID)
1005 {
1006 break;
1007 }
1008 }
1009 }
1010 }
1011
1012 static void
1013 dump_fn_fieldlists (type, spaces)
1014 struct type *type;
1015 int spaces;
1016 {
1017 int method_idx;
1018 int overload_idx;
1019 struct fn_field *f;
1020
1021 printfi_filtered (spaces, "fn_fieldlists 0x%x\n",
1022 TYPE_FN_FIELDLISTS (type));
1023 for (method_idx = 0; method_idx < TYPE_NFN_FIELDS (type); method_idx++)
1024 {
1025 f = TYPE_FN_FIELDLIST1 (type, method_idx);
1026 printfi_filtered (spaces + 2, "[%d] name '%s' (0x%x) length %d\n",
1027 method_idx,
1028 TYPE_FN_FIELDLIST_NAME (type, method_idx),
1029 TYPE_FN_FIELDLIST_NAME (type, method_idx),
1030 TYPE_FN_FIELDLIST_LENGTH (type, method_idx));
1031 for (overload_idx = 0;
1032 overload_idx < TYPE_FN_FIELDLIST_LENGTH (type, method_idx);
1033 overload_idx++)
1034 {
1035 printfi_filtered (spaces + 4, "[%d] physname '%s' (0x%x)\n",
1036 overload_idx,
1037 TYPE_FN_FIELD_PHYSNAME (f, overload_idx),
1038 TYPE_FN_FIELD_PHYSNAME (f, overload_idx));
1039 printfi_filtered (spaces + 8, "type 0x%x\n",
1040 TYPE_FN_FIELD_TYPE (f, overload_idx));
1041 recursive_dump_type (TYPE_FN_FIELD_TYPE (f, overload_idx),
1042 spaces + 8 + 2);
1043 printfi_filtered (spaces + 8, "args 0x%x\n",
1044 TYPE_FN_FIELD_ARGS (f, overload_idx));
1045 print_arg_types (TYPE_FN_FIELD_ARGS (f, overload_idx), spaces);
1046 printfi_filtered (spaces + 8, "fcontext 0x%x\n",
1047 TYPE_FN_FIELD_FCONTEXT (f, overload_idx));
1048 printfi_filtered (spaces + 8, "is_const %d\n",
1049 TYPE_FN_FIELD_CONST (f, overload_idx));
1050 printfi_filtered (spaces + 8, "is_volatile %d\n",
1051 TYPE_FN_FIELD_VOLATILE (f, overload_idx));
1052 printfi_filtered (spaces + 8, "is_private %d\n",
1053 TYPE_FN_FIELD_PRIVATE (f, overload_idx));
1054 printfi_filtered (spaces + 8, "is_protected %d\n",
1055 TYPE_FN_FIELD_PROTECTED (f, overload_idx));
1056 printfi_filtered (spaces + 8, "is_stub %d\n",
1057 TYPE_FN_FIELD_STUB (f, overload_idx));
1058 printfi_filtered (spaces + 8, "voffset %u\n",
1059 TYPE_FN_FIELD_VOFFSET (f, overload_idx));
1060 }
1061 }
1062 }
1063
1064 static void
1065 print_cplus_stuff (type, spaces)
1066 struct type *type;
1067 int spaces;
1068 {
1069 int bitno;
1070
1071 printfi_filtered (spaces, "n_baseclasses %d\n",
1072 TYPE_N_BASECLASSES (type));
1073 printfi_filtered (spaces, "nfn_fields %d\n",
1074 TYPE_NFN_FIELDS (type));
1075 printfi_filtered (spaces, "nfn_fields_total %d\n",
1076 TYPE_NFN_FIELDS_TOTAL (type));
1077 if (TYPE_N_BASECLASSES (type) > 0)
1078 {
1079 printfi_filtered (spaces, "virtual_field_bits (%d bits at *0x%x)",
1080 TYPE_N_BASECLASSES (type),
1081 TYPE_FIELD_VIRTUAL_BITS (type));
1082 print_bit_vector (TYPE_FIELD_VIRTUAL_BITS (type),
1083 TYPE_N_BASECLASSES (type));
1084 puts_filtered ("\n");
1085 }
1086 if (TYPE_NFIELDS (type) > 0)
1087 {
1088 if (TYPE_FIELD_PRIVATE_BITS (type) != NULL)
1089 {
1090 printfi_filtered (spaces, "private_field_bits (%d bits at *0x%x)",
1091 TYPE_NFIELDS (type),
1092 TYPE_FIELD_PRIVATE_BITS (type));
1093 print_bit_vector (TYPE_FIELD_PRIVATE_BITS (type),
1094 TYPE_NFIELDS (type));
1095 puts_filtered ("\n");
1096 }
1097 if (TYPE_FIELD_PROTECTED_BITS (type) != NULL)
1098 {
1099 printfi_filtered (spaces, "protected_field_bits (%d bits at *0x%x)",
1100 TYPE_NFIELDS (type),
1101 TYPE_FIELD_PROTECTED_BITS (type));
1102 print_bit_vector (TYPE_FIELD_PROTECTED_BITS (type),
1103 TYPE_NFIELDS (type));
1104 puts_filtered ("\n");
1105 }
1106 }
1107 if (TYPE_NFN_FIELDS (type) > 0)
1108 {
1109 dump_fn_fieldlists (type, spaces);
1110 }
1111 }
1112
1113 void
1114 recursive_dump_type (type, spaces)
1115 struct type *type;
1116 int spaces;
1117 {
1118 int idx;
1119
1120 printfi_filtered (spaces, "type node 0x%x\n", type);
1121 printfi_filtered (spaces, "name '%s' (0x%x)\n", TYPE_NAME (type),
1122 TYPE_NAME (type) ? TYPE_NAME (type) : "<NULL>");
1123 printfi_filtered (spaces, "code 0x%x ", TYPE_CODE (type));
1124 switch (TYPE_CODE (type))
1125 {
1126 case TYPE_CODE_UNDEF:
1127 printf_filtered ("(TYPE_CODE_UNDEF)");
1128 break;
1129 case TYPE_CODE_PTR:
1130 printf_filtered ("(TYPE_CODE_PTR)");
1131 break;
1132 case TYPE_CODE_ARRAY:
1133 printf_filtered ("(TYPE_CODE_ARRAY)");
1134 break;
1135 case TYPE_CODE_STRUCT:
1136 printf_filtered ("(TYPE_CODE_STRUCT)");
1137 break;
1138 case TYPE_CODE_UNION:
1139 printf_filtered ("(TYPE_CODE_UNION)");
1140 break;
1141 case TYPE_CODE_ENUM:
1142 printf_filtered ("(TYPE_CODE_ENUM)");
1143 break;
1144 case TYPE_CODE_FUNC:
1145 printf_filtered ("(TYPE_CODE_FUNC)");
1146 break;
1147 case TYPE_CODE_INT:
1148 printf_filtered ("(TYPE_CODE_INT)");
1149 break;
1150 case TYPE_CODE_FLT:
1151 printf_filtered ("(TYPE_CODE_FLT)");
1152 break;
1153 case TYPE_CODE_VOID:
1154 printf_filtered ("(TYPE_CODE_VOID)");
1155 break;
1156 case TYPE_CODE_SET:
1157 printf_filtered ("(TYPE_CODE_SET)");
1158 break;
1159 case TYPE_CODE_RANGE:
1160 printf_filtered ("(TYPE_CODE_RANGE)");
1161 break;
1162 case TYPE_CODE_PASCAL_ARRAY:
1163 printf_filtered ("(TYPE_CODE_PASCAL_ARRAY)");
1164 break;
1165 case TYPE_CODE_ERROR:
1166 printf_filtered ("(TYPE_CODE_ERROR)");
1167 break;
1168 case TYPE_CODE_MEMBER:
1169 printf_filtered ("(TYPE_CODE_MEMBER)");
1170 break;
1171 case TYPE_CODE_METHOD:
1172 printf_filtered ("(TYPE_CODE_METHOD)");
1173 break;
1174 case TYPE_CODE_REF:
1175 printf_filtered ("(TYPE_CODE_REF)");
1176 break;
1177 case TYPE_CODE_CHAR:
1178 printf_filtered ("(TYPE_CODE_CHAR)");
1179 break;
1180 case TYPE_CODE_BOOL:
1181 printf_filtered ("(TYPE_CODE_BOOL)");
1182 break;
1183 default:
1184 printf_filtered ("(UNKNOWN TYPE CODE)");
1185 break;
1186 }
1187 puts_filtered ("\n");
1188 printfi_filtered (spaces, "length %d\n", TYPE_LENGTH (type));
1189 printfi_filtered (spaces, "objfile 0x%x\n", TYPE_OBJFILE (type));
1190 printfi_filtered (spaces, "target_type 0x%x\n", TYPE_TARGET_TYPE (type));
1191 if (TYPE_TARGET_TYPE (type) != NULL)
1192 {
1193 recursive_dump_type (TYPE_TARGET_TYPE (type), spaces + 2);
1194 }
1195 printfi_filtered (spaces, "pointer_type 0x%x\n",
1196 TYPE_POINTER_TYPE (type));
1197 printfi_filtered (spaces, "reference_type 0x%x\n",
1198 TYPE_REFERENCE_TYPE (type));
1199 printfi_filtered (spaces, "function_type 0x%x\n",
1200 TYPE_FUNCTION_TYPE (type));
1201 printfi_filtered (spaces, "flags 0x%x", TYPE_FLAGS (type));
1202 if (TYPE_FLAGS (type) & TYPE_FLAG_UNSIGNED)
1203 {
1204 puts_filtered (" TYPE_FLAG_UNSIGNED");
1205 }
1206 if (TYPE_FLAGS (type) & TYPE_FLAG_SIGNED)
1207 {
1208 puts_filtered (" TYPE_FLAG_SIGNED");
1209 }
1210 if (TYPE_FLAGS (type) & TYPE_FLAG_STUB)
1211 {
1212 puts_filtered (" TYPE_FLAG_STUB");
1213 }
1214 puts_filtered ("\n");
1215 printfi_filtered (spaces, "nfields %d 0x%x\n", TYPE_NFIELDS (type),
1216 TYPE_FIELDS (type));
1217 for (idx = 0; idx < TYPE_NFIELDS (type); idx++)
1218 {
1219 printfi_filtered (spaces + 2,
1220 "[%d] bitpos %d bitsize %d type 0x%x name '%s' (0x%x)\n",
1221 idx, TYPE_FIELD_BITPOS (type, idx),
1222 TYPE_FIELD_BITSIZE (type, idx),
1223 TYPE_FIELD_TYPE (type, idx),
1224 TYPE_FIELD_NAME (type, idx),
1225 TYPE_FIELD_NAME (type, idx) != NULL
1226 ? TYPE_FIELD_NAME (type, idx)
1227 : "<NULL>");
1228 if (TYPE_FIELD_TYPE (type, idx) != NULL)
1229 {
1230 recursive_dump_type (TYPE_FIELD_TYPE (type, idx), spaces + 4);
1231 }
1232 }
1233 printfi_filtered (spaces, "vptr_basetype 0x%x\n",
1234 TYPE_VPTR_BASETYPE (type));
1235 if (TYPE_VPTR_BASETYPE (type) != NULL)
1236 {
1237 recursive_dump_type (TYPE_VPTR_BASETYPE (type), spaces + 2);
1238 }
1239 printfi_filtered (spaces, "vptr_fieldno %d\n", TYPE_VPTR_FIELDNO (type));
1240 switch (TYPE_CODE (type))
1241 {
1242 case TYPE_CODE_METHOD:
1243 case TYPE_CODE_FUNC:
1244 printfi_filtered (spaces, "arg_types 0x%x\n", TYPE_ARG_TYPES (type));
1245 print_arg_types (TYPE_ARG_TYPES (type), spaces);
1246 break;
1247
1248 case TYPE_CODE_STRUCT:
1249 printfi_filtered (spaces, "cplus_stuff 0x%x\n",
1250 TYPE_CPLUS_SPECIFIC (type));
1251 print_cplus_stuff (type, spaces);
1252 break;
1253
1254 default:
1255 /* We have to pick one of the union types to be able print and test
1256 the value. Pick cplus_struct_type, even though we know it isn't
1257 any particular one. */
1258 printfi_filtered (spaces, "type_specific 0x%x",
1259 TYPE_CPLUS_SPECIFIC (type));
1260 if (TYPE_CPLUS_SPECIFIC (type) != NULL)
1261 {
1262 printf_filtered (" (unknown data form)");
1263 }
1264 printf_filtered ("\n");
1265 break;
1266
1267 }
1268 }
1269
1270 #endif /* MAINTENANCE_CMDS */