Back out change to signals.exp (test_handle_all_print): Add setup_xfail for "alpha...
[deliverable/binutils-gdb.git] / gdb / gdbtypes.c
CommitLineData
1ab3bf1b 1/* Support routines for manipulating internal types for GDB.
2447e9af 2 Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
1ab3bf1b
JG
3 Contributed by Cygnus Support, using pieces from other GDB modules.
4
5This file is part of GDB.
6
7This program is free software; you can redistribute it and/or modify
8it under the terms of the GNU General Public License as published by
9the Free Software Foundation; either version 2 of the License, or
10(at your option) any later version.
11
12This program is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with this program; if not, write to the Free Software
6c9638b4 19Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
1ab3bf1b 20
1ab3bf1b 21#include "defs.h"
2b576293 22#include "gdb_string.h"
1ab3bf1b
JG
23#include "bfd.h"
24#include "symtab.h"
25#include "symfile.h"
5e2e79f8 26#include "objfiles.h"
1ab3bf1b
JG
27#include "gdbtypes.h"
28#include "expression.h"
29#include "language.h"
30#include "target.h"
31#include "value.h"
8f793aa5 32#include "demangle.h"
51b80b00 33#include "complaints.h"
1ab3bf1b 34
c4413e2c
FF
35/* These variables point to the objects
36 representing the predefined C data types. */
37
38struct type *builtin_type_void;
39struct type *builtin_type_char;
40struct type *builtin_type_short;
41struct type *builtin_type_int;
42struct type *builtin_type_long;
43struct type *builtin_type_long_long;
44struct type *builtin_type_signed_char;
45struct type *builtin_type_unsigned_char;
46struct type *builtin_type_unsigned_short;
47struct type *builtin_type_unsigned_int;
48struct type *builtin_type_unsigned_long;
49struct type *builtin_type_unsigned_long_long;
50struct type *builtin_type_float;
51struct type *builtin_type_double;
52struct type *builtin_type_long_double;
53struct type *builtin_type_complex;
54struct type *builtin_type_double_complex;
55struct type *builtin_type_string;
56
1ab3bf1b
JG
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
61struct type *
62alloc_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));
2dd30c72 77 OBJSTAT (objfile, n_types++);
1ab3bf1b 78 }
dac9734e 79 memset ((char *) type, 0, sizeof (struct type));
1ab3bf1b
JG
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
ea1549b3
JG
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
95struct type *
96make_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);
dac9734e 124 memset ((char *) ntype, 0, sizeof (struct type));
ea1549b3
JG
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
1ab3bf1b
JG
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
148struct type *
149lookup_pointer_type (type)
150 struct type *type;
151{
ea1549b3
JG
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
160struct type *
161make_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);
1ab3bf1b 169
ea1549b3
JG
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. */
1ab3bf1b 186 {
ea1549b3
JG
187 ntype = *typeptr;
188 objfile = TYPE_OBJFILE (ntype);
dac9734e 189 memset ((char *) ntype, 0, sizeof (struct type));
ea1549b3 190 TYPE_OBJFILE (ntype) = objfile;
1ab3bf1b 191 }
ea1549b3
JG
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;
1ab3bf1b
JG
206}
207
ea1549b3
JG
208/* Same as above, but caller doesn't care about memory allocation details. */
209
1ab3bf1b
JG
210struct type *
211lookup_reference_type (type)
212 struct type *type;
213{
ea1549b3
JG
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. */
1ab3bf1b 221
ea1549b3
JG
222struct type *
223make_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
ea1549b3 230 if (typeptr == 0 || *typeptr == 0) /* We'll need to allocate one. */
1ab3bf1b 231 {
ea1549b3
JG
232 ntype = alloc_type (TYPE_OBJFILE (type));
233 if (typeptr)
234 *typeptr = ntype;
1ab3bf1b 235 }
ea1549b3
JG
236 else /* We have storage, but need to reset it. */
237 {
238 ntype = *typeptr;
239 objfile = TYPE_OBJFILE (ntype);
dac9734e 240 memset ((char *) ntype, 0, sizeof (struct type));
ea1549b3
JG
241 TYPE_OBJFILE (ntype) = objfile;
242 }
243
244 TYPE_TARGET_TYPE (ntype) = type;
ea1549b3
JG
245
246 TYPE_LENGTH (ntype) = 1;
247 TYPE_CODE (ntype) = TYPE_CODE_FUNC;
248
ea1549b3 249 return ntype;
1ab3bf1b
JG
250}
251
ea1549b3 252
1ab3bf1b
JG
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
256struct type *
257lookup_function_type (type)
258 struct type *type;
259{
ea1549b3 260 return make_function_type (type, (struct type **)0);
1ab3bf1b
JG
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
268struct type *
269lookup_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
286struct type *
287allocate_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
a8a69e63 302/* Create a range type using either a blank type supplied in RESULT_TYPE,
ec16f701
FF
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.
a8a69e63
FF
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
311struct type *
312create_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;
e55a5796
PB
324 if (TYPE_FLAGS (index_type) & TYPE_FLAG_STUB)
325 TYPE_FLAGS (result_type) |= TYPE_FLAG_TARGET_STUB;
326 else
d1f4065e 327 TYPE_LENGTH (result_type) = TYPE_LENGTH (check_typedef (index_type));
a8a69e63
FF
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
706bfe5a
PB
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
344int
345get_discrete_bounds (type, lowp, highp)
346 struct type *type;
347 LONGEST *lowp, *highp;
348{
d1f4065e 349 CHECK_TYPEDEF (type);
706bfe5a
PB
350 switch (TYPE_CODE (type))
351 {
4dda8ef3 352 case TYPE_CODE_RANGE:
706bfe5a
PB
353 *lowp = TYPE_LOW_BOUND (type);
354 *highp = TYPE_HIGH_BOUND (type);
355 return 1;
356 case TYPE_CODE_ENUM:
d1f4065e
PB
357 if (TYPE_NFIELDS (type) > 0)
358 {
d221b17e
WM
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 }
d1f4065e
PB
371 }
372 else
373 {
374 *lowp = 0;
375 *highp = -1;
376 }
706bfe5a
PB
377 return 0;
378 case TYPE_CODE_BOOL:
379 *lowp = 0;
380 *highp = 1;
381 return 0;
382 case TYPE_CODE_INT:
f6d16585 383 if (TYPE_LENGTH (type) > sizeof (LONGEST)) /* Too big */
706bfe5a
PB
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;
f6d16585
PB
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;
706bfe5a
PB
399 return 0;
400 default:
401 return -1;
402 }
403}
404
85f0a848 405/* Create an array type using either a blank type supplied in RESULT_TYPE,
ec16f701
FF
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.
1ab3bf1b 410
85f0a848
FF
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? */
1ab3bf1b
JG
413
414struct type *
a8a69e63 415create_array_type (result_type, element_type, range_type)
85f0a848 416 struct type *result_type;
1ab3bf1b 417 struct type *element_type;
a8a69e63 418 struct type *range_type;
1ab3bf1b 419{
d1f4065e 420 LONGEST low_bound, high_bound;
1ab3bf1b 421
85f0a848
FF
422 if (result_type == NULL)
423 {
ec16f701 424 result_type = alloc_type (TYPE_OBJFILE (range_type));
85f0a848 425 }
1ab3bf1b
JG
426 TYPE_CODE (result_type) = TYPE_CODE_ARRAY;
427 TYPE_TARGET_TYPE (result_type) = element_type;
d1f4065e
PB
428 if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
429 low_bound = high_bound = 0;
430 CHECK_TYPEDEF (element_type);
85f0a848
FF
431 TYPE_LENGTH (result_type) =
432 TYPE_LENGTH (element_type) * (high_bound - low_bound + 1);
1ab3bf1b 433 TYPE_NFIELDS (result_type) = 1;
a8a69e63
FF
434 TYPE_FIELDS (result_type) =
435 (struct field *) TYPE_ALLOC (result_type, sizeof (struct field));
85f0a848 436 memset (TYPE_FIELDS (result_type), 0, sizeof (struct field));
8050a57b 437 TYPE_FIELD_TYPE (result_type, 0) = range_type;
1ab3bf1b
JG
438 TYPE_VPTR_FIELDNO (result_type) = -1;
439
440 return (result_type);
441}
442
c4413e2c
FF
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
454struct type *
455create_string_type (result_type, range_type)
456 struct type *result_type;
457 struct type *range_type;
458{
ead95f8a
PB
459 result_type = create_array_type (result_type,
460 *current_language->string_char_type,
461 range_type);
c4413e2c
FF
462 TYPE_CODE (result_type) = TYPE_CODE_STRING;
463 return (result_type);
464}
1ab3bf1b 465
e909f287
PB
466struct type *
467create_set_type (result_type, domain_type)
468 struct type *result_type;
469 struct type *domain_type;
470{
d1f4065e 471 LONGEST low_bound, high_bound, bit_length;
e909f287
PB
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));
576f9770
PB
481
482 if (! (TYPE_FLAGS (domain_type) & TYPE_FLAG_STUB))
483 {
d1f4065e
PB
484 if (get_discrete_bounds (domain_type, &low_bound, &high_bound) < 0)
485 low_bound = high_bound = 0;
576f9770
PB
486 bit_length = high_bound - low_bound + 1;
487 TYPE_LENGTH (result_type)
b4680522 488 = (bit_length + TARGET_CHAR_BIT - 1) / TARGET_CHAR_BIT;
576f9770 489 }
e909f287 490 TYPE_FIELD_TYPE (result_type, 0) = domain_type;
e909f287
PB
491 return (result_type);
492}
493
1ab3bf1b
JG
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
c2e4669f 500 When "smashing" the type, we preserve the objfile that the
1ab3bf1b 501 old type pointed to, since we aren't changing where the type is actually
c2e4669f 502 allocated. */
1ab3bf1b
JG
503
504void
505smash_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
dac9734e 514 memset ((char *) type, 0, sizeof (struct type));
1ab3bf1b
JG
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
c2e4669f 525 When "smashing" the type, we preserve the objfile that the
1ab3bf1b 526 old type pointed to, since we aren't changing where the type is actually
c2e4669f 527 allocated. */
1ab3bf1b
JG
528
529void
530smash_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
dac9734e 540 memset ((char *) type, 0, sizeof (struct type));
1ab3bf1b
JG
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
b2bebdb0
JK
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. */
1ab3bf1b
JG
551
552char *
553type_name_no_tag (type)
554 register const struct type *type;
555{
b2bebdb0
JK
556 if (TYPE_TAG_NAME (type) != NULL)
557 return TYPE_TAG_NAME (type);
1ab3bf1b 558
b2bebdb0
JK
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);
1ab3bf1b
JG
563}
564
565/* Lookup a primitive type named NAME.
566 Return zero if NAME is not a primitive type.*/
567
568struct type *
569lookup_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 {
2e4964ad 576 if (STREQ ((**p) -> name, name))
1ab3bf1b
JG
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
588struct type *
589lookup_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
617struct type *
618lookup_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
a252e715
PB
628struct type *
629lookup_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
1ab3bf1b
JG
644/* Lookup a structure type named "struct NAME",
645 visible in lexical block BLOCK. */
646
647struct type *
648lookup_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 }
2640f7e1
JG
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));
1ab3bf1b
JG
666}
667
668/* Lookup a union type named "union NAME",
669 visible in lexical block BLOCK. */
670
671struct type *
672lookup_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 }
2640f7e1
JG
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));
1ab3bf1b
JG
690}
691
692/* Lookup an enum type named "enum NAME",
693 visible in lexical block BLOCK. */
694
695struct type *
696lookup_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 }
2640f7e1
JG
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));
1ab3bf1b
JG
713}
714
715/* Lookup a template type named "template NAME<TYPE>",
716 visible in lexical block BLOCK. */
717
718struct type *
719lookup_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
edf67bd1 744/* Given a type TYPE, lookup the type of the component of type named NAME.
45364c8a
FF
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
edf67bd1
MT
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. */
1ab3bf1b
JG
753
754struct type *
755lookup_struct_elt_type (type, name, noerr)
756 struct type *type;
757 char *name;
758 int noerr;
759{
760 int i;
761
d1f4065e
PB
762 for (;;)
763 {
764 CHECK_TYPEDEF (type);
765 if (TYPE_CODE (type) != TYPE_CODE_PTR
766 && TYPE_CODE (type) != TYPE_CODE_REF)
767 break;
5c5b5d4b 768 type = TYPE_TARGET_TYPE (type);
d1f4065e 769 }
5c5b5d4b 770
1ab3bf1b
JG
771 if (TYPE_CODE (type) != TYPE_CODE_STRUCT &&
772 TYPE_CODE (type) != TYPE_CODE_UNION)
773 {
774 target_terminal_ours ();
199b2450
TL
775 gdb_flush (gdb_stdout);
776 fprintf_unfiltered (gdb_stderr, "Type ");
777 type_print (type, "", gdb_stderr, -1);
1ab3bf1b
JG
778 error (" is not a structure or union type.");
779 }
780
45364c8a
FF
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. */
e7bf1152
RP
786 {
787 char *typename;
788
789 typename = type_name_no_tag (type);
790 if (typename != NULL && STREQ (typename, name))
791 return type;
792 }
45364c8a 793#endif
edf67bd1 794
1ab3bf1b
JG
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
2e4964ad 799 if (t_field_name && STREQ (t_field_name, name))
1ab3bf1b
JG
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
d112a0c6 810 t = lookup_struct_elt_type (TYPE_BASECLASS (type, i), name, noerr);
1ab3bf1b
JG
811 if (t != NULL)
812 {
813 return t;
814 }
815 }
816
817 if (noerr)
818 {
819 return NULL;
820 }
821
822 target_terminal_ours ();
199b2450
TL
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);
1ab3bf1b
JG
828 error (".");
829 return (struct type *)-1; /* For lint */
830}
831
ac88287f
JK
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. */
1ab3bf1b
JG
838
839void
840fill_in_vptr_fieldno (type)
841 struct type *type;
842{
d1f4065e 843 CHECK_TYPEDEF (type);
ac88287f 844
1ab3bf1b
JG
845 if (TYPE_VPTR_FIELDNO (type) < 0)
846 {
847 int i;
edf67bd1
MT
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++)
1ab3bf1b
JG
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
dda398c3
JK
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.
1ab3bf1b
JG
875
876 This used to be coded as a macro, but I don't think it is called
dda398c3 877 often enough to merit such treatment. */
1ab3bf1b
JG
878
879struct complaint stub_noname_complaint =
880 {"stub type has NULL name", 0, 0};
881
d1f4065e
PB
882struct type *
883check_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 {
7ef89313
PB
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);
d1f4065e
PB
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). */
d1f4065e
PB
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
7ef89313 919 if ((TYPE_FLAGS(type) & TYPE_FLAG_STUB) && ! currently_reading_symtab)
1ab3bf1b
JG
920 {
921 char* name = type_name_no_tag (type);
065525e3
JK
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). */
1ab3bf1b
JG
926 struct symbol *sym;
927 if (name == NULL)
928 {
51b80b00 929 complain (&stub_noname_complaint);
d1f4065e 930 return type;
1ab3bf1b
JG
931 }
932 sym = lookup_symbol (name, 0, STRUCT_NAMESPACE, 0,
933 (struct symtab **) NULL);
934 if (sym)
935 {
dda398c3
JK
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;
d1f4065e 945 struct type *target_type = check_typedef (TYPE_TARGET_TYPE (type));
dda398c3 946
d1f4065e 947 if (TYPE_FLAGS (target_type) & TYPE_FLAG_STUB)
e55a5796
PB
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))
dda398c3
JK
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)
d1f4065e 960 * TYPE_LENGTH (target_type));
dda398c3 961 TYPE_FLAGS (type) &= ~TYPE_FLAG_TARGET_STUB;
1ab3bf1b 962 }
e55a5796
PB
963 else if (TYPE_CODE (type) == TYPE_CODE_RANGE)
964 {
d1f4065e 965 TYPE_LENGTH (type) = TYPE_LENGTH (target_type);
e55a5796
PB
966 TYPE_FLAGS (type) &= ~TYPE_FLAG_TARGET_STUB;
967 }
1ab3bf1b 968 }
d1f4065e
PB
969 /* Cache TYPE_LENGTH for future use. */
970 TYPE_LENGTH (orig_type) = TYPE_LENGTH (type);
971 return type;
1ab3bf1b
JG
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
984void
985check_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);
8050a57b
FF
992 char *demangled_name = cplus_demangle (mangled_name,
993 DMGL_PARAMS | DMGL_ANSI);
1ab3bf1b
JG
994 char *argtypetext, *p;
995 int depth = 0, argcount = 1;
996 struct type **argtypes;
997 struct type *mtype;
998
e045712f
BK
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);
1ab3bf1b
JG
1005
1006 /* Now, read in the parameters that define this type. */
e045712f
BK
1007 p += 1;
1008 argtypetext = p;
1ab3bf1b
JG
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 **)
dac9734e 1031 TYPE_ALLOC (type, (argcount + 2) * sizeof (struct type *));
1ab3bf1b 1032 p = argtypetext;
e552788b 1033 /* FIXME: This is wrong for static member functions. */
1ab3bf1b
JG
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 {
393e55ba
JK
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 }
1ab3bf1b
JG
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
c0f1085b 1067 if (p[-2] != '.') /* Not '...' */
1ab3bf1b 1068 {
c0f1085b 1069 argtypes[argcount] = builtin_type_void; /* List terminator */
1ab3bf1b
JG
1070 }
1071 else
1072 {
c0f1085b 1073 argtypes[argcount] = NULL; /* Ellist terminator */
1ab3bf1b
JG
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
0213d96f 1089const struct cplus_struct_type cplus_struct_default;
1ab3bf1b
JG
1090
1091void
1092allocate_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 *)
dac9734e 1098 TYPE_ALLOC (type, sizeof (struct cplus_struct_type));
1ab3bf1b
JG
1099 *(TYPE_CPLUS_SPECIFIC(type)) = cplus_struct_default;
1100 }
1101}
1102
50e0dc41
FF
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). */
1ab3bf1b
JG
1109
1110struct type *
1111init_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;
50e0dc41
FF
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 }
1ab3bf1b
JG
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
bf229b4e
FF
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
1ab3bf1b
JG
1163
1164struct type *
1165lookup_fundamental_type (objfile, typeid)
1166 struct objfile *objfile;
1167 int typeid;
1168{
1ab3bf1b
JG
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 }
bf229b4e
FF
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)
1ab3bf1b 1181 {
bf229b4e
FF
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);
2dd30c72 1186 OBJSTAT (objfile, n_types += FT_NUM_MEMBERS);
1ab3bf1b 1187 }
bf229b4e
FF
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);
1ab3bf1b
JG
1199}
1200
9c036bd8
JK
1201int
1202can_dereference (t)
1203 struct type *t;
1204{
1205 /* FIXME: Should we return true for references as well as pointers? */
d1f4065e 1206 CHECK_TYPEDEF (t);
9c036bd8
JK
1207 return
1208 (t != NULL
1209 && TYPE_CODE (t) == TYPE_CODE_PTR
1210 && TYPE_CODE (TYPE_TARGET_TYPE (t)) != TYPE_CODE_VOID);
1211}
1212
f91a9e05
PB
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
1219int
1220chill_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
0239d9b3
FF
1230#if MAINTENANCE_CMDS
1231
8050a57b
FF
1232static void
1233print_bit_vector (bits, nbits)
1234 B_TYPE *bits;
1235 int nbits;
0239d9b3 1236{
8050a57b
FF
1237 int bitno;
1238
1239 for (bitno = 0; bitno < nbits; bitno++)
0239d9b3 1240 {
8050a57b
FF
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 }
0239d9b3 1253 }
8050a57b
FF
1254}
1255
c0f1085b
FF
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
1262static void
1263print_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
1280static void
1281dump_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
833e0d94
JK
1289 printfi_filtered (spaces, "fn_fieldlists ");
1290 gdb_print_address (TYPE_FN_FIELDLISTS (type), gdb_stdout);
1291 printf_filtered ("\n");
c0f1085b
FF
1292 for (method_idx = 0; method_idx < TYPE_NFN_FIELDS (type); method_idx++)
1293 {
1294 f = TYPE_FN_FIELDLIST1 (type, method_idx);
833e0d94 1295 printfi_filtered (spaces + 2, "[%d] name '%s' (",
c0f1085b 1296 method_idx,
833e0d94
JK
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));
c0f1085b
FF
1302 for (overload_idx = 0;
1303 overload_idx < TYPE_FN_FIELDLIST_LENGTH (type, method_idx);
1304 overload_idx++)
1305 {
833e0d94 1306 printfi_filtered (spaces + 4, "[%d] physname '%s' (",
c0f1085b 1307 overload_idx,
833e0d94 1308 TYPE_FN_FIELD_PHYSNAME (f, overload_idx));
5e678752
JK
1309 gdb_print_address (TYPE_FN_FIELD_PHYSNAME (f, overload_idx),
1310 gdb_stdout);
833e0d94
JK
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
c0f1085b
FF
1316 recursive_dump_type (TYPE_FN_FIELD_TYPE (f, overload_idx),
1317 spaces + 8 + 2);
833e0d94
JK
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
c0f1085b 1323 print_arg_types (TYPE_FN_FIELD_ARGS (f, overload_idx), spaces);
833e0d94
JK
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
c0f1085b
FF
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));
d07734e3 1339 printfi_filtered (spaces + 8, "voffset %u\n",
c0f1085b
FF
1340 TYPE_FN_FIELD_VOFFSET (f, overload_idx));
1341 }
1342 }
1343}
1344
8050a57b
FF
1345static void
1346print_cplus_stuff (type, spaces)
1347 struct type *type;
1348 int spaces;
1349{
c0f1085b 1350 printfi_filtered (spaces, "n_baseclasses %d\n",
8050a57b 1351 TYPE_N_BASECLASSES (type));
c0f1085b
FF
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));
8050a57b 1356 if (TYPE_N_BASECLASSES (type) > 0)
0239d9b3 1357 {
833e0d94
JK
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
8050a57b
FF
1363 print_bit_vector (TYPE_FIELD_VIRTUAL_BITS (type),
1364 TYPE_N_BASECLASSES (type));
1365 puts_filtered ("\n");
0239d9b3 1366 }
8050a57b 1367 if (TYPE_NFIELDS (type) > 0)
0239d9b3 1368 {
8050a57b
FF
1369 if (TYPE_FIELD_PRIVATE_BITS (type) != NULL)
1370 {
833e0d94
JK
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 (")");
8050a57b
FF
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)
0239d9b3 1380 {
833e0d94
JK
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 (")");
8050a57b
FF
1385 print_bit_vector (TYPE_FIELD_PROTECTED_BITS (type),
1386 TYPE_NFIELDS (type));
1387 puts_filtered ("\n");
0239d9b3
FF
1388 }
1389 }
c0f1085b
FF
1390 if (TYPE_NFN_FIELDS (type) > 0)
1391 {
1392 dump_fn_fieldlists (type, spaces);
1393 }
8050a57b
FF
1394}
1395
2447e9af
PS
1396static struct obstack dont_print_type_obstack;
1397
8050a57b
FF
1398void
1399recursive_dump_type (type, spaces)
1400 struct type *type;
1401 int spaces;
1402{
1403 int idx;
0239d9b3 1404
2447e9af
PS
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
833e0d94
JK
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");
85999c05 1438 if (TYPE_TAG_NAME (type) != NULL)
833e0d94
JK
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 }
c0f1085b 1445 printfi_filtered (spaces, "code 0x%x ", TYPE_CODE (type));
8050a57b 1446 switch (TYPE_CODE (type))
0239d9b3 1447 {
8050a57b 1448 case TYPE_CODE_UNDEF:
c0f1085b 1449 printf_filtered ("(TYPE_CODE_UNDEF)");
8050a57b
FF
1450 break;
1451 case TYPE_CODE_PTR:
c0f1085b 1452 printf_filtered ("(TYPE_CODE_PTR)");
8050a57b
FF
1453 break;
1454 case TYPE_CODE_ARRAY:
c0f1085b 1455 printf_filtered ("(TYPE_CODE_ARRAY)");
8050a57b
FF
1456 break;
1457 case TYPE_CODE_STRUCT:
c0f1085b 1458 printf_filtered ("(TYPE_CODE_STRUCT)");
8050a57b
FF
1459 break;
1460 case TYPE_CODE_UNION:
c0f1085b 1461 printf_filtered ("(TYPE_CODE_UNION)");
8050a57b
FF
1462 break;
1463 case TYPE_CODE_ENUM:
c0f1085b 1464 printf_filtered ("(TYPE_CODE_ENUM)");
8050a57b
FF
1465 break;
1466 case TYPE_CODE_FUNC:
c0f1085b 1467 printf_filtered ("(TYPE_CODE_FUNC)");
8050a57b
FF
1468 break;
1469 case TYPE_CODE_INT:
c0f1085b 1470 printf_filtered ("(TYPE_CODE_INT)");
8050a57b
FF
1471 break;
1472 case TYPE_CODE_FLT:
c0f1085b 1473 printf_filtered ("(TYPE_CODE_FLT)");
8050a57b
FF
1474 break;
1475 case TYPE_CODE_VOID:
c0f1085b 1476 printf_filtered ("(TYPE_CODE_VOID)");
8050a57b
FF
1477 break;
1478 case TYPE_CODE_SET:
c0f1085b 1479 printf_filtered ("(TYPE_CODE_SET)");
8050a57b
FF
1480 break;
1481 case TYPE_CODE_RANGE:
c0f1085b 1482 printf_filtered ("(TYPE_CODE_RANGE)");
8050a57b 1483 break;
c4413e2c
FF
1484 case TYPE_CODE_STRING:
1485 printf_filtered ("(TYPE_CODE_STRING)");
8050a57b
FF
1486 break;
1487 case TYPE_CODE_ERROR:
c0f1085b 1488 printf_filtered ("(TYPE_CODE_ERROR)");
8050a57b
FF
1489 break;
1490 case TYPE_CODE_MEMBER:
c0f1085b 1491 printf_filtered ("(TYPE_CODE_MEMBER)");
8050a57b
FF
1492 break;
1493 case TYPE_CODE_METHOD:
c0f1085b 1494 printf_filtered ("(TYPE_CODE_METHOD)");
8050a57b
FF
1495 break;
1496 case TYPE_CODE_REF:
c0f1085b 1497 printf_filtered ("(TYPE_CODE_REF)");
8050a57b
FF
1498 break;
1499 case TYPE_CODE_CHAR:
c0f1085b 1500 printf_filtered ("(TYPE_CODE_CHAR)");
8050a57b
FF
1501 break;
1502 case TYPE_CODE_BOOL:
c0f1085b 1503 printf_filtered ("(TYPE_CODE_BOOL)");
8050a57b 1504 break;
d1f4065e
PB
1505 case TYPE_CODE_TYPEDEF:
1506 printf_filtered ("(TYPE_CODE_TYPEDEF)");
1507 break;
8050a57b 1508 default:
c0f1085b 1509 printf_filtered ("(UNKNOWN TYPE CODE)");
8050a57b 1510 break;
0239d9b3 1511 }
8050a57b 1512 puts_filtered ("\n");
c0f1085b 1513 printfi_filtered (spaces, "length %d\n", TYPE_LENGTH (type));
833e0d94
JK
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");
8050a57b
FF
1520 if (TYPE_TARGET_TYPE (type) != NULL)
1521 {
1522 recursive_dump_type (TYPE_TARGET_TYPE (type), spaces + 2);
1523 }
833e0d94
JK
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");
c0f1085b 1530 printfi_filtered (spaces, "flags 0x%x", TYPE_FLAGS (type));
8050a57b
FF
1531 if (TYPE_FLAGS (type) & TYPE_FLAG_UNSIGNED)
1532 {
1533 puts_filtered (" TYPE_FLAG_UNSIGNED");
1534 }
8050a57b
FF
1535 if (TYPE_FLAGS (type) & TYPE_FLAG_STUB)
1536 {
1537 puts_filtered (" TYPE_FLAG_STUB");
1538 }
1539 puts_filtered ("\n");
833e0d94 1540 printfi_filtered (spaces, "nfields %d ", TYPE_NFIELDS (type));
5e678752 1541 gdb_print_address (TYPE_FIELDS (type), gdb_stdout);
833e0d94 1542 puts_filtered ("\n");
8050a57b
FF
1543 for (idx = 0; idx < TYPE_NFIELDS (type); idx++)
1544 {
1545 printfi_filtered (spaces + 2,
5e678752 1546 "[%d] bitpos %d bitsize %d type ",
8050a57b 1547 idx, TYPE_FIELD_BITPOS (type, idx),
833e0d94
JK
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>");
5e678752 1554 gdb_print_address (TYPE_FIELD_NAME (type, idx), gdb_stdout);
833e0d94 1555 printf_filtered (")\n");
8050a57b
FF
1556 if (TYPE_FIELD_TYPE (type, idx) != NULL)
1557 {
1558 recursive_dump_type (TYPE_FIELD_TYPE (type, idx), spaces + 4);
1559 }
1560 }
833e0d94
JK
1561 printfi_filtered (spaces, "vptr_basetype ");
1562 gdb_print_address (TYPE_VPTR_BASETYPE (type), gdb_stdout);
1563 puts_filtered ("\n");
8050a57b
FF
1564 if (TYPE_VPTR_BASETYPE (type) != NULL)
1565 {
1566 recursive_dump_type (TYPE_VPTR_BASETYPE (type), spaces + 2);
1567 }
c0f1085b 1568 printfi_filtered (spaces, "vptr_fieldno %d\n", TYPE_VPTR_FIELDNO (type));
8050a57b 1569 switch (TYPE_CODE (type))
0239d9b3
FF
1570 {
1571 case TYPE_CODE_METHOD:
1572 case TYPE_CODE_FUNC:
833e0d94 1573 printfi_filtered (spaces, "arg_types ");
5e678752 1574 gdb_print_address (TYPE_ARG_TYPES (type), gdb_stdout);
833e0d94 1575 puts_filtered ("\n");
c0f1085b 1576 print_arg_types (TYPE_ARG_TYPES (type), spaces);
0239d9b3
FF
1577 break;
1578
1579 case TYPE_CODE_STRUCT:
833e0d94 1580 printfi_filtered (spaces, "cplus_stuff ");
5e678752 1581 gdb_print_address (TYPE_CPLUS_SPECIFIC (type), gdb_stdout);
833e0d94 1582 puts_filtered ("\n");
8050a57b 1583 print_cplus_stuff (type, spaces);
0239d9b3 1584 break;
d07734e3
FF
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. */
833e0d94 1590 printfi_filtered (spaces, "type_specific ");
5e678752 1591 gdb_print_address (TYPE_CPLUS_SPECIFIC (type), gdb_stdout);
d07734e3
FF
1592 if (TYPE_CPLUS_SPECIFIC (type) != NULL)
1593 {
1594 printf_filtered (" (unknown data form)");
1595 }
1596 printf_filtered ("\n");
1597 break;
1598
0239d9b3 1599 }
2447e9af
PS
1600 if (spaces == 0)
1601 obstack_free (&dont_print_type_obstack, NULL);
0239d9b3
FF
1602}
1603
1604#endif /* MAINTENANCE_CMDS */
c4413e2c
FF
1605
1606void
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,
dda398c3 1619 0,
c4413e2c
FF
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 =
ead95f8a 1670 init_type (TYPE_CODE_COMPLEX, 2 * TARGET_FLOAT_BIT / TARGET_CHAR_BIT,
c4413e2c
FF
1671 0,
1672 "complex", (struct objfile *) NULL);
ead95f8a 1673 TYPE_TARGET_TYPE (builtin_type_complex) = builtin_type_float;
c4413e2c 1674 builtin_type_double_complex =
ead95f8a 1675 init_type (TYPE_CODE_COMPLEX, 2 * TARGET_DOUBLE_BIT / TARGET_CHAR_BIT,
c4413e2c
FF
1676 0,
1677 "double complex", (struct objfile *) NULL);
ead95f8a 1678 TYPE_TARGET_TYPE (builtin_type_double_complex) = builtin_type_double;
c4413e2c
FF
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.270085 seconds and 4 git commands to generate.