1 /* Support routines for manipulating internal types for GDB.
3 Copyright (C) 1992-2015 Free Software Foundation, Inc.
5 Contributed by Cygnus Support, using pieces from other GDB modules.
7 This file is part of GDB.
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3 of the License, or
12 (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
28 #include "expression.h"
33 #include "complaints.h"
37 #include "cp-support.h"
39 #include "dwarf2loc.h"
42 /* Initialize BADNESS constants. */
44 const struct rank LENGTH_MISMATCH_BADNESS
= {100,0};
46 const struct rank TOO_FEW_PARAMS_BADNESS
= {100,0};
47 const struct rank INCOMPATIBLE_TYPE_BADNESS
= {100,0};
49 const struct rank EXACT_MATCH_BADNESS
= {0,0};
51 const struct rank INTEGER_PROMOTION_BADNESS
= {1,0};
52 const struct rank FLOAT_PROMOTION_BADNESS
= {1,0};
53 const struct rank BASE_PTR_CONVERSION_BADNESS
= {1,0};
54 const struct rank INTEGER_CONVERSION_BADNESS
= {2,0};
55 const struct rank FLOAT_CONVERSION_BADNESS
= {2,0};
56 const struct rank INT_FLOAT_CONVERSION_BADNESS
= {2,0};
57 const struct rank VOID_PTR_CONVERSION_BADNESS
= {2,0};
58 const struct rank BOOL_CONVERSION_BADNESS
= {3,0};
59 const struct rank BASE_CONVERSION_BADNESS
= {2,0};
60 const struct rank REFERENCE_CONVERSION_BADNESS
= {2,0};
61 const struct rank NULL_POINTER_CONVERSION_BADNESS
= {2,0};
62 const struct rank NS_POINTER_CONVERSION_BADNESS
= {10,0};
63 const struct rank NS_INTEGER_POINTER_CONVERSION_BADNESS
= {3,0};
65 /* Floatformat pairs. */
66 const struct floatformat
*floatformats_ieee_half
[BFD_ENDIAN_UNKNOWN
] = {
67 &floatformat_ieee_half_big
,
68 &floatformat_ieee_half_little
70 const struct floatformat
*floatformats_ieee_single
[BFD_ENDIAN_UNKNOWN
] = {
71 &floatformat_ieee_single_big
,
72 &floatformat_ieee_single_little
74 const struct floatformat
*floatformats_ieee_double
[BFD_ENDIAN_UNKNOWN
] = {
75 &floatformat_ieee_double_big
,
76 &floatformat_ieee_double_little
78 const struct floatformat
*floatformats_ieee_double_littlebyte_bigword
[BFD_ENDIAN_UNKNOWN
] = {
79 &floatformat_ieee_double_big
,
80 &floatformat_ieee_double_littlebyte_bigword
82 const struct floatformat
*floatformats_i387_ext
[BFD_ENDIAN_UNKNOWN
] = {
83 &floatformat_i387_ext
,
86 const struct floatformat
*floatformats_m68881_ext
[BFD_ENDIAN_UNKNOWN
] = {
87 &floatformat_m68881_ext
,
88 &floatformat_m68881_ext
90 const struct floatformat
*floatformats_arm_ext
[BFD_ENDIAN_UNKNOWN
] = {
91 &floatformat_arm_ext_big
,
92 &floatformat_arm_ext_littlebyte_bigword
94 const struct floatformat
*floatformats_ia64_spill
[BFD_ENDIAN_UNKNOWN
] = {
95 &floatformat_ia64_spill_big
,
96 &floatformat_ia64_spill_little
98 const struct floatformat
*floatformats_ia64_quad
[BFD_ENDIAN_UNKNOWN
] = {
99 &floatformat_ia64_quad_big
,
100 &floatformat_ia64_quad_little
102 const struct floatformat
*floatformats_vax_f
[BFD_ENDIAN_UNKNOWN
] = {
106 const struct floatformat
*floatformats_vax_d
[BFD_ENDIAN_UNKNOWN
] = {
110 const struct floatformat
*floatformats_ibm_long_double
[BFD_ENDIAN_UNKNOWN
] = {
111 &floatformat_ibm_long_double_big
,
112 &floatformat_ibm_long_double_little
115 /* Should opaque types be resolved? */
117 static int opaque_type_resolution
= 1;
119 /* A flag to enable printing of debugging information of C++
122 unsigned int overload_debug
= 0;
124 /* A flag to enable strict type checking. */
126 static int strict_type_checking
= 1;
128 /* A function to show whether opaque types are resolved. */
131 show_opaque_type_resolution (struct ui_file
*file
, int from_tty
,
132 struct cmd_list_element
*c
,
135 fprintf_filtered (file
, _("Resolution of opaque struct/class/union types "
136 "(if set before loading symbols) is %s.\n"),
140 /* A function to show whether C++ overload debugging is enabled. */
143 show_overload_debug (struct ui_file
*file
, int from_tty
,
144 struct cmd_list_element
*c
, const char *value
)
146 fprintf_filtered (file
, _("Debugging of C++ overloading is %s.\n"),
150 /* A function to show the status of strict type checking. */
153 show_strict_type_checking (struct ui_file
*file
, int from_tty
,
154 struct cmd_list_element
*c
, const char *value
)
156 fprintf_filtered (file
, _("Strict type checking is %s.\n"), value
);
160 /* Allocate a new OBJFILE-associated type structure and fill it
161 with some defaults. Space for the type structure is allocated
162 on the objfile's objfile_obstack. */
165 alloc_type (struct objfile
*objfile
)
169 gdb_assert (objfile
!= NULL
);
171 /* Alloc the structure and start off with all fields zeroed. */
172 type
= OBSTACK_ZALLOC (&objfile
->objfile_obstack
, struct type
);
173 TYPE_MAIN_TYPE (type
) = OBSTACK_ZALLOC (&objfile
->objfile_obstack
,
175 OBJSTAT (objfile
, n_types
++);
177 TYPE_OBJFILE_OWNED (type
) = 1;
178 TYPE_OWNER (type
).objfile
= objfile
;
180 /* Initialize the fields that might not be zero. */
182 TYPE_CODE (type
) = TYPE_CODE_UNDEF
;
183 TYPE_CHAIN (type
) = type
; /* Chain back to itself. */
188 /* Allocate a new GDBARCH-associated type structure and fill it
189 with some defaults. Space for the type structure is allocated
190 on the obstack associated with GDBARCH. */
193 alloc_type_arch (struct gdbarch
*gdbarch
)
197 gdb_assert (gdbarch
!= NULL
);
199 /* Alloc the structure and start off with all fields zeroed. */
201 type
= GDBARCH_OBSTACK_ZALLOC (gdbarch
, struct type
);
202 TYPE_MAIN_TYPE (type
) = GDBARCH_OBSTACK_ZALLOC (gdbarch
, struct main_type
);
204 TYPE_OBJFILE_OWNED (type
) = 0;
205 TYPE_OWNER (type
).gdbarch
= gdbarch
;
207 /* Initialize the fields that might not be zero. */
209 TYPE_CODE (type
) = TYPE_CODE_UNDEF
;
210 TYPE_CHAIN (type
) = type
; /* Chain back to itself. */
215 /* If TYPE is objfile-associated, allocate a new type structure
216 associated with the same objfile. If TYPE is gdbarch-associated,
217 allocate a new type structure associated with the same gdbarch. */
220 alloc_type_copy (const struct type
*type
)
222 if (TYPE_OBJFILE_OWNED (type
))
223 return alloc_type (TYPE_OWNER (type
).objfile
);
225 return alloc_type_arch (TYPE_OWNER (type
).gdbarch
);
228 /* If TYPE is gdbarch-associated, return that architecture.
229 If TYPE is objfile-associated, return that objfile's architecture. */
232 get_type_arch (const struct type
*type
)
234 if (TYPE_OBJFILE_OWNED (type
))
235 return get_objfile_arch (TYPE_OWNER (type
).objfile
);
237 return TYPE_OWNER (type
).gdbarch
;
240 /* See gdbtypes.h. */
243 get_target_type (struct type
*type
)
247 type
= TYPE_TARGET_TYPE (type
);
249 type
= check_typedef (type
);
255 /* See gdbtypes.h. */
258 type_length_units (struct type
*type
)
260 struct gdbarch
*arch
= get_type_arch (type
);
261 int unit_size
= gdbarch_addressable_memory_unit_size (arch
);
263 return TYPE_LENGTH (type
) / unit_size
;
266 /* Alloc a new type instance structure, fill it with some defaults,
267 and point it at OLDTYPE. Allocate the new type instance from the
268 same place as OLDTYPE. */
271 alloc_type_instance (struct type
*oldtype
)
275 /* Allocate the structure. */
277 if (! TYPE_OBJFILE_OWNED (oldtype
))
278 type
= XCNEW (struct type
);
280 type
= OBSTACK_ZALLOC (&TYPE_OBJFILE (oldtype
)->objfile_obstack
,
283 TYPE_MAIN_TYPE (type
) = TYPE_MAIN_TYPE (oldtype
);
285 TYPE_CHAIN (type
) = type
; /* Chain back to itself for now. */
290 /* Clear all remnants of the previous type at TYPE, in preparation for
291 replacing it with something else. Preserve owner information. */
294 smash_type (struct type
*type
)
296 int objfile_owned
= TYPE_OBJFILE_OWNED (type
);
297 union type_owner owner
= TYPE_OWNER (type
);
299 memset (TYPE_MAIN_TYPE (type
), 0, sizeof (struct main_type
));
301 /* Restore owner information. */
302 TYPE_OBJFILE_OWNED (type
) = objfile_owned
;
303 TYPE_OWNER (type
) = owner
;
305 /* For now, delete the rings. */
306 TYPE_CHAIN (type
) = type
;
308 /* For now, leave the pointer/reference types alone. */
311 /* Lookup a pointer to a type TYPE. TYPEPTR, if nonzero, points
312 to a pointer to memory where the pointer type should be stored.
313 If *TYPEPTR is zero, update it to point to the pointer type we return.
314 We allocate new memory if needed. */
317 make_pointer_type (struct type
*type
, struct type
**typeptr
)
319 struct type
*ntype
; /* New type */
322 ntype
= TYPE_POINTER_TYPE (type
);
327 return ntype
; /* Don't care about alloc,
328 and have new type. */
329 else if (*typeptr
== 0)
331 *typeptr
= ntype
; /* Tracking alloc, and have new type. */
336 if (typeptr
== 0 || *typeptr
== 0) /* We'll need to allocate one. */
338 ntype
= alloc_type_copy (type
);
342 else /* We have storage, but need to reset it. */
345 chain
= TYPE_CHAIN (ntype
);
347 TYPE_CHAIN (ntype
) = chain
;
350 TYPE_TARGET_TYPE (ntype
) = type
;
351 TYPE_POINTER_TYPE (type
) = ntype
;
353 /* FIXME! Assumes the machine has only one representation for pointers! */
356 = gdbarch_ptr_bit (get_type_arch (type
)) / TARGET_CHAR_BIT
;
357 TYPE_CODE (ntype
) = TYPE_CODE_PTR
;
359 /* Mark pointers as unsigned. The target converts between pointers
360 and addresses (CORE_ADDRs) using gdbarch_pointer_to_address and
361 gdbarch_address_to_pointer. */
362 TYPE_UNSIGNED (ntype
) = 1;
364 /* Update the length of all the other variants of this type. */
365 chain
= TYPE_CHAIN (ntype
);
366 while (chain
!= ntype
)
368 TYPE_LENGTH (chain
) = TYPE_LENGTH (ntype
);
369 chain
= TYPE_CHAIN (chain
);
375 /* Given a type TYPE, return a type of pointers to that type.
376 May need to construct such a type if this is the first use. */
379 lookup_pointer_type (struct type
*type
)
381 return make_pointer_type (type
, (struct type
**) 0);
384 /* Lookup a C++ `reference' to a type TYPE. TYPEPTR, if nonzero,
385 points to a pointer to memory where the reference type should be
386 stored. If *TYPEPTR is zero, update it to point to the reference
387 type we return. We allocate new memory if needed. */
390 make_reference_type (struct type
*type
, struct type
**typeptr
)
392 struct type
*ntype
; /* New type */
395 ntype
= TYPE_REFERENCE_TYPE (type
);
400 return ntype
; /* Don't care about alloc,
401 and have new type. */
402 else if (*typeptr
== 0)
404 *typeptr
= ntype
; /* Tracking alloc, and have new type. */
409 if (typeptr
== 0 || *typeptr
== 0) /* We'll need to allocate one. */
411 ntype
= alloc_type_copy (type
);
415 else /* We have storage, but need to reset it. */
418 chain
= TYPE_CHAIN (ntype
);
420 TYPE_CHAIN (ntype
) = chain
;
423 TYPE_TARGET_TYPE (ntype
) = type
;
424 TYPE_REFERENCE_TYPE (type
) = ntype
;
426 /* FIXME! Assume the machine has only one representation for
427 references, and that it matches the (only) representation for
430 TYPE_LENGTH (ntype
) =
431 gdbarch_ptr_bit (get_type_arch (type
)) / TARGET_CHAR_BIT
;
432 TYPE_CODE (ntype
) = TYPE_CODE_REF
;
434 if (!TYPE_REFERENCE_TYPE (type
)) /* Remember it, if don't have one. */
435 TYPE_REFERENCE_TYPE (type
) = ntype
;
437 /* Update the length of all the other variants of this type. */
438 chain
= TYPE_CHAIN (ntype
);
439 while (chain
!= ntype
)
441 TYPE_LENGTH (chain
) = TYPE_LENGTH (ntype
);
442 chain
= TYPE_CHAIN (chain
);
448 /* Same as above, but caller doesn't care about memory allocation
452 lookup_reference_type (struct type
*type
)
454 return make_reference_type (type
, (struct type
**) 0);
457 /* Lookup a function type that returns type TYPE. TYPEPTR, if
458 nonzero, points to a pointer to memory where the function type
459 should be stored. If *TYPEPTR is zero, update it to point to the
460 function type we return. We allocate new memory if needed. */
463 make_function_type (struct type
*type
, struct type
**typeptr
)
465 struct type
*ntype
; /* New type */
467 if (typeptr
== 0 || *typeptr
== 0) /* We'll need to allocate one. */
469 ntype
= alloc_type_copy (type
);
473 else /* We have storage, but need to reset it. */
479 TYPE_TARGET_TYPE (ntype
) = type
;
481 TYPE_LENGTH (ntype
) = 1;
482 TYPE_CODE (ntype
) = TYPE_CODE_FUNC
;
484 INIT_FUNC_SPECIFIC (ntype
);
489 /* Given a type TYPE, return a type of functions that return that type.
490 May need to construct such a type if this is the first use. */
493 lookup_function_type (struct type
*type
)
495 return make_function_type (type
, (struct type
**) 0);
498 /* Given a type TYPE and argument types, return the appropriate
499 function type. If the final type in PARAM_TYPES is NULL, make a
503 lookup_function_type_with_arguments (struct type
*type
,
505 struct type
**param_types
)
507 struct type
*fn
= make_function_type (type
, (struct type
**) 0);
512 if (param_types
[nparams
- 1] == NULL
)
515 TYPE_VARARGS (fn
) = 1;
517 else if (TYPE_CODE (check_typedef (param_types
[nparams
- 1]))
521 /* Caller should have ensured this. */
522 gdb_assert (nparams
== 0);
523 TYPE_PROTOTYPED (fn
) = 1;
527 TYPE_NFIELDS (fn
) = nparams
;
529 = (struct field
*) TYPE_ZALLOC (fn
, nparams
* sizeof (struct field
));
530 for (i
= 0; i
< nparams
; ++i
)
531 TYPE_FIELD_TYPE (fn
, i
) = param_types
[i
];
536 /* Identify address space identifier by name --
537 return the integer flag defined in gdbtypes.h. */
540 address_space_name_to_int (struct gdbarch
*gdbarch
, char *space_identifier
)
544 /* Check for known address space delimiters. */
545 if (!strcmp (space_identifier
, "code"))
546 return TYPE_INSTANCE_FLAG_CODE_SPACE
;
547 else if (!strcmp (space_identifier
, "data"))
548 return TYPE_INSTANCE_FLAG_DATA_SPACE
;
549 else if (gdbarch_address_class_name_to_type_flags_p (gdbarch
)
550 && gdbarch_address_class_name_to_type_flags (gdbarch
,
555 error (_("Unknown address space specifier: \"%s\""), space_identifier
);
558 /* Identify address space identifier by integer flag as defined in
559 gdbtypes.h -- return the string version of the adress space name. */
562 address_space_int_to_name (struct gdbarch
*gdbarch
, int space_flag
)
564 if (space_flag
& TYPE_INSTANCE_FLAG_CODE_SPACE
)
566 else if (space_flag
& TYPE_INSTANCE_FLAG_DATA_SPACE
)
568 else if ((space_flag
& TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL
)
569 && gdbarch_address_class_type_flags_to_name_p (gdbarch
))
570 return gdbarch_address_class_type_flags_to_name (gdbarch
, space_flag
);
575 /* Create a new type with instance flags NEW_FLAGS, based on TYPE.
577 If STORAGE is non-NULL, create the new type instance there.
578 STORAGE must be in the same obstack as TYPE. */
581 make_qualified_type (struct type
*type
, int new_flags
,
582 struct type
*storage
)
589 if (TYPE_INSTANCE_FLAGS (ntype
) == new_flags
)
591 ntype
= TYPE_CHAIN (ntype
);
593 while (ntype
!= type
);
595 /* Create a new type instance. */
597 ntype
= alloc_type_instance (type
);
600 /* If STORAGE was provided, it had better be in the same objfile
601 as TYPE. Otherwise, we can't link it into TYPE's cv chain:
602 if one objfile is freed and the other kept, we'd have
603 dangling pointers. */
604 gdb_assert (TYPE_OBJFILE (type
) == TYPE_OBJFILE (storage
));
607 TYPE_MAIN_TYPE (ntype
) = TYPE_MAIN_TYPE (type
);
608 TYPE_CHAIN (ntype
) = ntype
;
611 /* Pointers or references to the original type are not relevant to
613 TYPE_POINTER_TYPE (ntype
) = (struct type
*) 0;
614 TYPE_REFERENCE_TYPE (ntype
) = (struct type
*) 0;
616 /* Chain the new qualified type to the old type. */
617 TYPE_CHAIN (ntype
) = TYPE_CHAIN (type
);
618 TYPE_CHAIN (type
) = ntype
;
620 /* Now set the instance flags and return the new type. */
621 TYPE_INSTANCE_FLAGS (ntype
) = new_flags
;
623 /* Set length of new type to that of the original type. */
624 TYPE_LENGTH (ntype
) = TYPE_LENGTH (type
);
629 /* Make an address-space-delimited variant of a type -- a type that
630 is identical to the one supplied except that it has an address
631 space attribute attached to it (such as "code" or "data").
633 The space attributes "code" and "data" are for Harvard
634 architectures. The address space attributes are for architectures
635 which have alternately sized pointers or pointers with alternate
639 make_type_with_address_space (struct type
*type
, int space_flag
)
641 int new_flags
= ((TYPE_INSTANCE_FLAGS (type
)
642 & ~(TYPE_INSTANCE_FLAG_CODE_SPACE
643 | TYPE_INSTANCE_FLAG_DATA_SPACE
644 | TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL
))
647 return make_qualified_type (type
, new_flags
, NULL
);
650 /* Make a "c-v" variant of a type -- a type that is identical to the
651 one supplied except that it may have const or volatile attributes
652 CNST is a flag for setting the const attribute
653 VOLTL is a flag for setting the volatile attribute
654 TYPE is the base type whose variant we are creating.
656 If TYPEPTR and *TYPEPTR are non-zero, then *TYPEPTR points to
657 storage to hold the new qualified type; *TYPEPTR and TYPE must be
658 in the same objfile. Otherwise, allocate fresh memory for the new
659 type whereever TYPE lives. If TYPEPTR is non-zero, set it to the
660 new type we construct. */
663 make_cv_type (int cnst
, int voltl
,
665 struct type
**typeptr
)
667 struct type
*ntype
; /* New type */
669 int new_flags
= (TYPE_INSTANCE_FLAGS (type
)
670 & ~(TYPE_INSTANCE_FLAG_CONST
671 | TYPE_INSTANCE_FLAG_VOLATILE
));
674 new_flags
|= TYPE_INSTANCE_FLAG_CONST
;
677 new_flags
|= TYPE_INSTANCE_FLAG_VOLATILE
;
679 if (typeptr
&& *typeptr
!= NULL
)
681 /* TYPE and *TYPEPTR must be in the same objfile. We can't have
682 a C-V variant chain that threads across objfiles: if one
683 objfile gets freed, then the other has a broken C-V chain.
685 This code used to try to copy over the main type from TYPE to
686 *TYPEPTR if they were in different objfiles, but that's
687 wrong, too: TYPE may have a field list or member function
688 lists, which refer to types of their own, etc. etc. The
689 whole shebang would need to be copied over recursively; you
690 can't have inter-objfile pointers. The only thing to do is
691 to leave stub types as stub types, and look them up afresh by
692 name each time you encounter them. */
693 gdb_assert (TYPE_OBJFILE (*typeptr
) == TYPE_OBJFILE (type
));
696 ntype
= make_qualified_type (type
, new_flags
,
697 typeptr
? *typeptr
: NULL
);
705 /* Make a 'restrict'-qualified version of TYPE. */
708 make_restrict_type (struct type
*type
)
710 return make_qualified_type (type
,
711 (TYPE_INSTANCE_FLAGS (type
)
712 | TYPE_INSTANCE_FLAG_RESTRICT
),
716 /* Make a type without const, volatile, or restrict. */
719 make_unqualified_type (struct type
*type
)
721 return make_qualified_type (type
,
722 (TYPE_INSTANCE_FLAGS (type
)
723 & ~(TYPE_INSTANCE_FLAG_CONST
724 | TYPE_INSTANCE_FLAG_VOLATILE
725 | TYPE_INSTANCE_FLAG_RESTRICT
)),
729 /* Make a '_Atomic'-qualified version of TYPE. */
732 make_atomic_type (struct type
*type
)
734 return make_qualified_type (type
,
735 (TYPE_INSTANCE_FLAGS (type
)
736 | TYPE_INSTANCE_FLAG_ATOMIC
),
740 /* Replace the contents of ntype with the type *type. This changes the
741 contents, rather than the pointer for TYPE_MAIN_TYPE (ntype); thus
742 the changes are propogated to all types in the TYPE_CHAIN.
744 In order to build recursive types, it's inevitable that we'll need
745 to update types in place --- but this sort of indiscriminate
746 smashing is ugly, and needs to be replaced with something more
747 controlled. TYPE_MAIN_TYPE is a step in this direction; it's not
748 clear if more steps are needed. */
751 replace_type (struct type
*ntype
, struct type
*type
)
755 /* These two types had better be in the same objfile. Otherwise,
756 the assignment of one type's main type structure to the other
757 will produce a type with references to objects (names; field
758 lists; etc.) allocated on an objfile other than its own. */
759 gdb_assert (TYPE_OBJFILE (ntype
) == TYPE_OBJFILE (ntype
));
761 *TYPE_MAIN_TYPE (ntype
) = *TYPE_MAIN_TYPE (type
);
763 /* The type length is not a part of the main type. Update it for
764 each type on the variant chain. */
768 /* Assert that this element of the chain has no address-class bits
769 set in its flags. Such type variants might have type lengths
770 which are supposed to be different from the non-address-class
771 variants. This assertion shouldn't ever be triggered because
772 symbol readers which do construct address-class variants don't
773 call replace_type(). */
774 gdb_assert (TYPE_ADDRESS_CLASS_ALL (chain
) == 0);
776 TYPE_LENGTH (chain
) = TYPE_LENGTH (type
);
777 chain
= TYPE_CHAIN (chain
);
779 while (ntype
!= chain
);
781 /* Assert that the two types have equivalent instance qualifiers.
782 This should be true for at least all of our debug readers. */
783 gdb_assert (TYPE_INSTANCE_FLAGS (ntype
) == TYPE_INSTANCE_FLAGS (type
));
786 /* Implement direct support for MEMBER_TYPE in GNU C++.
787 May need to construct such a type if this is the first use.
788 The TYPE is the type of the member. The DOMAIN is the type
789 of the aggregate that the member belongs to. */
792 lookup_memberptr_type (struct type
*type
, struct type
*domain
)
796 mtype
= alloc_type_copy (type
);
797 smash_to_memberptr_type (mtype
, domain
, type
);
801 /* Return a pointer-to-method type, for a method of type TO_TYPE. */
804 lookup_methodptr_type (struct type
*to_type
)
808 mtype
= alloc_type_copy (to_type
);
809 smash_to_methodptr_type (mtype
, to_type
);
813 /* Allocate a stub method whose return type is TYPE. This apparently
814 happens for speed of symbol reading, since parsing out the
815 arguments to the method is cpu-intensive, the way we are doing it.
816 So, we will fill in arguments later. This always returns a fresh
820 allocate_stub_method (struct type
*type
)
824 mtype
= alloc_type_copy (type
);
825 TYPE_CODE (mtype
) = TYPE_CODE_METHOD
;
826 TYPE_LENGTH (mtype
) = 1;
827 TYPE_STUB (mtype
) = 1;
828 TYPE_TARGET_TYPE (mtype
) = type
;
829 /* TYPE_SELF_TYPE (mtype) = unknown yet */
833 /* Create a range type with a dynamic range from LOW_BOUND to
834 HIGH_BOUND, inclusive. See create_range_type for further details. */
837 create_range_type (struct type
*result_type
, struct type
*index_type
,
838 const struct dynamic_prop
*low_bound
,
839 const struct dynamic_prop
*high_bound
)
841 if (result_type
== NULL
)
842 result_type
= alloc_type_copy (index_type
);
843 TYPE_CODE (result_type
) = TYPE_CODE_RANGE
;
844 TYPE_TARGET_TYPE (result_type
) = index_type
;
845 if (TYPE_STUB (index_type
))
846 TYPE_TARGET_STUB (result_type
) = 1;
848 TYPE_LENGTH (result_type
) = TYPE_LENGTH (check_typedef (index_type
));
850 TYPE_RANGE_DATA (result_type
) = (struct range_bounds
*)
851 TYPE_ZALLOC (result_type
, sizeof (struct range_bounds
));
852 TYPE_RANGE_DATA (result_type
)->low
= *low_bound
;
853 TYPE_RANGE_DATA (result_type
)->high
= *high_bound
;
855 if (low_bound
->kind
== PROP_CONST
&& low_bound
->data
.const_val
>= 0)
856 TYPE_UNSIGNED (result_type
) = 1;
858 /* Ada allows the declaration of range types whose upper bound is
859 less than the lower bound, so checking the lower bound is not
860 enough. Make sure we do not mark a range type whose upper bound
861 is negative as unsigned. */
862 if (high_bound
->kind
== PROP_CONST
&& high_bound
->data
.const_val
< 0)
863 TYPE_UNSIGNED (result_type
) = 0;
868 /* Create a range type using either a blank type supplied in
869 RESULT_TYPE, or creating a new type, inheriting the objfile from
872 Indices will be of type INDEX_TYPE, and will range from LOW_BOUND
873 to HIGH_BOUND, inclusive.
875 FIXME: Maybe we should check the TYPE_CODE of RESULT_TYPE to make
876 sure it is TYPE_CODE_UNDEF before we bash it into a range type? */
879 create_static_range_type (struct type
*result_type
, struct type
*index_type
,
880 LONGEST low_bound
, LONGEST high_bound
)
882 struct dynamic_prop low
, high
;
884 low
.kind
= PROP_CONST
;
885 low
.data
.const_val
= low_bound
;
887 high
.kind
= PROP_CONST
;
888 high
.data
.const_val
= high_bound
;
890 result_type
= create_range_type (result_type
, index_type
, &low
, &high
);
895 /* Predicate tests whether BOUNDS are static. Returns 1 if all bounds values
896 are static, otherwise returns 0. */
899 has_static_range (const struct range_bounds
*bounds
)
901 return (bounds
->low
.kind
== PROP_CONST
902 && bounds
->high
.kind
== PROP_CONST
);
906 /* Set *LOWP and *HIGHP to the lower and upper bounds of discrete type
907 TYPE. Return 1 if type is a range type, 0 if it is discrete (and
908 bounds will fit in LONGEST), or -1 otherwise. */
911 get_discrete_bounds (struct type
*type
, LONGEST
*lowp
, LONGEST
*highp
)
913 type
= check_typedef (type
);
914 switch (TYPE_CODE (type
))
916 case TYPE_CODE_RANGE
:
917 *lowp
= TYPE_LOW_BOUND (type
);
918 *highp
= TYPE_HIGH_BOUND (type
);
921 if (TYPE_NFIELDS (type
) > 0)
923 /* The enums may not be sorted by value, so search all
927 *lowp
= *highp
= TYPE_FIELD_ENUMVAL (type
, 0);
928 for (i
= 0; i
< TYPE_NFIELDS (type
); i
++)
930 if (TYPE_FIELD_ENUMVAL (type
, i
) < *lowp
)
931 *lowp
= TYPE_FIELD_ENUMVAL (type
, i
);
932 if (TYPE_FIELD_ENUMVAL (type
, i
) > *highp
)
933 *highp
= TYPE_FIELD_ENUMVAL (type
, i
);
936 /* Set unsigned indicator if warranted. */
939 TYPE_UNSIGNED (type
) = 1;
953 if (TYPE_LENGTH (type
) > sizeof (LONGEST
)) /* Too big */
955 if (!TYPE_UNSIGNED (type
))
957 *lowp
= -(1 << (TYPE_LENGTH (type
) * TARGET_CHAR_BIT
- 1));
961 /* ... fall through for unsigned ints ... */
964 /* This round-about calculation is to avoid shifting by
965 TYPE_LENGTH (type) * TARGET_CHAR_BIT, which will not work
966 if TYPE_LENGTH (type) == sizeof (LONGEST). */
967 *highp
= 1 << (TYPE_LENGTH (type
) * TARGET_CHAR_BIT
- 1);
968 *highp
= (*highp
- 1) | *highp
;
975 /* Assuming TYPE is a simple, non-empty array type, compute its upper
976 and lower bound. Save the low bound into LOW_BOUND if not NULL.
977 Save the high bound into HIGH_BOUND if not NULL.
979 Return 1 if the operation was successful. Return zero otherwise,
980 in which case the values of LOW_BOUND and HIGH_BOUNDS are unmodified.
982 We now simply use get_discrete_bounds call to get the values
983 of the low and high bounds.
984 get_discrete_bounds can return three values:
985 1, meaning that index is a range,
986 0, meaning that index is a discrete type,
987 or -1 for failure. */
990 get_array_bounds (struct type
*type
, LONGEST
*low_bound
, LONGEST
*high_bound
)
992 struct type
*index
= TYPE_INDEX_TYPE (type
);
1000 res
= get_discrete_bounds (index
, &low
, &high
);
1004 /* Check if the array bounds are undefined. */
1006 && ((low_bound
&& TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED (type
))
1007 || (high_bound
&& TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type
))))
1019 /* Assuming that TYPE is a discrete type and VAL is a valid integer
1020 representation of a value of this type, save the corresponding
1021 position number in POS.
1023 Its differs from VAL only in the case of enumeration types. In
1024 this case, the position number of the value of the first listed
1025 enumeration literal is zero; the position number of the value of
1026 each subsequent enumeration literal is one more than that of its
1027 predecessor in the list.
1029 Return 1 if the operation was successful. Return zero otherwise,
1030 in which case the value of POS is unmodified.
1034 discrete_position (struct type
*type
, LONGEST val
, LONGEST
*pos
)
1036 if (TYPE_CODE (type
) == TYPE_CODE_ENUM
)
1040 for (i
= 0; i
< TYPE_NFIELDS (type
); i
+= 1)
1042 if (val
== TYPE_FIELD_ENUMVAL (type
, i
))
1048 /* Invalid enumeration value. */
1058 /* Create an array type using either a blank type supplied in
1059 RESULT_TYPE, or creating a new type, inheriting the objfile from
1062 Elements will be of type ELEMENT_TYPE, the indices will be of type
1065 If BIT_STRIDE is not zero, build a packed array type whose element
1066 size is BIT_STRIDE. Otherwise, ignore this parameter.
1068 FIXME: Maybe we should check the TYPE_CODE of RESULT_TYPE to make
1069 sure it is TYPE_CODE_UNDEF before we bash it into an array
1073 create_array_type_with_stride (struct type
*result_type
,
1074 struct type
*element_type
,
1075 struct type
*range_type
,
1076 unsigned int bit_stride
)
1078 if (result_type
== NULL
)
1079 result_type
= alloc_type_copy (range_type
);
1081 TYPE_CODE (result_type
) = TYPE_CODE_ARRAY
;
1082 TYPE_TARGET_TYPE (result_type
) = element_type
;
1083 if (has_static_range (TYPE_RANGE_DATA (range_type
))
1084 && (!type_not_associated (result_type
)
1085 && !type_not_allocated (result_type
)))
1087 LONGEST low_bound
, high_bound
;
1089 if (get_discrete_bounds (range_type
, &low_bound
, &high_bound
) < 0)
1090 low_bound
= high_bound
= 0;
1091 element_type
= check_typedef (element_type
);
1092 /* Be careful when setting the array length. Ada arrays can be
1093 empty arrays with the high_bound being smaller than the low_bound.
1094 In such cases, the array length should be zero. */
1095 if (high_bound
< low_bound
)
1096 TYPE_LENGTH (result_type
) = 0;
1097 else if (bit_stride
> 0)
1098 TYPE_LENGTH (result_type
) =
1099 (bit_stride
* (high_bound
- low_bound
+ 1) + 7) / 8;
1101 TYPE_LENGTH (result_type
) =
1102 TYPE_LENGTH (element_type
) * (high_bound
- low_bound
+ 1);
1106 /* This type is dynamic and its length needs to be computed
1107 on demand. In the meantime, avoid leaving the TYPE_LENGTH
1108 undefined by setting it to zero. Although we are not expected
1109 to trust TYPE_LENGTH in this case, setting the size to zero
1110 allows us to avoid allocating objects of random sizes in case
1111 we accidently do. */
1112 TYPE_LENGTH (result_type
) = 0;
1115 TYPE_NFIELDS (result_type
) = 1;
1116 TYPE_FIELDS (result_type
) =
1117 (struct field
*) TYPE_ZALLOC (result_type
, sizeof (struct field
));
1118 TYPE_INDEX_TYPE (result_type
) = range_type
;
1120 TYPE_FIELD_BITSIZE (result_type
, 0) = bit_stride
;
1122 /* TYPE_FLAG_TARGET_STUB will take care of zero length arrays. */
1123 if (TYPE_LENGTH (result_type
) == 0)
1124 TYPE_TARGET_STUB (result_type
) = 1;
1129 /* Same as create_array_type_with_stride but with no bit_stride
1130 (BIT_STRIDE = 0), thus building an unpacked array. */
1133 create_array_type (struct type
*result_type
,
1134 struct type
*element_type
,
1135 struct type
*range_type
)
1137 return create_array_type_with_stride (result_type
, element_type
,
1142 lookup_array_range_type (struct type
*element_type
,
1143 LONGEST low_bound
, LONGEST high_bound
)
1145 struct gdbarch
*gdbarch
= get_type_arch (element_type
);
1146 struct type
*index_type
= builtin_type (gdbarch
)->builtin_int
;
1147 struct type
*range_type
1148 = create_static_range_type (NULL
, index_type
, low_bound
, high_bound
);
1150 return create_array_type (NULL
, element_type
, range_type
);
1153 /* Create a string type using either a blank type supplied in
1154 RESULT_TYPE, or creating a new type. String types are similar
1155 enough to array of char types that we can use create_array_type to
1156 build the basic type and then bash it into a string type.
1158 For fixed length strings, the range type contains 0 as the lower
1159 bound and the length of the string minus one as the upper bound.
1161 FIXME: Maybe we should check the TYPE_CODE of RESULT_TYPE to make
1162 sure it is TYPE_CODE_UNDEF before we bash it into a string
1166 create_string_type (struct type
*result_type
,
1167 struct type
*string_char_type
,
1168 struct type
*range_type
)
1170 result_type
= create_array_type (result_type
,
1173 TYPE_CODE (result_type
) = TYPE_CODE_STRING
;
1178 lookup_string_range_type (struct type
*string_char_type
,
1179 LONGEST low_bound
, LONGEST high_bound
)
1181 struct type
*result_type
;
1183 result_type
= lookup_array_range_type (string_char_type
,
1184 low_bound
, high_bound
);
1185 TYPE_CODE (result_type
) = TYPE_CODE_STRING
;
1190 create_set_type (struct type
*result_type
, struct type
*domain_type
)
1192 if (result_type
== NULL
)
1193 result_type
= alloc_type_copy (domain_type
);
1195 TYPE_CODE (result_type
) = TYPE_CODE_SET
;
1196 TYPE_NFIELDS (result_type
) = 1;
1197 TYPE_FIELDS (result_type
)
1198 = (struct field
*) TYPE_ZALLOC (result_type
, sizeof (struct field
));
1200 if (!TYPE_STUB (domain_type
))
1202 LONGEST low_bound
, high_bound
, bit_length
;
1204 if (get_discrete_bounds (domain_type
, &low_bound
, &high_bound
) < 0)
1205 low_bound
= high_bound
= 0;
1206 bit_length
= high_bound
- low_bound
+ 1;
1207 TYPE_LENGTH (result_type
)
1208 = (bit_length
+ TARGET_CHAR_BIT
- 1) / TARGET_CHAR_BIT
;
1210 TYPE_UNSIGNED (result_type
) = 1;
1212 TYPE_FIELD_TYPE (result_type
, 0) = domain_type
;
1217 /* Convert ARRAY_TYPE to a vector type. This may modify ARRAY_TYPE
1218 and any array types nested inside it. */
1221 make_vector_type (struct type
*array_type
)
1223 struct type
*inner_array
, *elt_type
;
1226 /* Find the innermost array type, in case the array is
1227 multi-dimensional. */
1228 inner_array
= array_type
;
1229 while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array
)) == TYPE_CODE_ARRAY
)
1230 inner_array
= TYPE_TARGET_TYPE (inner_array
);
1232 elt_type
= TYPE_TARGET_TYPE (inner_array
);
1233 if (TYPE_CODE (elt_type
) == TYPE_CODE_INT
)
1235 flags
= TYPE_INSTANCE_FLAGS (elt_type
) | TYPE_INSTANCE_FLAG_NOTTEXT
;
1236 elt_type
= make_qualified_type (elt_type
, flags
, NULL
);
1237 TYPE_TARGET_TYPE (inner_array
) = elt_type
;
1240 TYPE_VECTOR (array_type
) = 1;
1244 init_vector_type (struct type
*elt_type
, int n
)
1246 struct type
*array_type
;
1248 array_type
= lookup_array_range_type (elt_type
, 0, n
- 1);
1249 make_vector_type (array_type
);
1253 /* Internal routine called by TYPE_SELF_TYPE to return the type that TYPE
1254 belongs to. In c++ this is the class of "this", but TYPE_THIS_TYPE is too
1255 confusing. "self" is a common enough replacement for "this".
1256 TYPE must be one of TYPE_CODE_METHODPTR, TYPE_CODE_MEMBERPTR, or
1257 TYPE_CODE_METHOD. */
1260 internal_type_self_type (struct type
*type
)
1262 switch (TYPE_CODE (type
))
1264 case TYPE_CODE_METHODPTR
:
1265 case TYPE_CODE_MEMBERPTR
:
1266 if (TYPE_SPECIFIC_FIELD (type
) == TYPE_SPECIFIC_NONE
)
1268 gdb_assert (TYPE_SPECIFIC_FIELD (type
) == TYPE_SPECIFIC_SELF_TYPE
);
1269 return TYPE_MAIN_TYPE (type
)->type_specific
.self_type
;
1270 case TYPE_CODE_METHOD
:
1271 if (TYPE_SPECIFIC_FIELD (type
) == TYPE_SPECIFIC_NONE
)
1273 gdb_assert (TYPE_SPECIFIC_FIELD (type
) == TYPE_SPECIFIC_FUNC
);
1274 return TYPE_MAIN_TYPE (type
)->type_specific
.func_stuff
->self_type
;
1276 gdb_assert_not_reached ("bad type");
1280 /* Set the type of the class that TYPE belongs to.
1281 In c++ this is the class of "this".
1282 TYPE must be one of TYPE_CODE_METHODPTR, TYPE_CODE_MEMBERPTR, or
1283 TYPE_CODE_METHOD. */
1286 set_type_self_type (struct type
*type
, struct type
*self_type
)
1288 switch (TYPE_CODE (type
))
1290 case TYPE_CODE_METHODPTR
:
1291 case TYPE_CODE_MEMBERPTR
:
1292 if (TYPE_SPECIFIC_FIELD (type
) == TYPE_SPECIFIC_NONE
)
1293 TYPE_SPECIFIC_FIELD (type
) = TYPE_SPECIFIC_SELF_TYPE
;
1294 gdb_assert (TYPE_SPECIFIC_FIELD (type
) == TYPE_SPECIFIC_SELF_TYPE
);
1295 TYPE_MAIN_TYPE (type
)->type_specific
.self_type
= self_type
;
1297 case TYPE_CODE_METHOD
:
1298 if (TYPE_SPECIFIC_FIELD (type
) == TYPE_SPECIFIC_NONE
)
1299 INIT_FUNC_SPECIFIC (type
);
1300 gdb_assert (TYPE_SPECIFIC_FIELD (type
) == TYPE_SPECIFIC_FUNC
);
1301 TYPE_MAIN_TYPE (type
)->type_specific
.func_stuff
->self_type
= self_type
;
1304 gdb_assert_not_reached ("bad type");
1308 /* Smash TYPE to be a type of pointers to members of SELF_TYPE with type
1309 TO_TYPE. A member pointer is a wierd thing -- it amounts to a
1310 typed offset into a struct, e.g. "an int at offset 8". A MEMBER
1311 TYPE doesn't include the offset (that's the value of the MEMBER
1312 itself), but does include the structure type into which it points
1315 When "smashing" the type, we preserve the objfile that the old type
1316 pointed to, since we aren't changing where the type is actually
1320 smash_to_memberptr_type (struct type
*type
, struct type
*self_type
,
1321 struct type
*to_type
)
1324 TYPE_CODE (type
) = TYPE_CODE_MEMBERPTR
;
1325 TYPE_TARGET_TYPE (type
) = to_type
;
1326 set_type_self_type (type
, self_type
);
1327 /* Assume that a data member pointer is the same size as a normal
1330 = gdbarch_ptr_bit (get_type_arch (to_type
)) / TARGET_CHAR_BIT
;
1333 /* Smash TYPE to be a type of pointer to methods type TO_TYPE.
1335 When "smashing" the type, we preserve the objfile that the old type
1336 pointed to, since we aren't changing where the type is actually
1340 smash_to_methodptr_type (struct type
*type
, struct type
*to_type
)
1343 TYPE_CODE (type
) = TYPE_CODE_METHODPTR
;
1344 TYPE_TARGET_TYPE (type
) = to_type
;
1345 set_type_self_type (type
, TYPE_SELF_TYPE (to_type
));
1346 TYPE_LENGTH (type
) = cplus_method_ptr_size (to_type
);
1349 /* Smash TYPE to be a type of method of SELF_TYPE with type TO_TYPE.
1350 METHOD just means `function that gets an extra "this" argument'.
1352 When "smashing" the type, we preserve the objfile that the old type
1353 pointed to, since we aren't changing where the type is actually
1357 smash_to_method_type (struct type
*type
, struct type
*self_type
,
1358 struct type
*to_type
, struct field
*args
,
1359 int nargs
, int varargs
)
1362 TYPE_CODE (type
) = TYPE_CODE_METHOD
;
1363 TYPE_TARGET_TYPE (type
) = to_type
;
1364 set_type_self_type (type
, self_type
);
1365 TYPE_FIELDS (type
) = args
;
1366 TYPE_NFIELDS (type
) = nargs
;
1368 TYPE_VARARGS (type
) = 1;
1369 TYPE_LENGTH (type
) = 1; /* In practice, this is never needed. */
1372 /* Return a typename for a struct/union/enum type without "struct ",
1373 "union ", or "enum ". If the type has a NULL name, return NULL. */
1376 type_name_no_tag (const struct type
*type
)
1378 if (TYPE_TAG_NAME (type
) != NULL
)
1379 return TYPE_TAG_NAME (type
);
1381 /* Is there code which expects this to return the name if there is
1382 no tag name? My guess is that this is mainly used for C++ in
1383 cases where the two will always be the same. */
1384 return TYPE_NAME (type
);
1387 /* A wrapper of type_name_no_tag which calls error if the type is anonymous.
1388 Since GCC PR debug/47510 DWARF provides associated information to detect the
1389 anonymous class linkage name from its typedef.
1391 Parameter TYPE should not yet have CHECK_TYPEDEF applied, this function will
1395 type_name_no_tag_or_error (struct type
*type
)
1397 struct type
*saved_type
= type
;
1399 struct objfile
*objfile
;
1401 type
= check_typedef (type
);
1403 name
= type_name_no_tag (type
);
1407 name
= type_name_no_tag (saved_type
);
1408 objfile
= TYPE_OBJFILE (saved_type
);
1409 error (_("Invalid anonymous type %s [in module %s], GCC PR debug/47510 bug?"),
1410 name
? name
: "<anonymous>",
1411 objfile
? objfile_name (objfile
) : "<arch>");
1414 /* Lookup a typedef or primitive type named NAME, visible in lexical
1415 block BLOCK. If NOERR is nonzero, return zero if NAME is not
1416 suitably defined. */
1419 lookup_typename (const struct language_defn
*language
,
1420 struct gdbarch
*gdbarch
, const char *name
,
1421 const struct block
*block
, int noerr
)
1426 sym
= lookup_symbol_in_language (name
, block
, VAR_DOMAIN
,
1427 language
->la_language
, NULL
).symbol
;
1428 if (sym
!= NULL
&& SYMBOL_CLASS (sym
) == LOC_TYPEDEF
)
1429 return SYMBOL_TYPE (sym
);
1433 error (_("No type named %s."), name
);
1437 lookup_unsigned_typename (const struct language_defn
*language
,
1438 struct gdbarch
*gdbarch
, const char *name
)
1440 char *uns
= (char *) alloca (strlen (name
) + 10);
1442 strcpy (uns
, "unsigned ");
1443 strcpy (uns
+ 9, name
);
1444 return lookup_typename (language
, gdbarch
, uns
, (struct block
*) NULL
, 0);
1448 lookup_signed_typename (const struct language_defn
*language
,
1449 struct gdbarch
*gdbarch
, const char *name
)
1452 char *uns
= (char *) alloca (strlen (name
) + 8);
1454 strcpy (uns
, "signed ");
1455 strcpy (uns
+ 7, name
);
1456 t
= lookup_typename (language
, gdbarch
, uns
, (struct block
*) NULL
, 1);
1457 /* If we don't find "signed FOO" just try again with plain "FOO". */
1460 return lookup_typename (language
, gdbarch
, name
, (struct block
*) NULL
, 0);
1463 /* Lookup a structure type named "struct NAME",
1464 visible in lexical block BLOCK. */
1467 lookup_struct (const char *name
, const struct block
*block
)
1471 sym
= lookup_symbol (name
, block
, STRUCT_DOMAIN
, 0).symbol
;
1475 error (_("No struct type named %s."), name
);
1477 if (TYPE_CODE (SYMBOL_TYPE (sym
)) != TYPE_CODE_STRUCT
)
1479 error (_("This context has class, union or enum %s, not a struct."),
1482 return (SYMBOL_TYPE (sym
));
1485 /* Lookup a union type named "union NAME",
1486 visible in lexical block BLOCK. */
1489 lookup_union (const char *name
, const struct block
*block
)
1494 sym
= lookup_symbol (name
, block
, STRUCT_DOMAIN
, 0).symbol
;
1497 error (_("No union type named %s."), name
);
1499 t
= SYMBOL_TYPE (sym
);
1501 if (TYPE_CODE (t
) == TYPE_CODE_UNION
)
1504 /* If we get here, it's not a union. */
1505 error (_("This context has class, struct or enum %s, not a union."),
1509 /* Lookup an enum type named "enum NAME",
1510 visible in lexical block BLOCK. */
1513 lookup_enum (const char *name
, const struct block
*block
)
1517 sym
= lookup_symbol (name
, block
, STRUCT_DOMAIN
, 0).symbol
;
1520 error (_("No enum type named %s."), name
);
1522 if (TYPE_CODE (SYMBOL_TYPE (sym
)) != TYPE_CODE_ENUM
)
1524 error (_("This context has class, struct or union %s, not an enum."),
1527 return (SYMBOL_TYPE (sym
));
1530 /* Lookup a template type named "template NAME<TYPE>",
1531 visible in lexical block BLOCK. */
1534 lookup_template_type (char *name
, struct type
*type
,
1535 const struct block
*block
)
1538 char *nam
= (char *)
1539 alloca (strlen (name
) + strlen (TYPE_NAME (type
)) + 4);
1543 strcat (nam
, TYPE_NAME (type
));
1544 strcat (nam
, " >"); /* FIXME, extra space still introduced in gcc? */
1546 sym
= lookup_symbol (nam
, block
, VAR_DOMAIN
, 0).symbol
;
1550 error (_("No template type named %s."), name
);
1552 if (TYPE_CODE (SYMBOL_TYPE (sym
)) != TYPE_CODE_STRUCT
)
1554 error (_("This context has class, union or enum %s, not a struct."),
1557 return (SYMBOL_TYPE (sym
));
1560 /* Given a type TYPE, lookup the type of the component of type named
1563 TYPE can be either a struct or union, or a pointer or reference to
1564 a struct or union. If it is a pointer or reference, its target
1565 type is automatically used. Thus '.' and '->' are interchangable,
1566 as specified for the definitions of the expression element types
1567 STRUCTOP_STRUCT and STRUCTOP_PTR.
1569 If NOERR is nonzero, return zero if NAME is not suitably defined.
1570 If NAME is the name of a baseclass type, return that type. */
1573 lookup_struct_elt_type (struct type
*type
, const char *name
, int noerr
)
1580 type
= check_typedef (type
);
1581 if (TYPE_CODE (type
) != TYPE_CODE_PTR
1582 && TYPE_CODE (type
) != TYPE_CODE_REF
)
1584 type
= TYPE_TARGET_TYPE (type
);
1587 if (TYPE_CODE (type
) != TYPE_CODE_STRUCT
1588 && TYPE_CODE (type
) != TYPE_CODE_UNION
)
1590 type_name
= type_to_string (type
);
1591 make_cleanup (xfree
, type_name
);
1592 error (_("Type %s is not a structure or union type."), type_name
);
1596 /* FIXME: This change put in by Michael seems incorrect for the case
1597 where the structure tag name is the same as the member name.
1598 I.e. when doing "ptype bell->bar" for "struct foo { int bar; int
1599 foo; } bell;" Disabled by fnf. */
1603 type_name
= type_name_no_tag (type
);
1604 if (type_name
!= NULL
&& strcmp (type_name
, name
) == 0)
1609 for (i
= TYPE_NFIELDS (type
) - 1; i
>= TYPE_N_BASECLASSES (type
); i
--)
1611 const char *t_field_name
= TYPE_FIELD_NAME (type
, i
);
1613 if (t_field_name
&& (strcmp_iw (t_field_name
, name
) == 0))
1615 return TYPE_FIELD_TYPE (type
, i
);
1617 else if (!t_field_name
|| *t_field_name
== '\0')
1619 struct type
*subtype
1620 = lookup_struct_elt_type (TYPE_FIELD_TYPE (type
, i
), name
, 1);
1622 if (subtype
!= NULL
)
1627 /* OK, it's not in this class. Recursively check the baseclasses. */
1628 for (i
= TYPE_N_BASECLASSES (type
) - 1; i
>= 0; i
--)
1632 t
= lookup_struct_elt_type (TYPE_BASECLASS (type
, i
), name
, 1);
1644 type_name
= type_to_string (type
);
1645 make_cleanup (xfree
, type_name
);
1646 error (_("Type %s has no component named %s."), type_name
, name
);
1649 /* Store in *MAX the largest number representable by unsigned integer type
1653 get_unsigned_type_max (struct type
*type
, ULONGEST
*max
)
1657 type
= check_typedef (type
);
1658 gdb_assert (TYPE_CODE (type
) == TYPE_CODE_INT
&& TYPE_UNSIGNED (type
));
1659 gdb_assert (TYPE_LENGTH (type
) <= sizeof (ULONGEST
));
1661 /* Written this way to avoid overflow. */
1662 n
= TYPE_LENGTH (type
) * TARGET_CHAR_BIT
;
1663 *max
= ((((ULONGEST
) 1 << (n
- 1)) - 1) << 1) | 1;
1666 /* Store in *MIN, *MAX the smallest and largest numbers representable by
1667 signed integer type TYPE. */
1670 get_signed_type_minmax (struct type
*type
, LONGEST
*min
, LONGEST
*max
)
1674 type
= check_typedef (type
);
1675 gdb_assert (TYPE_CODE (type
) == TYPE_CODE_INT
&& !TYPE_UNSIGNED (type
));
1676 gdb_assert (TYPE_LENGTH (type
) <= sizeof (LONGEST
));
1678 n
= TYPE_LENGTH (type
) * TARGET_CHAR_BIT
;
1679 *min
= -((ULONGEST
) 1 << (n
- 1));
1680 *max
= ((ULONGEST
) 1 << (n
- 1)) - 1;
1683 /* Internal routine called by TYPE_VPTR_FIELDNO to return the value of
1684 cplus_stuff.vptr_fieldno.
1686 cplus_stuff is initialized to cplus_struct_default which does not
1687 set vptr_fieldno to -1 for portability reasons (IWBN to use C99
1688 designated initializers). We cope with that here. */
1691 internal_type_vptr_fieldno (struct type
*type
)
1693 type
= check_typedef (type
);
1694 gdb_assert (TYPE_CODE (type
) == TYPE_CODE_STRUCT
1695 || TYPE_CODE (type
) == TYPE_CODE_UNION
);
1696 if (!HAVE_CPLUS_STRUCT (type
))
1698 return TYPE_RAW_CPLUS_SPECIFIC (type
)->vptr_fieldno
;
1701 /* Set the value of cplus_stuff.vptr_fieldno. */
1704 set_type_vptr_fieldno (struct type
*type
, int fieldno
)
1706 type
= check_typedef (type
);
1707 gdb_assert (TYPE_CODE (type
) == TYPE_CODE_STRUCT
1708 || TYPE_CODE (type
) == TYPE_CODE_UNION
);
1709 if (!HAVE_CPLUS_STRUCT (type
))
1710 ALLOCATE_CPLUS_STRUCT_TYPE (type
);
1711 TYPE_RAW_CPLUS_SPECIFIC (type
)->vptr_fieldno
= fieldno
;
1714 /* Internal routine called by TYPE_VPTR_BASETYPE to return the value of
1715 cplus_stuff.vptr_basetype. */
1718 internal_type_vptr_basetype (struct type
*type
)
1720 type
= check_typedef (type
);
1721 gdb_assert (TYPE_CODE (type
) == TYPE_CODE_STRUCT
1722 || TYPE_CODE (type
) == TYPE_CODE_UNION
);
1723 gdb_assert (TYPE_SPECIFIC_FIELD (type
) == TYPE_SPECIFIC_CPLUS_STUFF
);
1724 return TYPE_RAW_CPLUS_SPECIFIC (type
)->vptr_basetype
;
1727 /* Set the value of cplus_stuff.vptr_basetype. */
1730 set_type_vptr_basetype (struct type
*type
, struct type
*basetype
)
1732 type
= check_typedef (type
);
1733 gdb_assert (TYPE_CODE (type
) == TYPE_CODE_STRUCT
1734 || TYPE_CODE (type
) == TYPE_CODE_UNION
);
1735 if (!HAVE_CPLUS_STRUCT (type
))
1736 ALLOCATE_CPLUS_STRUCT_TYPE (type
);
1737 TYPE_RAW_CPLUS_SPECIFIC (type
)->vptr_basetype
= basetype
;
1740 /* Lookup the vptr basetype/fieldno values for TYPE.
1741 If found store vptr_basetype in *BASETYPEP if non-NULL, and return
1742 vptr_fieldno. Also, if found and basetype is from the same objfile,
1744 If not found, return -1 and ignore BASETYPEP.
1745 Callers should be aware that in some cases (for example,
1746 the type or one of its baseclasses is a stub type and we are
1747 debugging a .o file, or the compiler uses DWARF-2 and is not GCC),
1748 this function will not be able to find the
1749 virtual function table pointer, and vptr_fieldno will remain -1 and
1750 vptr_basetype will remain NULL or incomplete. */
1753 get_vptr_fieldno (struct type
*type
, struct type
**basetypep
)
1755 type
= check_typedef (type
);
1757 if (TYPE_VPTR_FIELDNO (type
) < 0)
1761 /* We must start at zero in case the first (and only) baseclass
1762 is virtual (and hence we cannot share the table pointer). */
1763 for (i
= 0; i
< TYPE_N_BASECLASSES (type
); i
++)
1765 struct type
*baseclass
= check_typedef (TYPE_BASECLASS (type
, i
));
1767 struct type
*basetype
;
1769 fieldno
= get_vptr_fieldno (baseclass
, &basetype
);
1772 /* If the type comes from a different objfile we can't cache
1773 it, it may have a different lifetime. PR 2384 */
1774 if (TYPE_OBJFILE (type
) == TYPE_OBJFILE (basetype
))
1776 set_type_vptr_fieldno (type
, fieldno
);
1777 set_type_vptr_basetype (type
, basetype
);
1780 *basetypep
= basetype
;
1791 *basetypep
= TYPE_VPTR_BASETYPE (type
);
1792 return TYPE_VPTR_FIELDNO (type
);
1797 stub_noname_complaint (void)
1799 complaint (&symfile_complaints
, _("stub type has NULL name"));
1802 /* Worker for is_dynamic_type. */
1805 is_dynamic_type_internal (struct type
*type
, int top_level
)
1807 type
= check_typedef (type
);
1809 /* We only want to recognize references at the outermost level. */
1810 if (top_level
&& TYPE_CODE (type
) == TYPE_CODE_REF
)
1811 type
= check_typedef (TYPE_TARGET_TYPE (type
));
1813 /* Types that have a dynamic TYPE_DATA_LOCATION are considered
1814 dynamic, even if the type itself is statically defined.
1815 From a user's point of view, this may appear counter-intuitive;
1816 but it makes sense in this context, because the point is to determine
1817 whether any part of the type needs to be resolved before it can
1819 if (TYPE_DATA_LOCATION (type
) != NULL
1820 && (TYPE_DATA_LOCATION_KIND (type
) == PROP_LOCEXPR
1821 || TYPE_DATA_LOCATION_KIND (type
) == PROP_LOCLIST
))
1824 if (TYPE_ASSOCIATED_PROP (type
))
1827 if (TYPE_ALLOCATED_PROP (type
))
1830 switch (TYPE_CODE (type
))
1832 case TYPE_CODE_RANGE
:
1834 /* A range type is obviously dynamic if it has at least one
1835 dynamic bound. But also consider the range type to be
1836 dynamic when its subtype is dynamic, even if the bounds
1837 of the range type are static. It allows us to assume that
1838 the subtype of a static range type is also static. */
1839 return (!has_static_range (TYPE_RANGE_DATA (type
))
1840 || is_dynamic_type_internal (TYPE_TARGET_TYPE (type
), 0));
1843 case TYPE_CODE_ARRAY
:
1845 gdb_assert (TYPE_NFIELDS (type
) == 1);
1847 /* The array is dynamic if either the bounds are dynamic,
1848 or the elements it contains have a dynamic contents. */
1849 if (is_dynamic_type_internal (TYPE_INDEX_TYPE (type
), 0))
1851 return is_dynamic_type_internal (TYPE_TARGET_TYPE (type
), 0);
1854 case TYPE_CODE_STRUCT
:
1855 case TYPE_CODE_UNION
:
1859 for (i
= 0; i
< TYPE_NFIELDS (type
); ++i
)
1860 if (!field_is_static (&TYPE_FIELD (type
, i
))
1861 && is_dynamic_type_internal (TYPE_FIELD_TYPE (type
, i
), 0))
1870 /* See gdbtypes.h. */
1873 is_dynamic_type (struct type
*type
)
1875 return is_dynamic_type_internal (type
, 1);
1878 static struct type
*resolve_dynamic_type_internal
1879 (struct type
*type
, struct property_addr_info
*addr_stack
, int top_level
);
1881 /* Given a dynamic range type (dyn_range_type) and a stack of
1882 struct property_addr_info elements, return a static version
1885 static struct type
*
1886 resolve_dynamic_range (struct type
*dyn_range_type
,
1887 struct property_addr_info
*addr_stack
)
1890 struct type
*static_range_type
, *static_target_type
;
1891 const struct dynamic_prop
*prop
;
1892 const struct dwarf2_locexpr_baton
*baton
;
1893 struct dynamic_prop low_bound
, high_bound
;
1895 gdb_assert (TYPE_CODE (dyn_range_type
) == TYPE_CODE_RANGE
);
1897 prop
= &TYPE_RANGE_DATA (dyn_range_type
)->low
;
1898 if (dwarf2_evaluate_property (prop
, NULL
, addr_stack
, &value
))
1900 low_bound
.kind
= PROP_CONST
;
1901 low_bound
.data
.const_val
= value
;
1905 low_bound
.kind
= PROP_UNDEFINED
;
1906 low_bound
.data
.const_val
= 0;
1909 prop
= &TYPE_RANGE_DATA (dyn_range_type
)->high
;
1910 if (dwarf2_evaluate_property (prop
, NULL
, addr_stack
, &value
))
1912 high_bound
.kind
= PROP_CONST
;
1913 high_bound
.data
.const_val
= value
;
1915 if (TYPE_RANGE_DATA (dyn_range_type
)->flag_upper_bound_is_count
)
1916 high_bound
.data
.const_val
1917 = low_bound
.data
.const_val
+ high_bound
.data
.const_val
- 1;
1921 high_bound
.kind
= PROP_UNDEFINED
;
1922 high_bound
.data
.const_val
= 0;
1926 = resolve_dynamic_type_internal (TYPE_TARGET_TYPE (dyn_range_type
),
1928 static_range_type
= create_range_type (copy_type (dyn_range_type
),
1930 &low_bound
, &high_bound
);
1931 TYPE_RANGE_DATA (static_range_type
)->flag_bound_evaluated
= 1;
1932 return static_range_type
;
1935 /* Resolves dynamic bound values of an array type TYPE to static ones.
1936 ADDR_STACK is a stack of struct property_addr_info to be used
1937 if needed during the dynamic resolution. */
1939 static struct type
*
1940 resolve_dynamic_array (struct type
*type
,
1941 struct property_addr_info
*addr_stack
)
1944 struct type
*elt_type
;
1945 struct type
*range_type
;
1946 struct type
*ary_dim
;
1947 struct dynamic_prop
*prop
;
1949 gdb_assert (TYPE_CODE (type
) == TYPE_CODE_ARRAY
);
1951 type
= copy_type (type
);
1954 range_type
= check_typedef (TYPE_INDEX_TYPE (elt_type
));
1955 range_type
= resolve_dynamic_range (range_type
, addr_stack
);
1957 /* Resolve allocated/associated here before creating a new array type, which
1958 will update the length of the array accordingly. */
1959 prop
= TYPE_ALLOCATED_PROP (type
);
1960 if (prop
!= NULL
&& dwarf2_evaluate_property (prop
, NULL
, addr_stack
, &value
))
1962 TYPE_DYN_PROP_ADDR (prop
) = value
;
1963 TYPE_DYN_PROP_KIND (prop
) = PROP_CONST
;
1965 prop
= TYPE_ASSOCIATED_PROP (type
);
1966 if (prop
!= NULL
&& dwarf2_evaluate_property (prop
, NULL
, addr_stack
, &value
))
1968 TYPE_DYN_PROP_ADDR (prop
) = value
;
1969 TYPE_DYN_PROP_KIND (prop
) = PROP_CONST
;
1972 ary_dim
= check_typedef (TYPE_TARGET_TYPE (elt_type
));
1974 if (ary_dim
!= NULL
&& TYPE_CODE (ary_dim
) == TYPE_CODE_ARRAY
)
1975 elt_type
= resolve_dynamic_array (ary_dim
, addr_stack
);
1977 elt_type
= TYPE_TARGET_TYPE (type
);
1979 return create_array_type_with_stride (type
, elt_type
, range_type
,
1980 TYPE_FIELD_BITSIZE (type
, 0));
1983 /* Resolve dynamic bounds of members of the union TYPE to static
1984 bounds. ADDR_STACK is a stack of struct property_addr_info
1985 to be used if needed during the dynamic resolution. */
1987 static struct type
*
1988 resolve_dynamic_union (struct type
*type
,
1989 struct property_addr_info
*addr_stack
)
1991 struct type
*resolved_type
;
1993 unsigned int max_len
= 0;
1995 gdb_assert (TYPE_CODE (type
) == TYPE_CODE_UNION
);
1997 resolved_type
= copy_type (type
);
1998 TYPE_FIELDS (resolved_type
)
1999 = (struct field
*) TYPE_ALLOC (resolved_type
,
2000 TYPE_NFIELDS (resolved_type
)
2001 * sizeof (struct field
));
2002 memcpy (TYPE_FIELDS (resolved_type
),
2004 TYPE_NFIELDS (resolved_type
) * sizeof (struct field
));
2005 for (i
= 0; i
< TYPE_NFIELDS (resolved_type
); ++i
)
2009 if (field_is_static (&TYPE_FIELD (type
, i
)))
2012 t
= resolve_dynamic_type_internal (TYPE_FIELD_TYPE (resolved_type
, i
),
2014 TYPE_FIELD_TYPE (resolved_type
, i
) = t
;
2015 if (TYPE_LENGTH (t
) > max_len
)
2016 max_len
= TYPE_LENGTH (t
);
2019 TYPE_LENGTH (resolved_type
) = max_len
;
2020 return resolved_type
;
2023 /* Resolve dynamic bounds of members of the struct TYPE to static
2024 bounds. ADDR_STACK is a stack of struct property_addr_info to
2025 be used if needed during the dynamic resolution. */
2027 static struct type
*
2028 resolve_dynamic_struct (struct type
*type
,
2029 struct property_addr_info
*addr_stack
)
2031 struct type
*resolved_type
;
2033 unsigned resolved_type_bit_length
= 0;
2035 gdb_assert (TYPE_CODE (type
) == TYPE_CODE_STRUCT
);
2036 gdb_assert (TYPE_NFIELDS (type
) > 0);
2038 resolved_type
= copy_type (type
);
2039 TYPE_FIELDS (resolved_type
)
2040 = (struct field
*) TYPE_ALLOC (resolved_type
,
2041 TYPE_NFIELDS (resolved_type
)
2042 * sizeof (struct field
));
2043 memcpy (TYPE_FIELDS (resolved_type
),
2045 TYPE_NFIELDS (resolved_type
) * sizeof (struct field
));
2046 for (i
= 0; i
< TYPE_NFIELDS (resolved_type
); ++i
)
2048 unsigned new_bit_length
;
2049 struct property_addr_info pinfo
;
2051 if (field_is_static (&TYPE_FIELD (type
, i
)))
2054 /* As we know this field is not a static field, the field's
2055 field_loc_kind should be FIELD_LOC_KIND_BITPOS. Verify
2056 this is the case, but only trigger a simple error rather
2057 than an internal error if that fails. While failing
2058 that verification indicates a bug in our code, the error
2059 is not severe enough to suggest to the user he stops
2060 his debugging session because of it. */
2061 if (TYPE_FIELD_LOC_KIND (type
, i
) != FIELD_LOC_KIND_BITPOS
)
2062 error (_("Cannot determine struct field location"
2063 " (invalid location kind)"));
2065 pinfo
.type
= check_typedef (TYPE_FIELD_TYPE (type
, i
));
2066 pinfo
.valaddr
= addr_stack
->valaddr
;
2067 pinfo
.addr
= addr_stack
->addr
;
2068 pinfo
.next
= addr_stack
;
2070 TYPE_FIELD_TYPE (resolved_type
, i
)
2071 = resolve_dynamic_type_internal (TYPE_FIELD_TYPE (resolved_type
, i
),
2073 gdb_assert (TYPE_FIELD_LOC_KIND (resolved_type
, i
)
2074 == FIELD_LOC_KIND_BITPOS
);
2076 new_bit_length
= TYPE_FIELD_BITPOS (resolved_type
, i
);
2077 if (TYPE_FIELD_BITSIZE (resolved_type
, i
) != 0)
2078 new_bit_length
+= TYPE_FIELD_BITSIZE (resolved_type
, i
);
2080 new_bit_length
+= (TYPE_LENGTH (TYPE_FIELD_TYPE (resolved_type
, i
))
2083 /* Normally, we would use the position and size of the last field
2084 to determine the size of the enclosing structure. But GCC seems
2085 to be encoding the position of some fields incorrectly when
2086 the struct contains a dynamic field that is not placed last.
2087 So we compute the struct size based on the field that has
2088 the highest position + size - probably the best we can do. */
2089 if (new_bit_length
> resolved_type_bit_length
)
2090 resolved_type_bit_length
= new_bit_length
;
2093 TYPE_LENGTH (resolved_type
)
2094 = (resolved_type_bit_length
+ TARGET_CHAR_BIT
- 1) / TARGET_CHAR_BIT
;
2096 /* The Ada language uses this field as a cache for static fixed types: reset
2097 it as RESOLVED_TYPE must have its own static fixed type. */
2098 TYPE_TARGET_TYPE (resolved_type
) = NULL
;
2100 return resolved_type
;
2103 /* Worker for resolved_dynamic_type. */
2105 static struct type
*
2106 resolve_dynamic_type_internal (struct type
*type
,
2107 struct property_addr_info
*addr_stack
,
2110 struct type
*real_type
= check_typedef (type
);
2111 struct type
*resolved_type
= type
;
2112 struct dynamic_prop
*prop
;
2115 if (!is_dynamic_type_internal (real_type
, top_level
))
2118 if (TYPE_CODE (type
) == TYPE_CODE_TYPEDEF
)
2120 resolved_type
= copy_type (type
);
2121 TYPE_TARGET_TYPE (resolved_type
)
2122 = resolve_dynamic_type_internal (TYPE_TARGET_TYPE (type
), addr_stack
,
2127 /* Before trying to resolve TYPE, make sure it is not a stub. */
2130 switch (TYPE_CODE (type
))
2134 struct property_addr_info pinfo
;
2136 pinfo
.type
= check_typedef (TYPE_TARGET_TYPE (type
));
2137 pinfo
.valaddr
= NULL
;
2138 if (addr_stack
->valaddr
!= NULL
)
2139 pinfo
.addr
= extract_typed_address (addr_stack
->valaddr
, type
);
2141 pinfo
.addr
= read_memory_typed_address (addr_stack
->addr
, type
);
2142 pinfo
.next
= addr_stack
;
2144 resolved_type
= copy_type (type
);
2145 TYPE_TARGET_TYPE (resolved_type
)
2146 = resolve_dynamic_type_internal (TYPE_TARGET_TYPE (type
),
2151 case TYPE_CODE_ARRAY
:
2152 resolved_type
= resolve_dynamic_array (type
, addr_stack
);
2155 case TYPE_CODE_RANGE
:
2156 resolved_type
= resolve_dynamic_range (type
, addr_stack
);
2159 case TYPE_CODE_UNION
:
2160 resolved_type
= resolve_dynamic_union (type
, addr_stack
);
2163 case TYPE_CODE_STRUCT
:
2164 resolved_type
= resolve_dynamic_struct (type
, addr_stack
);
2169 /* Resolve data_location attribute. */
2170 prop
= TYPE_DATA_LOCATION (resolved_type
);
2172 && dwarf2_evaluate_property (prop
, NULL
, addr_stack
, &value
))
2174 TYPE_DYN_PROP_ADDR (prop
) = value
;
2175 TYPE_DYN_PROP_KIND (prop
) = PROP_CONST
;
2178 return resolved_type
;
2181 /* See gdbtypes.h */
2184 resolve_dynamic_type (struct type
*type
, const gdb_byte
*valaddr
,
2187 struct property_addr_info pinfo
2188 = {check_typedef (type
), valaddr
, addr
, NULL
};
2190 return resolve_dynamic_type_internal (type
, &pinfo
, 1);
2193 /* See gdbtypes.h */
2195 struct dynamic_prop
*
2196 get_dyn_prop (enum dynamic_prop_node_kind prop_kind
, const struct type
*type
)
2198 struct dynamic_prop_list
*node
= TYPE_DYN_PROP_LIST (type
);
2200 while (node
!= NULL
)
2202 if (node
->prop_kind
== prop_kind
)
2209 /* See gdbtypes.h */
2212 add_dyn_prop (enum dynamic_prop_node_kind prop_kind
, struct dynamic_prop prop
,
2213 struct type
*type
, struct objfile
*objfile
)
2215 struct dynamic_prop_list
*temp
;
2217 gdb_assert (TYPE_OBJFILE_OWNED (type
));
2219 temp
= XOBNEW (&objfile
->objfile_obstack
, struct dynamic_prop_list
);
2220 temp
->prop_kind
= prop_kind
;
2222 temp
->next
= TYPE_DYN_PROP_LIST (type
);
2224 TYPE_DYN_PROP_LIST (type
) = temp
;
2228 /* Find the real type of TYPE. This function returns the real type,
2229 after removing all layers of typedefs, and completing opaque or stub
2230 types. Completion changes the TYPE argument, but stripping of
2233 Instance flags (e.g. const/volatile) are preserved as typedefs are
2234 stripped. If necessary a new qualified form of the underlying type
2237 NOTE: This will return a typedef if TYPE_TARGET_TYPE for the typedef has
2238 not been computed and we're either in the middle of reading symbols, or
2239 there was no name for the typedef in the debug info.
2241 NOTE: Lookup of opaque types can throw errors for invalid symbol files.
2242 QUITs in the symbol reading code can also throw.
2243 Thus this function can throw an exception.
2245 If TYPE is a TYPE_CODE_TYPEDEF, its length is updated to the length of
2248 If this is a stubbed struct (i.e. declared as struct foo *), see if
2249 we can find a full definition in some other file. If so, copy this
2250 definition, so we can use it in future. There used to be a comment
2251 (but not any code) that if we don't find a full definition, we'd
2252 set a flag so we don't spend time in the future checking the same
2253 type. That would be a mistake, though--we might load in more
2254 symbols which contain a full definition for the type. */
2257 check_typedef (struct type
*type
)
2259 struct type
*orig_type
= type
;
2260 /* While we're removing typedefs, we don't want to lose qualifiers.
2261 E.g., const/volatile. */
2262 int instance_flags
= TYPE_INSTANCE_FLAGS (type
);
2266 while (TYPE_CODE (type
) == TYPE_CODE_TYPEDEF
)
2268 if (!TYPE_TARGET_TYPE (type
))
2273 /* It is dangerous to call lookup_symbol if we are currently
2274 reading a symtab. Infinite recursion is one danger. */
2275 if (currently_reading_symtab
)
2276 return make_qualified_type (type
, instance_flags
, NULL
);
2278 name
= type_name_no_tag (type
);
2279 /* FIXME: shouldn't we separately check the TYPE_NAME and
2280 the TYPE_TAG_NAME, and look in STRUCT_DOMAIN and/or
2281 VAR_DOMAIN as appropriate? (this code was written before
2282 TYPE_NAME and TYPE_TAG_NAME were separate). */
2285 stub_noname_complaint ();
2286 return make_qualified_type (type
, instance_flags
, NULL
);
2288 sym
= lookup_symbol (name
, 0, STRUCT_DOMAIN
, 0).symbol
;
2290 TYPE_TARGET_TYPE (type
) = SYMBOL_TYPE (sym
);
2291 else /* TYPE_CODE_UNDEF */
2292 TYPE_TARGET_TYPE (type
) = alloc_type_arch (get_type_arch (type
));
2294 type
= TYPE_TARGET_TYPE (type
);
2296 /* Preserve the instance flags as we traverse down the typedef chain.
2298 Handling address spaces/classes is nasty, what do we do if there's a
2300 E.g., what if an outer typedef marks the type as class_1 and an inner
2301 typedef marks the type as class_2?
2302 This is the wrong place to do such error checking. We leave it to
2303 the code that created the typedef in the first place to flag the
2304 error. We just pick the outer address space (akin to letting the
2305 outer cast in a chain of casting win), instead of assuming
2306 "it can't happen". */
2308 const int ALL_SPACES
= (TYPE_INSTANCE_FLAG_CODE_SPACE
2309 | TYPE_INSTANCE_FLAG_DATA_SPACE
);
2310 const int ALL_CLASSES
= TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL
;
2311 int new_instance_flags
= TYPE_INSTANCE_FLAGS (type
);
2313 /* Treat code vs data spaces and address classes separately. */
2314 if ((instance_flags
& ALL_SPACES
) != 0)
2315 new_instance_flags
&= ~ALL_SPACES
;
2316 if ((instance_flags
& ALL_CLASSES
) != 0)
2317 new_instance_flags
&= ~ALL_CLASSES
;
2319 instance_flags
|= new_instance_flags
;
2323 /* If this is a struct/class/union with no fields, then check
2324 whether a full definition exists somewhere else. This is for
2325 systems where a type definition with no fields is issued for such
2326 types, instead of identifying them as stub types in the first
2329 if (TYPE_IS_OPAQUE (type
)
2330 && opaque_type_resolution
2331 && !currently_reading_symtab
)
2333 const char *name
= type_name_no_tag (type
);
2334 struct type
*newtype
;
2338 stub_noname_complaint ();
2339 return make_qualified_type (type
, instance_flags
, NULL
);
2341 newtype
= lookup_transparent_type (name
);
2345 /* If the resolved type and the stub are in the same
2346 objfile, then replace the stub type with the real deal.
2347 But if they're in separate objfiles, leave the stub
2348 alone; we'll just look up the transparent type every time
2349 we call check_typedef. We can't create pointers between
2350 types allocated to different objfiles, since they may
2351 have different lifetimes. Trying to copy NEWTYPE over to
2352 TYPE's objfile is pointless, too, since you'll have to
2353 move over any other types NEWTYPE refers to, which could
2354 be an unbounded amount of stuff. */
2355 if (TYPE_OBJFILE (newtype
) == TYPE_OBJFILE (type
))
2356 type
= make_qualified_type (newtype
,
2357 TYPE_INSTANCE_FLAGS (type
),
2363 /* Otherwise, rely on the stub flag being set for opaque/stubbed
2365 else if (TYPE_STUB (type
) && !currently_reading_symtab
)
2367 const char *name
= type_name_no_tag (type
);
2368 /* FIXME: shouldn't we separately check the TYPE_NAME and the
2369 TYPE_TAG_NAME, and look in STRUCT_DOMAIN and/or VAR_DOMAIN
2370 as appropriate? (this code was written before TYPE_NAME and
2371 TYPE_TAG_NAME were separate). */
2376 stub_noname_complaint ();
2377 return make_qualified_type (type
, instance_flags
, NULL
);
2379 sym
= lookup_symbol (name
, 0, STRUCT_DOMAIN
, 0).symbol
;
2382 /* Same as above for opaque types, we can replace the stub
2383 with the complete type only if they are in the same
2385 if (TYPE_OBJFILE (SYMBOL_TYPE(sym
)) == TYPE_OBJFILE (type
))
2386 type
= make_qualified_type (SYMBOL_TYPE (sym
),
2387 TYPE_INSTANCE_FLAGS (type
),
2390 type
= SYMBOL_TYPE (sym
);
2394 if (TYPE_TARGET_STUB (type
))
2396 struct type
*range_type
;
2397 struct type
*target_type
= check_typedef (TYPE_TARGET_TYPE (type
));
2399 if (TYPE_STUB (target_type
) || TYPE_TARGET_STUB (target_type
))
2401 /* Nothing we can do. */
2403 else if (TYPE_CODE (type
) == TYPE_CODE_RANGE
)
2405 TYPE_LENGTH (type
) = TYPE_LENGTH (target_type
);
2406 TYPE_TARGET_STUB (type
) = 0;
2410 type
= make_qualified_type (type
, instance_flags
, NULL
);
2412 /* Cache TYPE_LENGTH for future use. */
2413 TYPE_LENGTH (orig_type
) = TYPE_LENGTH (type
);
2418 /* Parse a type expression in the string [P..P+LENGTH). If an error
2419 occurs, silently return a void type. */
2421 static struct type
*
2422 safe_parse_type (struct gdbarch
*gdbarch
, char *p
, int length
)
2424 struct ui_file
*saved_gdb_stderr
;
2425 struct type
*type
= NULL
; /* Initialize to keep gcc happy. */
2427 /* Suppress error messages. */
2428 saved_gdb_stderr
= gdb_stderr
;
2429 gdb_stderr
= ui_file_new ();
2431 /* Call parse_and_eval_type() without fear of longjmp()s. */
2434 type
= parse_and_eval_type (p
, length
);
2436 CATCH (except
, RETURN_MASK_ERROR
)
2438 type
= builtin_type (gdbarch
)->builtin_void
;
2442 /* Stop suppressing error messages. */
2443 ui_file_delete (gdb_stderr
);
2444 gdb_stderr
= saved_gdb_stderr
;
2449 /* Ugly hack to convert method stubs into method types.
2451 He ain't kiddin'. This demangles the name of the method into a
2452 string including argument types, parses out each argument type,
2453 generates a string casting a zero to that type, evaluates the
2454 string, and stuffs the resulting type into an argtype vector!!!
2455 Then it knows the type of the whole function (including argument
2456 types for overloading), which info used to be in the stab's but was
2457 removed to hack back the space required for them. */
2460 check_stub_method (struct type
*type
, int method_id
, int signature_id
)
2462 struct gdbarch
*gdbarch
= get_type_arch (type
);
2464 char *mangled_name
= gdb_mangle_name (type
, method_id
, signature_id
);
2465 char *demangled_name
= gdb_demangle (mangled_name
,
2466 DMGL_PARAMS
| DMGL_ANSI
);
2467 char *argtypetext
, *p
;
2468 int depth
= 0, argcount
= 1;
2469 struct field
*argtypes
;
2472 /* Make sure we got back a function string that we can use. */
2474 p
= strchr (demangled_name
, '(');
2478 if (demangled_name
== NULL
|| p
== NULL
)
2479 error (_("Internal: Cannot demangle mangled name `%s'."),
2482 /* Now, read in the parameters that define this type. */
2487 if (*p
== '(' || *p
== '<')
2491 else if (*p
== ')' || *p
== '>')
2495 else if (*p
== ',' && depth
== 0)
2503 /* If we read one argument and it was ``void'', don't count it. */
2504 if (startswith (argtypetext
, "(void)"))
2507 /* We need one extra slot, for the THIS pointer. */
2509 argtypes
= (struct field
*)
2510 TYPE_ALLOC (type
, (argcount
+ 1) * sizeof (struct field
));
2513 /* Add THIS pointer for non-static methods. */
2514 f
= TYPE_FN_FIELDLIST1 (type
, method_id
);
2515 if (TYPE_FN_FIELD_STATIC_P (f
, signature_id
))
2519 argtypes
[0].type
= lookup_pointer_type (type
);
2523 if (*p
!= ')') /* () means no args, skip while. */
2528 if (depth
<= 0 && (*p
== ',' || *p
== ')'))
2530 /* Avoid parsing of ellipsis, they will be handled below.
2531 Also avoid ``void'' as above. */
2532 if (strncmp (argtypetext
, "...", p
- argtypetext
) != 0
2533 && strncmp (argtypetext
, "void", p
- argtypetext
) != 0)
2535 argtypes
[argcount
].type
=
2536 safe_parse_type (gdbarch
, argtypetext
, p
- argtypetext
);
2539 argtypetext
= p
+ 1;
2542 if (*p
== '(' || *p
== '<')
2546 else if (*p
== ')' || *p
== '>')
2555 TYPE_FN_FIELD_PHYSNAME (f
, signature_id
) = mangled_name
;
2557 /* Now update the old "stub" type into a real type. */
2558 mtype
= TYPE_FN_FIELD_TYPE (f
, signature_id
);
2559 /* MTYPE may currently be a function (TYPE_CODE_FUNC).
2560 We want a method (TYPE_CODE_METHOD). */
2561 smash_to_method_type (mtype
, type
, TYPE_TARGET_TYPE (mtype
),
2562 argtypes
, argcount
, p
[-2] == '.');
2563 TYPE_STUB (mtype
) = 0;
2564 TYPE_FN_FIELD_STUB (f
, signature_id
) = 0;
2566 xfree (demangled_name
);
2569 /* This is the external interface to check_stub_method, above. This
2570 function unstubs all of the signatures for TYPE's METHOD_ID method
2571 name. After calling this function TYPE_FN_FIELD_STUB will be
2572 cleared for each signature and TYPE_FN_FIELDLIST_NAME will be
2575 This function unfortunately can not die until stabs do. */
2578 check_stub_method_group (struct type
*type
, int method_id
)
2580 int len
= TYPE_FN_FIELDLIST_LENGTH (type
, method_id
);
2581 struct fn_field
*f
= TYPE_FN_FIELDLIST1 (type
, method_id
);
2582 int j
, found_stub
= 0;
2584 for (j
= 0; j
< len
; j
++)
2585 if (TYPE_FN_FIELD_STUB (f
, j
))
2588 check_stub_method (type
, method_id
, j
);
2591 /* GNU v3 methods with incorrect names were corrected when we read
2592 in type information, because it was cheaper to do it then. The
2593 only GNU v2 methods with incorrect method names are operators and
2594 destructors; destructors were also corrected when we read in type
2597 Therefore the only thing we need to handle here are v2 operator
2599 if (found_stub
&& !startswith (TYPE_FN_FIELD_PHYSNAME (f
, 0), "_Z"))
2602 char dem_opname
[256];
2604 ret
= cplus_demangle_opname (TYPE_FN_FIELDLIST_NAME (type
,
2606 dem_opname
, DMGL_ANSI
);
2608 ret
= cplus_demangle_opname (TYPE_FN_FIELDLIST_NAME (type
,
2612 TYPE_FN_FIELDLIST_NAME (type
, method_id
) = xstrdup (dem_opname
);
2616 /* Ensure it is in .rodata (if available) by workarounding GCC PR 44690. */
2617 const struct cplus_struct_type cplus_struct_default
= { };
2620 allocate_cplus_struct_type (struct type
*type
)
2622 if (HAVE_CPLUS_STRUCT (type
))
2623 /* Structure was already allocated. Nothing more to do. */
2626 TYPE_SPECIFIC_FIELD (type
) = TYPE_SPECIFIC_CPLUS_STUFF
;
2627 TYPE_RAW_CPLUS_SPECIFIC (type
) = (struct cplus_struct_type
*)
2628 TYPE_ALLOC (type
, sizeof (struct cplus_struct_type
));
2629 *(TYPE_RAW_CPLUS_SPECIFIC (type
)) = cplus_struct_default
;
2630 set_type_vptr_fieldno (type
, -1);
2633 const struct gnat_aux_type gnat_aux_default
=
2636 /* Set the TYPE's type-specific kind to TYPE_SPECIFIC_GNAT_STUFF,
2637 and allocate the associated gnat-specific data. The gnat-specific
2638 data is also initialized to gnat_aux_default. */
2641 allocate_gnat_aux_type (struct type
*type
)
2643 TYPE_SPECIFIC_FIELD (type
) = TYPE_SPECIFIC_GNAT_STUFF
;
2644 TYPE_GNAT_SPECIFIC (type
) = (struct gnat_aux_type
*)
2645 TYPE_ALLOC (type
, sizeof (struct gnat_aux_type
));
2646 *(TYPE_GNAT_SPECIFIC (type
)) = gnat_aux_default
;
2649 /* Helper function to initialize the standard scalar types.
2651 If NAME is non-NULL, then it is used to initialize the type name.
2652 Note that NAME is not copied; it is required to have a lifetime at
2653 least as long as OBJFILE. */
2656 init_type (enum type_code code
, int length
, int flags
,
2657 const char *name
, struct objfile
*objfile
)
2661 type
= alloc_type (objfile
);
2662 TYPE_CODE (type
) = code
;
2663 TYPE_LENGTH (type
) = length
;
2665 gdb_assert (!(flags
& (TYPE_FLAG_MIN
- 1)));
2666 if (flags
& TYPE_FLAG_UNSIGNED
)
2667 TYPE_UNSIGNED (type
) = 1;
2668 if (flags
& TYPE_FLAG_NOSIGN
)
2669 TYPE_NOSIGN (type
) = 1;
2670 if (flags
& TYPE_FLAG_STUB
)
2671 TYPE_STUB (type
) = 1;
2672 if (flags
& TYPE_FLAG_TARGET_STUB
)
2673 TYPE_TARGET_STUB (type
) = 1;
2674 if (flags
& TYPE_FLAG_STATIC
)
2675 TYPE_STATIC (type
) = 1;
2676 if (flags
& TYPE_FLAG_PROTOTYPED
)
2677 TYPE_PROTOTYPED (type
) = 1;
2678 if (flags
& TYPE_FLAG_INCOMPLETE
)
2679 TYPE_INCOMPLETE (type
) = 1;
2680 if (flags
& TYPE_FLAG_VARARGS
)
2681 TYPE_VARARGS (type
) = 1;
2682 if (flags
& TYPE_FLAG_VECTOR
)
2683 TYPE_VECTOR (type
) = 1;
2684 if (flags
& TYPE_FLAG_STUB_SUPPORTED
)
2685 TYPE_STUB_SUPPORTED (type
) = 1;
2686 if (flags
& TYPE_FLAG_FIXED_INSTANCE
)
2687 TYPE_FIXED_INSTANCE (type
) = 1;
2688 if (flags
& TYPE_FLAG_GNU_IFUNC
)
2689 TYPE_GNU_IFUNC (type
) = 1;
2691 TYPE_NAME (type
) = name
;
2695 if (name
&& strcmp (name
, "char") == 0)
2696 TYPE_NOSIGN (type
) = 1;
2700 case TYPE_CODE_STRUCT
:
2701 case TYPE_CODE_UNION
:
2702 case TYPE_CODE_NAMESPACE
:
2703 INIT_CPLUS_SPECIFIC (type
);
2706 TYPE_SPECIFIC_FIELD (type
) = TYPE_SPECIFIC_FLOATFORMAT
;
2708 case TYPE_CODE_FUNC
:
2709 INIT_FUNC_SPECIFIC (type
);
2715 /* Queries on types. */
2718 can_dereference (struct type
*t
)
2720 /* FIXME: Should we return true for references as well as
2722 t
= check_typedef (t
);
2725 && TYPE_CODE (t
) == TYPE_CODE_PTR
2726 && TYPE_CODE (TYPE_TARGET_TYPE (t
)) != TYPE_CODE_VOID
);
2730 is_integral_type (struct type
*t
)
2732 t
= check_typedef (t
);
2735 && ((TYPE_CODE (t
) == TYPE_CODE_INT
)
2736 || (TYPE_CODE (t
) == TYPE_CODE_ENUM
)
2737 || (TYPE_CODE (t
) == TYPE_CODE_FLAGS
)
2738 || (TYPE_CODE (t
) == TYPE_CODE_CHAR
)
2739 || (TYPE_CODE (t
) == TYPE_CODE_RANGE
)
2740 || (TYPE_CODE (t
) == TYPE_CODE_BOOL
)));
2743 /* Return true if TYPE is scalar. */
2746 is_scalar_type (struct type
*type
)
2748 type
= check_typedef (type
);
2750 switch (TYPE_CODE (type
))
2752 case TYPE_CODE_ARRAY
:
2753 case TYPE_CODE_STRUCT
:
2754 case TYPE_CODE_UNION
:
2756 case TYPE_CODE_STRING
:
2763 /* Return true if T is scalar, or a composite type which in practice has
2764 the memory layout of a scalar type. E.g., an array or struct with only
2765 one scalar element inside it, or a union with only scalar elements. */
2768 is_scalar_type_recursive (struct type
*t
)
2770 t
= check_typedef (t
);
2772 if (is_scalar_type (t
))
2774 /* Are we dealing with an array or string of known dimensions? */
2775 else if ((TYPE_CODE (t
) == TYPE_CODE_ARRAY
2776 || TYPE_CODE (t
) == TYPE_CODE_STRING
) && TYPE_NFIELDS (t
) == 1
2777 && TYPE_CODE (TYPE_INDEX_TYPE (t
)) == TYPE_CODE_RANGE
)
2779 LONGEST low_bound
, high_bound
;
2780 struct type
*elt_type
= check_typedef (TYPE_TARGET_TYPE (t
));
2782 get_discrete_bounds (TYPE_INDEX_TYPE (t
), &low_bound
, &high_bound
);
2784 return high_bound
== low_bound
&& is_scalar_type_recursive (elt_type
);
2786 /* Are we dealing with a struct with one element? */
2787 else if (TYPE_CODE (t
) == TYPE_CODE_STRUCT
&& TYPE_NFIELDS (t
) == 1)
2788 return is_scalar_type_recursive (TYPE_FIELD_TYPE (t
, 0));
2789 else if (TYPE_CODE (t
) == TYPE_CODE_UNION
)
2791 int i
, n
= TYPE_NFIELDS (t
);
2793 /* If all elements of the union are scalar, then the union is scalar. */
2794 for (i
= 0; i
< n
; i
++)
2795 if (!is_scalar_type_recursive (TYPE_FIELD_TYPE (t
, i
)))
2804 /* Return true is T is a class or a union. False otherwise. */
2807 class_or_union_p (const struct type
*t
)
2809 return (TYPE_CODE (t
) == TYPE_CODE_STRUCT
2810 || TYPE_CODE (t
) == TYPE_CODE_UNION
);
2813 /* A helper function which returns true if types A and B represent the
2814 "same" class type. This is true if the types have the same main
2815 type, or the same name. */
2818 class_types_same_p (const struct type
*a
, const struct type
*b
)
2820 return (TYPE_MAIN_TYPE (a
) == TYPE_MAIN_TYPE (b
)
2821 || (TYPE_NAME (a
) && TYPE_NAME (b
)
2822 && !strcmp (TYPE_NAME (a
), TYPE_NAME (b
))));
2825 /* If BASE is an ancestor of DCLASS return the distance between them.
2826 otherwise return -1;
2830 class B: public A {};
2831 class C: public B {};
2834 distance_to_ancestor (A, A, 0) = 0
2835 distance_to_ancestor (A, B, 0) = 1
2836 distance_to_ancestor (A, C, 0) = 2
2837 distance_to_ancestor (A, D, 0) = 3
2839 If PUBLIC is 1 then only public ancestors are considered,
2840 and the function returns the distance only if BASE is a public ancestor
2844 distance_to_ancestor (A, D, 1) = -1. */
2847 distance_to_ancestor (struct type
*base
, struct type
*dclass
, int is_public
)
2852 base
= check_typedef (base
);
2853 dclass
= check_typedef (dclass
);
2855 if (class_types_same_p (base
, dclass
))
2858 for (i
= 0; i
< TYPE_N_BASECLASSES (dclass
); i
++)
2860 if (is_public
&& ! BASETYPE_VIA_PUBLIC (dclass
, i
))
2863 d
= distance_to_ancestor (base
, TYPE_BASECLASS (dclass
, i
), is_public
);
2871 /* Check whether BASE is an ancestor or base class or DCLASS
2872 Return 1 if so, and 0 if not.
2873 Note: If BASE and DCLASS are of the same type, this function
2874 will return 1. So for some class A, is_ancestor (A, A) will
2878 is_ancestor (struct type
*base
, struct type
*dclass
)
2880 return distance_to_ancestor (base
, dclass
, 0) >= 0;
2883 /* Like is_ancestor, but only returns true when BASE is a public
2884 ancestor of DCLASS. */
2887 is_public_ancestor (struct type
*base
, struct type
*dclass
)
2889 return distance_to_ancestor (base
, dclass
, 1) >= 0;
2892 /* A helper function for is_unique_ancestor. */
2895 is_unique_ancestor_worker (struct type
*base
, struct type
*dclass
,
2897 const gdb_byte
*valaddr
, int embedded_offset
,
2898 CORE_ADDR address
, struct value
*val
)
2902 base
= check_typedef (base
);
2903 dclass
= check_typedef (dclass
);
2905 for (i
= 0; i
< TYPE_N_BASECLASSES (dclass
) && count
< 2; ++i
)
2910 iter
= check_typedef (TYPE_BASECLASS (dclass
, i
));
2912 this_offset
= baseclass_offset (dclass
, i
, valaddr
, embedded_offset
,
2915 if (class_types_same_p (base
, iter
))
2917 /* If this is the first subclass, set *OFFSET and set count
2918 to 1. Otherwise, if this is at the same offset as
2919 previous instances, do nothing. Otherwise, increment
2923 *offset
= this_offset
;
2926 else if (this_offset
== *offset
)
2934 count
+= is_unique_ancestor_worker (base
, iter
, offset
,
2936 embedded_offset
+ this_offset
,
2943 /* Like is_ancestor, but only returns true if BASE is a unique base
2944 class of the type of VAL. */
2947 is_unique_ancestor (struct type
*base
, struct value
*val
)
2951 return is_unique_ancestor_worker (base
, value_type (val
), &offset
,
2952 value_contents_for_printing (val
),
2953 value_embedded_offset (val
),
2954 value_address (val
), val
) == 1;
2958 /* Overload resolution. */
2960 /* Return the sum of the rank of A with the rank of B. */
2963 sum_ranks (struct rank a
, struct rank b
)
2966 c
.rank
= a
.rank
+ b
.rank
;
2967 c
.subrank
= a
.subrank
+ b
.subrank
;
2971 /* Compare rank A and B and return:
2973 1 if a is better than b
2974 -1 if b is better than a. */
2977 compare_ranks (struct rank a
, struct rank b
)
2979 if (a
.rank
== b
.rank
)
2981 if (a
.subrank
== b
.subrank
)
2983 if (a
.subrank
< b
.subrank
)
2985 if (a
.subrank
> b
.subrank
)
2989 if (a
.rank
< b
.rank
)
2992 /* a.rank > b.rank */
2996 /* Functions for overload resolution begin here. */
2998 /* Compare two badness vectors A and B and return the result.
2999 0 => A and B are identical
3000 1 => A and B are incomparable
3001 2 => A is better than B
3002 3 => A is worse than B */
3005 compare_badness (struct badness_vector
*a
, struct badness_vector
*b
)
3009 short found_pos
= 0; /* any positives in c? */
3010 short found_neg
= 0; /* any negatives in c? */
3012 /* differing lengths => incomparable */
3013 if (a
->length
!= b
->length
)
3016 /* Subtract b from a */
3017 for (i
= 0; i
< a
->length
; i
++)
3019 tmp
= compare_ranks (b
->rank
[i
], a
->rank
[i
]);
3029 return 1; /* incomparable */
3031 return 3; /* A > B */
3037 return 2; /* A < B */
3039 return 0; /* A == B */
3043 /* Rank a function by comparing its parameter types (PARMS, length
3044 NPARMS), to the types of an argument list (ARGS, length NARGS).
3045 Return a pointer to a badness vector. This has NARGS + 1
3048 struct badness_vector
*
3049 rank_function (struct type
**parms
, int nparms
,
3050 struct value
**args
, int nargs
)
3053 struct badness_vector
*bv
= XNEW (struct badness_vector
);
3054 int min_len
= nparms
< nargs
? nparms
: nargs
;
3056 bv
->length
= nargs
+ 1; /* add 1 for the length-match rank. */
3057 bv
->rank
= XNEWVEC (struct rank
, nargs
+ 1);
3059 /* First compare the lengths of the supplied lists.
3060 If there is a mismatch, set it to a high value. */
3062 /* pai/1997-06-03 FIXME: when we have debug info about default
3063 arguments and ellipsis parameter lists, we should consider those
3064 and rank the length-match more finely. */
3066 LENGTH_MATCH (bv
) = (nargs
!= nparms
)
3067 ? LENGTH_MISMATCH_BADNESS
3068 : EXACT_MATCH_BADNESS
;
3070 /* Now rank all the parameters of the candidate function. */
3071 for (i
= 1; i
<= min_len
; i
++)
3072 bv
->rank
[i
] = rank_one_type (parms
[i
- 1], value_type (args
[i
- 1]),
3075 /* If more arguments than parameters, add dummy entries. */
3076 for (i
= min_len
+ 1; i
<= nargs
; i
++)
3077 bv
->rank
[i
] = TOO_FEW_PARAMS_BADNESS
;
3082 /* Compare the names of two integer types, assuming that any sign
3083 qualifiers have been checked already. We do it this way because
3084 there may be an "int" in the name of one of the types. */
3087 integer_types_same_name_p (const char *first
, const char *second
)
3089 int first_p
, second_p
;
3091 /* If both are shorts, return 1; if neither is a short, keep
3093 first_p
= (strstr (first
, "short") != NULL
);
3094 second_p
= (strstr (second
, "short") != NULL
);
3095 if (first_p
&& second_p
)
3097 if (first_p
|| second_p
)
3100 /* Likewise for long. */
3101 first_p
= (strstr (first
, "long") != NULL
);
3102 second_p
= (strstr (second
, "long") != NULL
);
3103 if (first_p
&& second_p
)
3105 if (first_p
|| second_p
)
3108 /* Likewise for char. */
3109 first_p
= (strstr (first
, "char") != NULL
);
3110 second_p
= (strstr (second
, "char") != NULL
);
3111 if (first_p
&& second_p
)
3113 if (first_p
|| second_p
)
3116 /* They must both be ints. */
3120 /* Compares type A to type B returns 1 if the represent the same type
3124 types_equal (struct type
*a
, struct type
*b
)
3126 /* Identical type pointers. */
3127 /* However, this still doesn't catch all cases of same type for b
3128 and a. The reason is that builtin types are different from
3129 the same ones constructed from the object. */
3133 /* Resolve typedefs */
3134 if (TYPE_CODE (a
) == TYPE_CODE_TYPEDEF
)
3135 a
= check_typedef (a
);
3136 if (TYPE_CODE (b
) == TYPE_CODE_TYPEDEF
)
3137 b
= check_typedef (b
);
3139 /* If after resolving typedefs a and b are not of the same type
3140 code then they are not equal. */
3141 if (TYPE_CODE (a
) != TYPE_CODE (b
))
3144 /* If a and b are both pointers types or both reference types then
3145 they are equal of the same type iff the objects they refer to are
3146 of the same type. */
3147 if (TYPE_CODE (a
) == TYPE_CODE_PTR
3148 || TYPE_CODE (a
) == TYPE_CODE_REF
)
3149 return types_equal (TYPE_TARGET_TYPE (a
),
3150 TYPE_TARGET_TYPE (b
));
3152 /* Well, damnit, if the names are exactly the same, I'll say they
3153 are exactly the same. This happens when we generate method
3154 stubs. The types won't point to the same address, but they
3155 really are the same. */
3157 if (TYPE_NAME (a
) && TYPE_NAME (b
)
3158 && strcmp (TYPE_NAME (a
), TYPE_NAME (b
)) == 0)
3161 /* Check if identical after resolving typedefs. */
3165 /* Two function types are equal if their argument and return types
3167 if (TYPE_CODE (a
) == TYPE_CODE_FUNC
)
3171 if (TYPE_NFIELDS (a
) != TYPE_NFIELDS (b
))
3174 if (!types_equal (TYPE_TARGET_TYPE (a
), TYPE_TARGET_TYPE (b
)))
3177 for (i
= 0; i
< TYPE_NFIELDS (a
); ++i
)
3178 if (!types_equal (TYPE_FIELD_TYPE (a
, i
), TYPE_FIELD_TYPE (b
, i
)))
3187 /* Deep comparison of types. */
3189 /* An entry in the type-equality bcache. */
3191 typedef struct type_equality_entry
3193 struct type
*type1
, *type2
;
3194 } type_equality_entry_d
;
3196 DEF_VEC_O (type_equality_entry_d
);
3198 /* A helper function to compare two strings. Returns 1 if they are
3199 the same, 0 otherwise. Handles NULLs properly. */
3202 compare_maybe_null_strings (const char *s
, const char *t
)
3204 if (s
== NULL
&& t
!= NULL
)
3206 else if (s
!= NULL
&& t
== NULL
)
3208 else if (s
== NULL
&& t
== NULL
)
3210 return strcmp (s
, t
) == 0;
3213 /* A helper function for check_types_worklist that checks two types for
3214 "deep" equality. Returns non-zero if the types are considered the
3215 same, zero otherwise. */
3218 check_types_equal (struct type
*type1
, struct type
*type2
,
3219 VEC (type_equality_entry_d
) **worklist
)
3221 type1
= check_typedef (type1
);
3222 type2
= check_typedef (type2
);
3227 if (TYPE_CODE (type1
) != TYPE_CODE (type2
)
3228 || TYPE_LENGTH (type1
) != TYPE_LENGTH (type2
)
3229 || TYPE_UNSIGNED (type1
) != TYPE_UNSIGNED (type2
)
3230 || TYPE_NOSIGN (type1
) != TYPE_NOSIGN (type2
)
3231 || TYPE_VARARGS (type1
) != TYPE_VARARGS (type2
)
3232 || TYPE_VECTOR (type1
) != TYPE_VECTOR (type2
)
3233 || TYPE_NOTTEXT (type1
) != TYPE_NOTTEXT (type2
)
3234 || TYPE_INSTANCE_FLAGS (type1
) != TYPE_INSTANCE_FLAGS (type2
)
3235 || TYPE_NFIELDS (type1
) != TYPE_NFIELDS (type2
))
3238 if (!compare_maybe_null_strings (TYPE_TAG_NAME (type1
),
3239 TYPE_TAG_NAME (type2
)))
3241 if (!compare_maybe_null_strings (TYPE_NAME (type1
), TYPE_NAME (type2
)))
3244 if (TYPE_CODE (type1
) == TYPE_CODE_RANGE
)
3246 if (memcmp (TYPE_RANGE_DATA (type1
), TYPE_RANGE_DATA (type2
),
3247 sizeof (*TYPE_RANGE_DATA (type1
))) != 0)
3254 for (i
= 0; i
< TYPE_NFIELDS (type1
); ++i
)
3256 const struct field
*field1
= &TYPE_FIELD (type1
, i
);
3257 const struct field
*field2
= &TYPE_FIELD (type2
, i
);
3258 struct type_equality_entry entry
;
3260 if (FIELD_ARTIFICIAL (*field1
) != FIELD_ARTIFICIAL (*field2
)
3261 || FIELD_BITSIZE (*field1
) != FIELD_BITSIZE (*field2
)
3262 || FIELD_LOC_KIND (*field1
) != FIELD_LOC_KIND (*field2
))
3264 if (!compare_maybe_null_strings (FIELD_NAME (*field1
),
3265 FIELD_NAME (*field2
)))
3267 switch (FIELD_LOC_KIND (*field1
))
3269 case FIELD_LOC_KIND_BITPOS
:
3270 if (FIELD_BITPOS (*field1
) != FIELD_BITPOS (*field2
))
3273 case FIELD_LOC_KIND_ENUMVAL
:
3274 if (FIELD_ENUMVAL (*field1
) != FIELD_ENUMVAL (*field2
))
3277 case FIELD_LOC_KIND_PHYSADDR
:
3278 if (FIELD_STATIC_PHYSADDR (*field1
)
3279 != FIELD_STATIC_PHYSADDR (*field2
))
3282 case FIELD_LOC_KIND_PHYSNAME
:
3283 if (!compare_maybe_null_strings (FIELD_STATIC_PHYSNAME (*field1
),
3284 FIELD_STATIC_PHYSNAME (*field2
)))
3287 case FIELD_LOC_KIND_DWARF_BLOCK
:
3289 struct dwarf2_locexpr_baton
*block1
, *block2
;
3291 block1
= FIELD_DWARF_BLOCK (*field1
);
3292 block2
= FIELD_DWARF_BLOCK (*field2
);
3293 if (block1
->per_cu
!= block2
->per_cu
3294 || block1
->size
!= block2
->size
3295 || memcmp (block1
->data
, block2
->data
, block1
->size
) != 0)
3300 internal_error (__FILE__
, __LINE__
, _("Unsupported field kind "
3301 "%d by check_types_equal"),
3302 FIELD_LOC_KIND (*field1
));
3305 entry
.type1
= FIELD_TYPE (*field1
);
3306 entry
.type2
= FIELD_TYPE (*field2
);
3307 VEC_safe_push (type_equality_entry_d
, *worklist
, &entry
);
3311 if (TYPE_TARGET_TYPE (type1
) != NULL
)
3313 struct type_equality_entry entry
;
3315 if (TYPE_TARGET_TYPE (type2
) == NULL
)
3318 entry
.type1
= TYPE_TARGET_TYPE (type1
);
3319 entry
.type2
= TYPE_TARGET_TYPE (type2
);
3320 VEC_safe_push (type_equality_entry_d
, *worklist
, &entry
);
3322 else if (TYPE_TARGET_TYPE (type2
) != NULL
)
3328 /* Check types on a worklist for equality. Returns zero if any pair
3329 is not equal, non-zero if they are all considered equal. */
3332 check_types_worklist (VEC (type_equality_entry_d
) **worklist
,
3333 struct bcache
*cache
)
3335 while (!VEC_empty (type_equality_entry_d
, *worklist
))
3337 struct type_equality_entry entry
;
3340 entry
= *VEC_last (type_equality_entry_d
, *worklist
);
3341 VEC_pop (type_equality_entry_d
, *worklist
);
3343 /* If the type pair has already been visited, we know it is
3345 bcache_full (&entry
, sizeof (entry
), cache
, &added
);
3349 if (check_types_equal (entry
.type1
, entry
.type2
, worklist
) == 0)
3356 /* Return non-zero if types TYPE1 and TYPE2 are equal, as determined by a
3357 "deep comparison". Otherwise return zero. */
3360 types_deeply_equal (struct type
*type1
, struct type
*type2
)
3362 struct gdb_exception except
= exception_none
;
3364 struct bcache
*cache
;
3365 VEC (type_equality_entry_d
) *worklist
= NULL
;
3366 struct type_equality_entry entry
;
3368 gdb_assert (type1
!= NULL
&& type2
!= NULL
);
3370 /* Early exit for the simple case. */
3374 cache
= bcache_xmalloc (NULL
, NULL
);
3376 entry
.type1
= type1
;
3377 entry
.type2
= type2
;
3378 VEC_safe_push (type_equality_entry_d
, worklist
, &entry
);
3380 /* check_types_worklist calls several nested helper functions, some
3381 of which can raise a GDB exception, so we just check and rethrow
3382 here. If there is a GDB exception, a comparison is not capable
3383 (or trusted), so exit. */
3386 result
= check_types_worklist (&worklist
, cache
);
3388 CATCH (ex
, RETURN_MASK_ALL
)
3394 bcache_xfree (cache
);
3395 VEC_free (type_equality_entry_d
, worklist
);
3397 /* Rethrow if there was a problem. */
3398 if (except
.reason
< 0)
3399 throw_exception (except
);
3404 /* Allocated status of type TYPE. Return zero if type TYPE is allocated.
3405 Otherwise return one. */
3408 type_not_allocated (const struct type
*type
)
3410 struct dynamic_prop
*prop
= TYPE_ALLOCATED_PROP (type
);
3412 return (prop
&& TYPE_DYN_PROP_KIND (prop
) == PROP_CONST
3413 && !TYPE_DYN_PROP_ADDR (prop
));
3416 /* Associated status of type TYPE. Return zero if type TYPE is associated.
3417 Otherwise return one. */
3420 type_not_associated (const struct type
*type
)
3422 struct dynamic_prop
*prop
= TYPE_ASSOCIATED_PROP (type
);
3424 return (prop
&& TYPE_DYN_PROP_KIND (prop
) == PROP_CONST
3425 && !TYPE_DYN_PROP_ADDR (prop
));
3428 /* Compare one type (PARM) for compatibility with another (ARG).
3429 * PARM is intended to be the parameter type of a function; and
3430 * ARG is the supplied argument's type. This function tests if
3431 * the latter can be converted to the former.
3432 * VALUE is the argument's value or NULL if none (or called recursively)
3434 * Return 0 if they are identical types;
3435 * Otherwise, return an integer which corresponds to how compatible
3436 * PARM is to ARG. The higher the return value, the worse the match.
3437 * Generally the "bad" conversions are all uniformly assigned a 100. */
3440 rank_one_type (struct type
*parm
, struct type
*arg
, struct value
*value
)
3442 struct rank rank
= {0,0};
3444 if (types_equal (parm
, arg
))
3445 return EXACT_MATCH_BADNESS
;
3447 /* Resolve typedefs */
3448 if (TYPE_CODE (parm
) == TYPE_CODE_TYPEDEF
)
3449 parm
= check_typedef (parm
);
3450 if (TYPE_CODE (arg
) == TYPE_CODE_TYPEDEF
)
3451 arg
= check_typedef (arg
);
3453 /* See through references, since we can almost make non-references
3455 if (TYPE_CODE (arg
) == TYPE_CODE_REF
)
3456 return (sum_ranks (rank_one_type (parm
, TYPE_TARGET_TYPE (arg
), NULL
),
3457 REFERENCE_CONVERSION_BADNESS
));
3458 if (TYPE_CODE (parm
) == TYPE_CODE_REF
)
3459 return (sum_ranks (rank_one_type (TYPE_TARGET_TYPE (parm
), arg
, NULL
),
3460 REFERENCE_CONVERSION_BADNESS
));
3462 /* Debugging only. */
3463 fprintf_filtered (gdb_stderr
,
3464 "------ Arg is %s [%d], parm is %s [%d]\n",
3465 TYPE_NAME (arg
), TYPE_CODE (arg
),
3466 TYPE_NAME (parm
), TYPE_CODE (parm
));
3468 /* x -> y means arg of type x being supplied for parameter of type y. */
3470 switch (TYPE_CODE (parm
))
3473 switch (TYPE_CODE (arg
))
3477 /* Allowed pointer conversions are:
3478 (a) pointer to void-pointer conversion. */
3479 if (TYPE_CODE (TYPE_TARGET_TYPE (parm
)) == TYPE_CODE_VOID
)
3480 return VOID_PTR_CONVERSION_BADNESS
;
3482 /* (b) pointer to ancestor-pointer conversion. */
3483 rank
.subrank
= distance_to_ancestor (TYPE_TARGET_TYPE (parm
),
3484 TYPE_TARGET_TYPE (arg
),
3486 if (rank
.subrank
>= 0)
3487 return sum_ranks (BASE_PTR_CONVERSION_BADNESS
, rank
);
3489 return INCOMPATIBLE_TYPE_BADNESS
;
3490 case TYPE_CODE_ARRAY
:
3491 if (types_equal (TYPE_TARGET_TYPE (parm
),
3492 TYPE_TARGET_TYPE (arg
)))
3493 return EXACT_MATCH_BADNESS
;
3494 return INCOMPATIBLE_TYPE_BADNESS
;
3495 case TYPE_CODE_FUNC
:
3496 return rank_one_type (TYPE_TARGET_TYPE (parm
), arg
, NULL
);
3498 if (value
!= NULL
&& TYPE_CODE (value_type (value
)) == TYPE_CODE_INT
)
3500 if (value_as_long (value
) == 0)
3502 /* Null pointer conversion: allow it to be cast to a pointer.
3503 [4.10.1 of C++ standard draft n3290] */
3504 return NULL_POINTER_CONVERSION_BADNESS
;
3508 /* If type checking is disabled, allow the conversion. */
3509 if (!strict_type_checking
)
3510 return NS_INTEGER_POINTER_CONVERSION_BADNESS
;
3514 case TYPE_CODE_ENUM
:
3515 case TYPE_CODE_FLAGS
:
3516 case TYPE_CODE_CHAR
:
3517 case TYPE_CODE_RANGE
:
3518 case TYPE_CODE_BOOL
:
3520 return INCOMPATIBLE_TYPE_BADNESS
;
3522 case TYPE_CODE_ARRAY
:
3523 switch (TYPE_CODE (arg
))
3526 case TYPE_CODE_ARRAY
:
3527 return rank_one_type (TYPE_TARGET_TYPE (parm
),
3528 TYPE_TARGET_TYPE (arg
), NULL
);
3530 return INCOMPATIBLE_TYPE_BADNESS
;
3532 case TYPE_CODE_FUNC
:
3533 switch (TYPE_CODE (arg
))
3535 case TYPE_CODE_PTR
: /* funcptr -> func */
3536 return rank_one_type (parm
, TYPE_TARGET_TYPE (arg
), NULL
);
3538 return INCOMPATIBLE_TYPE_BADNESS
;
3541 switch (TYPE_CODE (arg
))
3544 if (TYPE_LENGTH (arg
) == TYPE_LENGTH (parm
))
3546 /* Deal with signed, unsigned, and plain chars and
3547 signed and unsigned ints. */
3548 if (TYPE_NOSIGN (parm
))
3550 /* This case only for character types. */
3551 if (TYPE_NOSIGN (arg
))
3552 return EXACT_MATCH_BADNESS
; /* plain char -> plain char */
3553 else /* signed/unsigned char -> plain char */
3554 return INTEGER_CONVERSION_BADNESS
;
3556 else if (TYPE_UNSIGNED (parm
))
3558 if (TYPE_UNSIGNED (arg
))
3560 /* unsigned int -> unsigned int, or
3561 unsigned long -> unsigned long */
3562 if (integer_types_same_name_p (TYPE_NAME (parm
),
3564 return EXACT_MATCH_BADNESS
;
3565 else if (integer_types_same_name_p (TYPE_NAME (arg
),
3567 && integer_types_same_name_p (TYPE_NAME (parm
),
3569 /* unsigned int -> unsigned long */
3570 return INTEGER_PROMOTION_BADNESS
;
3572 /* unsigned long -> unsigned int */
3573 return INTEGER_CONVERSION_BADNESS
;
3577 if (integer_types_same_name_p (TYPE_NAME (arg
),
3579 && integer_types_same_name_p (TYPE_NAME (parm
),
3581 /* signed long -> unsigned int */
3582 return INTEGER_CONVERSION_BADNESS
;
3584 /* signed int/long -> unsigned int/long */
3585 return INTEGER_CONVERSION_BADNESS
;
3588 else if (!TYPE_NOSIGN (arg
) && !TYPE_UNSIGNED (arg
))
3590 if (integer_types_same_name_p (TYPE_NAME (parm
),
3592 return EXACT_MATCH_BADNESS
;
3593 else if (integer_types_same_name_p (TYPE_NAME (arg
),
3595 && integer_types_same_name_p (TYPE_NAME (parm
),
3597 return INTEGER_PROMOTION_BADNESS
;
3599 return INTEGER_CONVERSION_BADNESS
;
3602 return INTEGER_CONVERSION_BADNESS
;
3604 else if (TYPE_LENGTH (arg
) < TYPE_LENGTH (parm
))
3605 return INTEGER_PROMOTION_BADNESS
;
3607 return INTEGER_CONVERSION_BADNESS
;
3608 case TYPE_CODE_ENUM
:
3609 case TYPE_CODE_FLAGS
:
3610 case TYPE_CODE_CHAR
:
3611 case TYPE_CODE_RANGE
:
3612 case TYPE_CODE_BOOL
:
3613 if (TYPE_DECLARED_CLASS (arg
))
3614 return INCOMPATIBLE_TYPE_BADNESS
;
3615 return INTEGER_PROMOTION_BADNESS
;
3617 return INT_FLOAT_CONVERSION_BADNESS
;
3619 return NS_POINTER_CONVERSION_BADNESS
;
3621 return INCOMPATIBLE_TYPE_BADNESS
;
3624 case TYPE_CODE_ENUM
:
3625 switch (TYPE_CODE (arg
))
3628 case TYPE_CODE_CHAR
:
3629 case TYPE_CODE_RANGE
:
3630 case TYPE_CODE_BOOL
:
3631 case TYPE_CODE_ENUM
:
3632 if (TYPE_DECLARED_CLASS (parm
) || TYPE_DECLARED_CLASS (arg
))
3633 return INCOMPATIBLE_TYPE_BADNESS
;
3634 return INTEGER_CONVERSION_BADNESS
;
3636 return INT_FLOAT_CONVERSION_BADNESS
;
3638 return INCOMPATIBLE_TYPE_BADNESS
;
3641 case TYPE_CODE_CHAR
:
3642 switch (TYPE_CODE (arg
))
3644 case TYPE_CODE_RANGE
:
3645 case TYPE_CODE_BOOL
:
3646 case TYPE_CODE_ENUM
:
3647 if (TYPE_DECLARED_CLASS (arg
))
3648 return INCOMPATIBLE_TYPE_BADNESS
;
3649 return INTEGER_CONVERSION_BADNESS
;
3651 return INT_FLOAT_CONVERSION_BADNESS
;
3653 if (TYPE_LENGTH (arg
) > TYPE_LENGTH (parm
))
3654 return INTEGER_CONVERSION_BADNESS
;
3655 else if (TYPE_LENGTH (arg
) < TYPE_LENGTH (parm
))
3656 return INTEGER_PROMOTION_BADNESS
;
3657 /* >>> !! else fall through !! <<< */
3658 case TYPE_CODE_CHAR
:
3659 /* Deal with signed, unsigned, and plain chars for C++ and
3660 with int cases falling through from previous case. */
3661 if (TYPE_NOSIGN (parm
))
3663 if (TYPE_NOSIGN (arg
))
3664 return EXACT_MATCH_BADNESS
;
3666 return INTEGER_CONVERSION_BADNESS
;
3668 else if (TYPE_UNSIGNED (parm
))
3670 if (TYPE_UNSIGNED (arg
))
3671 return EXACT_MATCH_BADNESS
;
3673 return INTEGER_PROMOTION_BADNESS
;
3675 else if (!TYPE_NOSIGN (arg
) && !TYPE_UNSIGNED (arg
))
3676 return EXACT_MATCH_BADNESS
;
3678 return INTEGER_CONVERSION_BADNESS
;
3680 return INCOMPATIBLE_TYPE_BADNESS
;
3683 case TYPE_CODE_RANGE
:
3684 switch (TYPE_CODE (arg
))
3687 case TYPE_CODE_CHAR
:
3688 case TYPE_CODE_RANGE
:
3689 case TYPE_CODE_BOOL
:
3690 case TYPE_CODE_ENUM
:
3691 return INTEGER_CONVERSION_BADNESS
;
3693 return INT_FLOAT_CONVERSION_BADNESS
;
3695 return INCOMPATIBLE_TYPE_BADNESS
;
3698 case TYPE_CODE_BOOL
:
3699 switch (TYPE_CODE (arg
))
3701 /* n3290 draft, section 4.12.1 (conv.bool):
3703 "A prvalue of arithmetic, unscoped enumeration, pointer, or
3704 pointer to member type can be converted to a prvalue of type
3705 bool. A zero value, null pointer value, or null member pointer
3706 value is converted to false; any other value is converted to
3707 true. A prvalue of type std::nullptr_t can be converted to a
3708 prvalue of type bool; the resulting value is false." */
3710 case TYPE_CODE_CHAR
:
3711 case TYPE_CODE_ENUM
:
3713 case TYPE_CODE_MEMBERPTR
:
3715 return BOOL_CONVERSION_BADNESS
;
3716 case TYPE_CODE_RANGE
:
3717 return INCOMPATIBLE_TYPE_BADNESS
;
3718 case TYPE_CODE_BOOL
:
3719 return EXACT_MATCH_BADNESS
;
3721 return INCOMPATIBLE_TYPE_BADNESS
;
3725 switch (TYPE_CODE (arg
))
3728 if (TYPE_LENGTH (arg
) < TYPE_LENGTH (parm
))
3729 return FLOAT_PROMOTION_BADNESS
;
3730 else if (TYPE_LENGTH (arg
) == TYPE_LENGTH (parm
))
3731 return EXACT_MATCH_BADNESS
;
3733 return FLOAT_CONVERSION_BADNESS
;
3735 case TYPE_CODE_BOOL
:
3736 case TYPE_CODE_ENUM
:
3737 case TYPE_CODE_RANGE
:
3738 case TYPE_CODE_CHAR
:
3739 return INT_FLOAT_CONVERSION_BADNESS
;
3741 return INCOMPATIBLE_TYPE_BADNESS
;
3744 case TYPE_CODE_COMPLEX
:
3745 switch (TYPE_CODE (arg
))
3746 { /* Strictly not needed for C++, but... */
3748 return FLOAT_PROMOTION_BADNESS
;
3749 case TYPE_CODE_COMPLEX
:
3750 return EXACT_MATCH_BADNESS
;
3752 return INCOMPATIBLE_TYPE_BADNESS
;
3755 case TYPE_CODE_STRUCT
:
3756 switch (TYPE_CODE (arg
))
3758 case TYPE_CODE_STRUCT
:
3759 /* Check for derivation */
3760 rank
.subrank
= distance_to_ancestor (parm
, arg
, 0);
3761 if (rank
.subrank
>= 0)
3762 return sum_ranks (BASE_CONVERSION_BADNESS
, rank
);
3763 /* else fall through */
3765 return INCOMPATIBLE_TYPE_BADNESS
;
3768 case TYPE_CODE_UNION
:
3769 switch (TYPE_CODE (arg
))
3771 case TYPE_CODE_UNION
:
3773 return INCOMPATIBLE_TYPE_BADNESS
;
3776 case TYPE_CODE_MEMBERPTR
:
3777 switch (TYPE_CODE (arg
))
3780 return INCOMPATIBLE_TYPE_BADNESS
;
3783 case TYPE_CODE_METHOD
:
3784 switch (TYPE_CODE (arg
))
3788 return INCOMPATIBLE_TYPE_BADNESS
;
3792 switch (TYPE_CODE (arg
))
3796 return INCOMPATIBLE_TYPE_BADNESS
;
3801 switch (TYPE_CODE (arg
))
3805 return rank_one_type (TYPE_FIELD_TYPE (parm
, 0),
3806 TYPE_FIELD_TYPE (arg
, 0), NULL
);
3808 return INCOMPATIBLE_TYPE_BADNESS
;
3811 case TYPE_CODE_VOID
:
3813 return INCOMPATIBLE_TYPE_BADNESS
;
3814 } /* switch (TYPE_CODE (arg)) */
3817 /* End of functions for overload resolution. */
3819 /* Routines to pretty-print types. */
3822 print_bit_vector (B_TYPE
*bits
, int nbits
)
3826 for (bitno
= 0; bitno
< nbits
; bitno
++)
3828 if ((bitno
% 8) == 0)
3830 puts_filtered (" ");
3832 if (B_TST (bits
, bitno
))
3833 printf_filtered (("1"));
3835 printf_filtered (("0"));
3839 /* Note the first arg should be the "this" pointer, we may not want to
3840 include it since we may get into a infinitely recursive
3844 print_args (struct field
*args
, int nargs
, int spaces
)
3850 for (i
= 0; i
< nargs
; i
++)
3852 printfi_filtered (spaces
, "[%d] name '%s'\n", i
,
3853 args
[i
].name
!= NULL
? args
[i
].name
: "<NULL>");
3854 recursive_dump_type (args
[i
].type
, spaces
+ 2);
3860 field_is_static (struct field
*f
)
3862 /* "static" fields are the fields whose location is not relative
3863 to the address of the enclosing struct. It would be nice to
3864 have a dedicated flag that would be set for static fields when
3865 the type is being created. But in practice, checking the field
3866 loc_kind should give us an accurate answer. */
3867 return (FIELD_LOC_KIND (*f
) == FIELD_LOC_KIND_PHYSNAME
3868 || FIELD_LOC_KIND (*f
) == FIELD_LOC_KIND_PHYSADDR
);
3872 dump_fn_fieldlists (struct type
*type
, int spaces
)
3878 printfi_filtered (spaces
, "fn_fieldlists ");
3879 gdb_print_host_address (TYPE_FN_FIELDLISTS (type
), gdb_stdout
);
3880 printf_filtered ("\n");
3881 for (method_idx
= 0; method_idx
< TYPE_NFN_FIELDS (type
); method_idx
++)
3883 f
= TYPE_FN_FIELDLIST1 (type
, method_idx
);
3884 printfi_filtered (spaces
+ 2, "[%d] name '%s' (",
3886 TYPE_FN_FIELDLIST_NAME (type
, method_idx
));
3887 gdb_print_host_address (TYPE_FN_FIELDLIST_NAME (type
, method_idx
),
3889 printf_filtered (_(") length %d\n"),
3890 TYPE_FN_FIELDLIST_LENGTH (type
, method_idx
));
3891 for (overload_idx
= 0;
3892 overload_idx
< TYPE_FN_FIELDLIST_LENGTH (type
, method_idx
);
3895 printfi_filtered (spaces
+ 4, "[%d] physname '%s' (",
3897 TYPE_FN_FIELD_PHYSNAME (f
, overload_idx
));
3898 gdb_print_host_address (TYPE_FN_FIELD_PHYSNAME (f
, overload_idx
),
3900 printf_filtered (")\n");
3901 printfi_filtered (spaces
+ 8, "type ");
3902 gdb_print_host_address (TYPE_FN_FIELD_TYPE (f
, overload_idx
),
3904 printf_filtered ("\n");
3906 recursive_dump_type (TYPE_FN_FIELD_TYPE (f
, overload_idx
),
3909 printfi_filtered (spaces
+ 8, "args ");
3910 gdb_print_host_address (TYPE_FN_FIELD_ARGS (f
, overload_idx
),
3912 printf_filtered ("\n");
3913 print_args (TYPE_FN_FIELD_ARGS (f
, overload_idx
),
3914 TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (f
, overload_idx
)),
3916 printfi_filtered (spaces
+ 8, "fcontext ");
3917 gdb_print_host_address (TYPE_FN_FIELD_FCONTEXT (f
, overload_idx
),
3919 printf_filtered ("\n");
3921 printfi_filtered (spaces
+ 8, "is_const %d\n",
3922 TYPE_FN_FIELD_CONST (f
, overload_idx
));
3923 printfi_filtered (spaces
+ 8, "is_volatile %d\n",
3924 TYPE_FN_FIELD_VOLATILE (f
, overload_idx
));
3925 printfi_filtered (spaces
+ 8, "is_private %d\n",
3926 TYPE_FN_FIELD_PRIVATE (f
, overload_idx
));
3927 printfi_filtered (spaces
+ 8, "is_protected %d\n",
3928 TYPE_FN_FIELD_PROTECTED (f
, overload_idx
));
3929 printfi_filtered (spaces
+ 8, "is_stub %d\n",
3930 TYPE_FN_FIELD_STUB (f
, overload_idx
));
3931 printfi_filtered (spaces
+ 8, "voffset %u\n",
3932 TYPE_FN_FIELD_VOFFSET (f
, overload_idx
));
3938 print_cplus_stuff (struct type
*type
, int spaces
)
3940 printfi_filtered (spaces
, "vptr_fieldno %d\n", TYPE_VPTR_FIELDNO (type
));
3941 printfi_filtered (spaces
, "vptr_basetype ");
3942 gdb_print_host_address (TYPE_VPTR_BASETYPE (type
), gdb_stdout
);
3943 puts_filtered ("\n");
3944 if (TYPE_VPTR_BASETYPE (type
) != NULL
)
3945 recursive_dump_type (TYPE_VPTR_BASETYPE (type
), spaces
+ 2);
3947 printfi_filtered (spaces
, "n_baseclasses %d\n",
3948 TYPE_N_BASECLASSES (type
));
3949 printfi_filtered (spaces
, "nfn_fields %d\n",
3950 TYPE_NFN_FIELDS (type
));
3951 if (TYPE_N_BASECLASSES (type
) > 0)
3953 printfi_filtered (spaces
, "virtual_field_bits (%d bits at *",
3954 TYPE_N_BASECLASSES (type
));
3955 gdb_print_host_address (TYPE_FIELD_VIRTUAL_BITS (type
),
3957 printf_filtered (")");
3959 print_bit_vector (TYPE_FIELD_VIRTUAL_BITS (type
),
3960 TYPE_N_BASECLASSES (type
));
3961 puts_filtered ("\n");
3963 if (TYPE_NFIELDS (type
) > 0)
3965 if (TYPE_FIELD_PRIVATE_BITS (type
) != NULL
)
3967 printfi_filtered (spaces
,
3968 "private_field_bits (%d bits at *",
3969 TYPE_NFIELDS (type
));
3970 gdb_print_host_address (TYPE_FIELD_PRIVATE_BITS (type
),
3972 printf_filtered (")");
3973 print_bit_vector (TYPE_FIELD_PRIVATE_BITS (type
),
3974 TYPE_NFIELDS (type
));
3975 puts_filtered ("\n");
3977 if (TYPE_FIELD_PROTECTED_BITS (type
) != NULL
)
3979 printfi_filtered (spaces
,
3980 "protected_field_bits (%d bits at *",
3981 TYPE_NFIELDS (type
));
3982 gdb_print_host_address (TYPE_FIELD_PROTECTED_BITS (type
),
3984 printf_filtered (")");
3985 print_bit_vector (TYPE_FIELD_PROTECTED_BITS (type
),
3986 TYPE_NFIELDS (type
));
3987 puts_filtered ("\n");
3990 if (TYPE_NFN_FIELDS (type
) > 0)
3992 dump_fn_fieldlists (type
, spaces
);
3996 /* Print the contents of the TYPE's type_specific union, assuming that
3997 its type-specific kind is TYPE_SPECIFIC_GNAT_STUFF. */
4000 print_gnat_stuff (struct type
*type
, int spaces
)
4002 struct type
*descriptive_type
= TYPE_DESCRIPTIVE_TYPE (type
);
4004 if (descriptive_type
== NULL
)
4005 printfi_filtered (spaces
+ 2, "no descriptive type\n");
4008 printfi_filtered (spaces
+ 2, "descriptive type\n");
4009 recursive_dump_type (descriptive_type
, spaces
+ 4);
4013 static struct obstack dont_print_type_obstack
;
4016 recursive_dump_type (struct type
*type
, int spaces
)
4021 obstack_begin (&dont_print_type_obstack
, 0);
4023 if (TYPE_NFIELDS (type
) > 0
4024 || (HAVE_CPLUS_STRUCT (type
) && TYPE_NFN_FIELDS (type
) > 0))
4026 struct type
**first_dont_print
4027 = (struct type
**) obstack_base (&dont_print_type_obstack
);
4029 int i
= (struct type
**)
4030 obstack_next_free (&dont_print_type_obstack
) - first_dont_print
;
4034 if (type
== first_dont_print
[i
])
4036 printfi_filtered (spaces
, "type node ");
4037 gdb_print_host_address (type
, gdb_stdout
);
4038 printf_filtered (_(" <same as already seen type>\n"));
4043 obstack_ptr_grow (&dont_print_type_obstack
, type
);
4046 printfi_filtered (spaces
, "type node ");
4047 gdb_print_host_address (type
, gdb_stdout
);
4048 printf_filtered ("\n");
4049 printfi_filtered (spaces
, "name '%s' (",
4050 TYPE_NAME (type
) ? TYPE_NAME (type
) : "<NULL>");
4051 gdb_print_host_address (TYPE_NAME (type
), gdb_stdout
);
4052 printf_filtered (")\n");
4053 printfi_filtered (spaces
, "tagname '%s' (",
4054 TYPE_TAG_NAME (type
) ? TYPE_TAG_NAME (type
) : "<NULL>");
4055 gdb_print_host_address (TYPE_TAG_NAME (type
), gdb_stdout
);
4056 printf_filtered (")\n");
4057 printfi_filtered (spaces
, "code 0x%x ", TYPE_CODE (type
));
4058 switch (TYPE_CODE (type
))
4060 case TYPE_CODE_UNDEF
:
4061 printf_filtered ("(TYPE_CODE_UNDEF)");
4064 printf_filtered ("(TYPE_CODE_PTR)");
4066 case TYPE_CODE_ARRAY
:
4067 printf_filtered ("(TYPE_CODE_ARRAY)");
4069 case TYPE_CODE_STRUCT
:
4070 printf_filtered ("(TYPE_CODE_STRUCT)");
4072 case TYPE_CODE_UNION
:
4073 printf_filtered ("(TYPE_CODE_UNION)");
4075 case TYPE_CODE_ENUM
:
4076 printf_filtered ("(TYPE_CODE_ENUM)");
4078 case TYPE_CODE_FLAGS
:
4079 printf_filtered ("(TYPE_CODE_FLAGS)");
4081 case TYPE_CODE_FUNC
:
4082 printf_filtered ("(TYPE_CODE_FUNC)");
4085 printf_filtered ("(TYPE_CODE_INT)");
4088 printf_filtered ("(TYPE_CODE_FLT)");
4090 case TYPE_CODE_VOID
:
4091 printf_filtered ("(TYPE_CODE_VOID)");
4094 printf_filtered ("(TYPE_CODE_SET)");
4096 case TYPE_CODE_RANGE
:
4097 printf_filtered ("(TYPE_CODE_RANGE)");
4099 case TYPE_CODE_STRING
:
4100 printf_filtered ("(TYPE_CODE_STRING)");
4102 case TYPE_CODE_ERROR
:
4103 printf_filtered ("(TYPE_CODE_ERROR)");
4105 case TYPE_CODE_MEMBERPTR
:
4106 printf_filtered ("(TYPE_CODE_MEMBERPTR)");
4108 case TYPE_CODE_METHODPTR
:
4109 printf_filtered ("(TYPE_CODE_METHODPTR)");
4111 case TYPE_CODE_METHOD
:
4112 printf_filtered ("(TYPE_CODE_METHOD)");
4115 printf_filtered ("(TYPE_CODE_REF)");
4117 case TYPE_CODE_CHAR
:
4118 printf_filtered ("(TYPE_CODE_CHAR)");
4120 case TYPE_CODE_BOOL
:
4121 printf_filtered ("(TYPE_CODE_BOOL)");
4123 case TYPE_CODE_COMPLEX
:
4124 printf_filtered ("(TYPE_CODE_COMPLEX)");
4126 case TYPE_CODE_TYPEDEF
:
4127 printf_filtered ("(TYPE_CODE_TYPEDEF)");
4129 case TYPE_CODE_NAMESPACE
:
4130 printf_filtered ("(TYPE_CODE_NAMESPACE)");
4133 printf_filtered ("(UNKNOWN TYPE CODE)");
4136 puts_filtered ("\n");
4137 printfi_filtered (spaces
, "length %d\n", TYPE_LENGTH (type
));
4138 if (TYPE_OBJFILE_OWNED (type
))
4140 printfi_filtered (spaces
, "objfile ");
4141 gdb_print_host_address (TYPE_OWNER (type
).objfile
, gdb_stdout
);
4145 printfi_filtered (spaces
, "gdbarch ");
4146 gdb_print_host_address (TYPE_OWNER (type
).gdbarch
, gdb_stdout
);
4148 printf_filtered ("\n");
4149 printfi_filtered (spaces
, "target_type ");
4150 gdb_print_host_address (TYPE_TARGET_TYPE (type
), gdb_stdout
);
4151 printf_filtered ("\n");
4152 if (TYPE_TARGET_TYPE (type
) != NULL
)
4154 recursive_dump_type (TYPE_TARGET_TYPE (type
), spaces
+ 2);
4156 printfi_filtered (spaces
, "pointer_type ");
4157 gdb_print_host_address (TYPE_POINTER_TYPE (type
), gdb_stdout
);
4158 printf_filtered ("\n");
4159 printfi_filtered (spaces
, "reference_type ");
4160 gdb_print_host_address (TYPE_REFERENCE_TYPE (type
), gdb_stdout
);
4161 printf_filtered ("\n");
4162 printfi_filtered (spaces
, "type_chain ");
4163 gdb_print_host_address (TYPE_CHAIN (type
), gdb_stdout
);
4164 printf_filtered ("\n");
4165 printfi_filtered (spaces
, "instance_flags 0x%x",
4166 TYPE_INSTANCE_FLAGS (type
));
4167 if (TYPE_CONST (type
))
4169 puts_filtered (" TYPE_FLAG_CONST");
4171 if (TYPE_VOLATILE (type
))
4173 puts_filtered (" TYPE_FLAG_VOLATILE");
4175 if (TYPE_CODE_SPACE (type
))
4177 puts_filtered (" TYPE_FLAG_CODE_SPACE");
4179 if (TYPE_DATA_SPACE (type
))
4181 puts_filtered (" TYPE_FLAG_DATA_SPACE");
4183 if (TYPE_ADDRESS_CLASS_1 (type
))
4185 puts_filtered (" TYPE_FLAG_ADDRESS_CLASS_1");
4187 if (TYPE_ADDRESS_CLASS_2 (type
))
4189 puts_filtered (" TYPE_FLAG_ADDRESS_CLASS_2");
4191 if (TYPE_RESTRICT (type
))
4193 puts_filtered (" TYPE_FLAG_RESTRICT");
4195 if (TYPE_ATOMIC (type
))
4197 puts_filtered (" TYPE_FLAG_ATOMIC");
4199 puts_filtered ("\n");
4201 printfi_filtered (spaces
, "flags");
4202 if (TYPE_UNSIGNED (type
))
4204 puts_filtered (" TYPE_FLAG_UNSIGNED");
4206 if (TYPE_NOSIGN (type
))
4208 puts_filtered (" TYPE_FLAG_NOSIGN");
4210 if (TYPE_STUB (type
))
4212 puts_filtered (" TYPE_FLAG_STUB");
4214 if (TYPE_TARGET_STUB (type
))
4216 puts_filtered (" TYPE_FLAG_TARGET_STUB");
4218 if (TYPE_STATIC (type
))
4220 puts_filtered (" TYPE_FLAG_STATIC");
4222 if (TYPE_PROTOTYPED (type
))
4224 puts_filtered (" TYPE_FLAG_PROTOTYPED");
4226 if (TYPE_INCOMPLETE (type
))
4228 puts_filtered (" TYPE_FLAG_INCOMPLETE");
4230 if (TYPE_VARARGS (type
))
4232 puts_filtered (" TYPE_FLAG_VARARGS");
4234 /* This is used for things like AltiVec registers on ppc. Gcc emits
4235 an attribute for the array type, which tells whether or not we
4236 have a vector, instead of a regular array. */
4237 if (TYPE_VECTOR (type
))
4239 puts_filtered (" TYPE_FLAG_VECTOR");
4241 if (TYPE_FIXED_INSTANCE (type
))
4243 puts_filtered (" TYPE_FIXED_INSTANCE");
4245 if (TYPE_STUB_SUPPORTED (type
))
4247 puts_filtered (" TYPE_STUB_SUPPORTED");
4249 if (TYPE_NOTTEXT (type
))
4251 puts_filtered (" TYPE_NOTTEXT");
4253 puts_filtered ("\n");
4254 printfi_filtered (spaces
, "nfields %d ", TYPE_NFIELDS (type
));
4255 gdb_print_host_address (TYPE_FIELDS (type
), gdb_stdout
);
4256 puts_filtered ("\n");
4257 for (idx
= 0; idx
< TYPE_NFIELDS (type
); idx
++)
4259 if (TYPE_CODE (type
) == TYPE_CODE_ENUM
)
4260 printfi_filtered (spaces
+ 2,
4261 "[%d] enumval %s type ",
4262 idx
, plongest (TYPE_FIELD_ENUMVAL (type
, idx
)));
4264 printfi_filtered (spaces
+ 2,
4265 "[%d] bitpos %d bitsize %d type ",
4266 idx
, TYPE_FIELD_BITPOS (type
, idx
),
4267 TYPE_FIELD_BITSIZE (type
, idx
));
4268 gdb_print_host_address (TYPE_FIELD_TYPE (type
, idx
), gdb_stdout
);
4269 printf_filtered (" name '%s' (",
4270 TYPE_FIELD_NAME (type
, idx
) != NULL
4271 ? TYPE_FIELD_NAME (type
, idx
)
4273 gdb_print_host_address (TYPE_FIELD_NAME (type
, idx
), gdb_stdout
);
4274 printf_filtered (")\n");
4275 if (TYPE_FIELD_TYPE (type
, idx
) != NULL
)
4277 recursive_dump_type (TYPE_FIELD_TYPE (type
, idx
), spaces
+ 4);
4280 if (TYPE_CODE (type
) == TYPE_CODE_RANGE
)
4282 printfi_filtered (spaces
, "low %s%s high %s%s\n",
4283 plongest (TYPE_LOW_BOUND (type
)),
4284 TYPE_LOW_BOUND_UNDEFINED (type
) ? " (undefined)" : "",
4285 plongest (TYPE_HIGH_BOUND (type
)),
4286 TYPE_HIGH_BOUND_UNDEFINED (type
)
4287 ? " (undefined)" : "");
4290 switch (TYPE_SPECIFIC_FIELD (type
))
4292 case TYPE_SPECIFIC_CPLUS_STUFF
:
4293 printfi_filtered (spaces
, "cplus_stuff ");
4294 gdb_print_host_address (TYPE_CPLUS_SPECIFIC (type
),
4296 puts_filtered ("\n");
4297 print_cplus_stuff (type
, spaces
);
4300 case TYPE_SPECIFIC_GNAT_STUFF
:
4301 printfi_filtered (spaces
, "gnat_stuff ");
4302 gdb_print_host_address (TYPE_GNAT_SPECIFIC (type
), gdb_stdout
);
4303 puts_filtered ("\n");
4304 print_gnat_stuff (type
, spaces
);
4307 case TYPE_SPECIFIC_FLOATFORMAT
:
4308 printfi_filtered (spaces
, "floatformat ");
4309 if (TYPE_FLOATFORMAT (type
) == NULL
)
4310 puts_filtered ("(null)");
4313 puts_filtered ("{ ");
4314 if (TYPE_FLOATFORMAT (type
)[0] == NULL
4315 || TYPE_FLOATFORMAT (type
)[0]->name
== NULL
)
4316 puts_filtered ("(null)");
4318 puts_filtered (TYPE_FLOATFORMAT (type
)[0]->name
);
4320 puts_filtered (", ");
4321 if (TYPE_FLOATFORMAT (type
)[1] == NULL
4322 || TYPE_FLOATFORMAT (type
)[1]->name
== NULL
)
4323 puts_filtered ("(null)");
4325 puts_filtered (TYPE_FLOATFORMAT (type
)[1]->name
);
4327 puts_filtered (" }");
4329 puts_filtered ("\n");
4332 case TYPE_SPECIFIC_FUNC
:
4333 printfi_filtered (spaces
, "calling_convention %d\n",
4334 TYPE_CALLING_CONVENTION (type
));
4335 /* tail_call_list is not printed. */
4338 case TYPE_SPECIFIC_SELF_TYPE
:
4339 printfi_filtered (spaces
, "self_type ");
4340 gdb_print_host_address (TYPE_SELF_TYPE (type
), gdb_stdout
);
4341 puts_filtered ("\n");
4346 obstack_free (&dont_print_type_obstack
, NULL
);
4349 /* Trivial helpers for the libiberty hash table, for mapping one
4354 struct type
*old
, *newobj
;
4358 type_pair_hash (const void *item
)
4360 const struct type_pair
*pair
= (const struct type_pair
*) item
;
4362 return htab_hash_pointer (pair
->old
);
4366 type_pair_eq (const void *item_lhs
, const void *item_rhs
)
4368 const struct type_pair
*lhs
= (const struct type_pair
*) item_lhs
;
4369 const struct type_pair
*rhs
= (const struct type_pair
*) item_rhs
;
4371 return lhs
->old
== rhs
->old
;
4374 /* Allocate the hash table used by copy_type_recursive to walk
4375 types without duplicates. We use OBJFILE's obstack, because
4376 OBJFILE is about to be deleted. */
4379 create_copied_types_hash (struct objfile
*objfile
)
4381 return htab_create_alloc_ex (1, type_pair_hash
, type_pair_eq
,
4382 NULL
, &objfile
->objfile_obstack
,
4383 hashtab_obstack_allocate
,
4384 dummy_obstack_deallocate
);
4387 /* Recursively copy (deep copy) a dynamic attribute list of a type. */
4389 static struct dynamic_prop_list
*
4390 copy_dynamic_prop_list (struct obstack
*objfile_obstack
,
4391 struct dynamic_prop_list
*list
)
4393 struct dynamic_prop_list
*copy
= list
;
4394 struct dynamic_prop_list
**node_ptr
= ©
;
4396 while (*node_ptr
!= NULL
)
4398 struct dynamic_prop_list
*node_copy
;
4400 node_copy
= ((struct dynamic_prop_list
*)
4401 obstack_copy (objfile_obstack
, *node_ptr
,
4402 sizeof (struct dynamic_prop_list
)));
4403 node_copy
->prop
= (*node_ptr
)->prop
;
4404 *node_ptr
= node_copy
;
4406 node_ptr
= &node_copy
->next
;
4412 /* Recursively copy (deep copy) TYPE, if it is associated with
4413 OBJFILE. Return a new type owned by the gdbarch associated with the type, a
4414 saved type if we have already visited TYPE (using COPIED_TYPES), or TYPE if
4415 it is not associated with OBJFILE. */
4418 copy_type_recursive (struct objfile
*objfile
,
4420 htab_t copied_types
)
4422 struct type_pair
*stored
, pair
;
4424 struct type
*new_type
;
4426 if (! TYPE_OBJFILE_OWNED (type
))
4429 /* This type shouldn't be pointing to any types in other objfiles;
4430 if it did, the type might disappear unexpectedly. */
4431 gdb_assert (TYPE_OBJFILE (type
) == objfile
);
4434 slot
= htab_find_slot (copied_types
, &pair
, INSERT
);
4436 return ((struct type_pair
*) *slot
)->newobj
;
4438 new_type
= alloc_type_arch (get_type_arch (type
));
4440 /* We must add the new type to the hash table immediately, in case
4441 we encounter this type again during a recursive call below. */
4442 stored
= XOBNEW (&objfile
->objfile_obstack
, struct type_pair
);
4444 stored
->newobj
= new_type
;
4447 /* Copy the common fields of types. For the main type, we simply
4448 copy the entire thing and then update specific fields as needed. */
4449 *TYPE_MAIN_TYPE (new_type
) = *TYPE_MAIN_TYPE (type
);
4450 TYPE_OBJFILE_OWNED (new_type
) = 0;
4451 TYPE_OWNER (new_type
).gdbarch
= get_type_arch (type
);
4453 if (TYPE_NAME (type
))
4454 TYPE_NAME (new_type
) = xstrdup (TYPE_NAME (type
));
4455 if (TYPE_TAG_NAME (type
))
4456 TYPE_TAG_NAME (new_type
) = xstrdup (TYPE_TAG_NAME (type
));
4458 TYPE_INSTANCE_FLAGS (new_type
) = TYPE_INSTANCE_FLAGS (type
);
4459 TYPE_LENGTH (new_type
) = TYPE_LENGTH (type
);
4461 /* Copy the fields. */
4462 if (TYPE_NFIELDS (type
))
4466 nfields
= TYPE_NFIELDS (type
);
4467 TYPE_FIELDS (new_type
) = XCNEWVEC (struct field
, nfields
);
4468 for (i
= 0; i
< nfields
; i
++)
4470 TYPE_FIELD_ARTIFICIAL (new_type
, i
) =
4471 TYPE_FIELD_ARTIFICIAL (type
, i
);
4472 TYPE_FIELD_BITSIZE (new_type
, i
) = TYPE_FIELD_BITSIZE (type
, i
);
4473 if (TYPE_FIELD_TYPE (type
, i
))
4474 TYPE_FIELD_TYPE (new_type
, i
)
4475 = copy_type_recursive (objfile
, TYPE_FIELD_TYPE (type
, i
),
4477 if (TYPE_FIELD_NAME (type
, i
))
4478 TYPE_FIELD_NAME (new_type
, i
) =
4479 xstrdup (TYPE_FIELD_NAME (type
, i
));
4480 switch (TYPE_FIELD_LOC_KIND (type
, i
))
4482 case FIELD_LOC_KIND_BITPOS
:
4483 SET_FIELD_BITPOS (TYPE_FIELD (new_type
, i
),
4484 TYPE_FIELD_BITPOS (type
, i
));
4486 case FIELD_LOC_KIND_ENUMVAL
:
4487 SET_FIELD_ENUMVAL (TYPE_FIELD (new_type
, i
),
4488 TYPE_FIELD_ENUMVAL (type
, i
));
4490 case FIELD_LOC_KIND_PHYSADDR
:
4491 SET_FIELD_PHYSADDR (TYPE_FIELD (new_type
, i
),
4492 TYPE_FIELD_STATIC_PHYSADDR (type
, i
));
4494 case FIELD_LOC_KIND_PHYSNAME
:
4495 SET_FIELD_PHYSNAME (TYPE_FIELD (new_type
, i
),
4496 xstrdup (TYPE_FIELD_STATIC_PHYSNAME (type
,
4500 internal_error (__FILE__
, __LINE__
,
4501 _("Unexpected type field location kind: %d"),
4502 TYPE_FIELD_LOC_KIND (type
, i
));
4507 /* For range types, copy the bounds information. */
4508 if (TYPE_CODE (type
) == TYPE_CODE_RANGE
)
4510 TYPE_RANGE_DATA (new_type
) = XNEW (struct range_bounds
);
4511 *TYPE_RANGE_DATA (new_type
) = *TYPE_RANGE_DATA (type
);
4514 if (TYPE_DYN_PROP_LIST (type
) != NULL
)
4515 TYPE_DYN_PROP_LIST (new_type
)
4516 = copy_dynamic_prop_list (&objfile
->objfile_obstack
,
4517 TYPE_DYN_PROP_LIST (type
));
4520 /* Copy pointers to other types. */
4521 if (TYPE_TARGET_TYPE (type
))
4522 TYPE_TARGET_TYPE (new_type
) =
4523 copy_type_recursive (objfile
,
4524 TYPE_TARGET_TYPE (type
),
4527 /* Maybe copy the type_specific bits.
4529 NOTE drow/2005-12-09: We do not copy the C++-specific bits like
4530 base classes and methods. There's no fundamental reason why we
4531 can't, but at the moment it is not needed. */
4533 switch (TYPE_SPECIFIC_FIELD (type
))
4535 case TYPE_SPECIFIC_NONE
:
4537 case TYPE_SPECIFIC_FUNC
:
4538 INIT_FUNC_SPECIFIC (new_type
);
4539 TYPE_CALLING_CONVENTION (new_type
) = TYPE_CALLING_CONVENTION (type
);
4540 TYPE_NO_RETURN (new_type
) = TYPE_NO_RETURN (type
);
4541 TYPE_TAIL_CALL_LIST (new_type
) = NULL
;
4543 case TYPE_SPECIFIC_FLOATFORMAT
:
4544 TYPE_FLOATFORMAT (new_type
) = TYPE_FLOATFORMAT (type
);
4546 case TYPE_SPECIFIC_CPLUS_STUFF
:
4547 INIT_CPLUS_SPECIFIC (new_type
);
4549 case TYPE_SPECIFIC_GNAT_STUFF
:
4550 INIT_GNAT_SPECIFIC (new_type
);
4552 case TYPE_SPECIFIC_SELF_TYPE
:
4553 set_type_self_type (new_type
,
4554 copy_type_recursive (objfile
, TYPE_SELF_TYPE (type
),
4558 gdb_assert_not_reached ("bad type_specific_kind");
4564 /* Make a copy of the given TYPE, except that the pointer & reference
4565 types are not preserved.
4567 This function assumes that the given type has an associated objfile.
4568 This objfile is used to allocate the new type. */
4571 copy_type (const struct type
*type
)
4573 struct type
*new_type
;
4575 gdb_assert (TYPE_OBJFILE_OWNED (type
));
4577 new_type
= alloc_type_copy (type
);
4578 TYPE_INSTANCE_FLAGS (new_type
) = TYPE_INSTANCE_FLAGS (type
);
4579 TYPE_LENGTH (new_type
) = TYPE_LENGTH (type
);
4580 memcpy (TYPE_MAIN_TYPE (new_type
), TYPE_MAIN_TYPE (type
),
4581 sizeof (struct main_type
));
4582 if (TYPE_DYN_PROP_LIST (type
) != NULL
)
4583 TYPE_DYN_PROP_LIST (new_type
)
4584 = copy_dynamic_prop_list (&TYPE_OBJFILE (type
) -> objfile_obstack
,
4585 TYPE_DYN_PROP_LIST (type
));
4590 /* Helper functions to initialize architecture-specific types. */
4592 /* Allocate a type structure associated with GDBARCH and set its
4593 CODE, LENGTH, and NAME fields. */
4596 arch_type (struct gdbarch
*gdbarch
,
4597 enum type_code code
, int length
, char *name
)
4601 type
= alloc_type_arch (gdbarch
);
4602 TYPE_CODE (type
) = code
;
4603 TYPE_LENGTH (type
) = length
;
4606 TYPE_NAME (type
) = gdbarch_obstack_strdup (gdbarch
, name
);
4611 /* Allocate a TYPE_CODE_INT type structure associated with GDBARCH.
4612 BIT is the type size in bits. If UNSIGNED_P is non-zero, set
4613 the type's TYPE_UNSIGNED flag. NAME is the type name. */
4616 arch_integer_type (struct gdbarch
*gdbarch
,
4617 int bit
, int unsigned_p
, char *name
)
4621 t
= arch_type (gdbarch
, TYPE_CODE_INT
, bit
/ TARGET_CHAR_BIT
, name
);
4623 TYPE_UNSIGNED (t
) = 1;
4624 if (name
&& strcmp (name
, "char") == 0)
4625 TYPE_NOSIGN (t
) = 1;
4630 /* Allocate a TYPE_CODE_CHAR type structure associated with GDBARCH.
4631 BIT is the type size in bits. If UNSIGNED_P is non-zero, set
4632 the type's TYPE_UNSIGNED flag. NAME is the type name. */
4635 arch_character_type (struct gdbarch
*gdbarch
,
4636 int bit
, int unsigned_p
, char *name
)
4640 t
= arch_type (gdbarch
, TYPE_CODE_CHAR
, bit
/ TARGET_CHAR_BIT
, name
);
4642 TYPE_UNSIGNED (t
) = 1;
4647 /* Allocate a TYPE_CODE_BOOL type structure associated with GDBARCH.
4648 BIT is the type size in bits. If UNSIGNED_P is non-zero, set
4649 the type's TYPE_UNSIGNED flag. NAME is the type name. */
4652 arch_boolean_type (struct gdbarch
*gdbarch
,
4653 int bit
, int unsigned_p
, char *name
)
4657 t
= arch_type (gdbarch
, TYPE_CODE_BOOL
, bit
/ TARGET_CHAR_BIT
, name
);
4659 TYPE_UNSIGNED (t
) = 1;
4664 /* Allocate a TYPE_CODE_FLT type structure associated with GDBARCH.
4665 BIT is the type size in bits; if BIT equals -1, the size is
4666 determined by the floatformat. NAME is the type name. Set the
4667 TYPE_FLOATFORMAT from FLOATFORMATS. */
4670 arch_float_type (struct gdbarch
*gdbarch
,
4671 int bit
, char *name
, const struct floatformat
**floatformats
)
4677 gdb_assert (floatformats
!= NULL
);
4678 gdb_assert (floatformats
[0] != NULL
&& floatformats
[1] != NULL
);
4679 bit
= floatformats
[0]->totalsize
;
4681 gdb_assert (bit
>= 0);
4683 t
= arch_type (gdbarch
, TYPE_CODE_FLT
, bit
/ TARGET_CHAR_BIT
, name
);
4684 TYPE_FLOATFORMAT (t
) = floatformats
;
4688 /* Allocate a TYPE_CODE_COMPLEX type structure associated with GDBARCH.
4689 NAME is the type name. TARGET_TYPE is the component float type. */
4692 arch_complex_type (struct gdbarch
*gdbarch
,
4693 char *name
, struct type
*target_type
)
4697 t
= arch_type (gdbarch
, TYPE_CODE_COMPLEX
,
4698 2 * TYPE_LENGTH (target_type
), name
);
4699 TYPE_TARGET_TYPE (t
) = target_type
;
4703 /* Allocate a TYPE_CODE_FLAGS type structure associated with GDBARCH.
4704 NAME is the type name. LENGTH is the size of the flag word in bytes. */
4707 arch_flags_type (struct gdbarch
*gdbarch
, char *name
, int length
)
4709 int nfields
= length
* TARGET_CHAR_BIT
;
4712 type
= arch_type (gdbarch
, TYPE_CODE_FLAGS
, length
, name
);
4713 TYPE_UNSIGNED (type
) = 1;
4714 TYPE_NFIELDS (type
) = nfields
;
4716 = (struct field
*) TYPE_ZALLOC (type
, nfields
* sizeof (struct field
));
4721 /* Add field to TYPE_CODE_FLAGS type TYPE to indicate the bit at
4722 position BITPOS is called NAME. */
4725 append_flags_type_flag (struct type
*type
, int bitpos
, char *name
)
4727 gdb_assert (TYPE_CODE (type
) == TYPE_CODE_FLAGS
);
4728 gdb_assert (bitpos
< TYPE_NFIELDS (type
));
4729 gdb_assert (bitpos
>= 0);
4733 TYPE_FIELD_NAME (type
, bitpos
) = xstrdup (name
);
4734 SET_FIELD_BITPOS (TYPE_FIELD (type
, bitpos
), bitpos
);
4738 /* Don't show this field to the user. */
4739 SET_FIELD_BITPOS (TYPE_FIELD (type
, bitpos
), -1);
4743 /* Allocate a TYPE_CODE_STRUCT or TYPE_CODE_UNION type structure (as
4744 specified by CODE) associated with GDBARCH. NAME is the type name. */
4747 arch_composite_type (struct gdbarch
*gdbarch
, char *name
, enum type_code code
)
4751 gdb_assert (code
== TYPE_CODE_STRUCT
|| code
== TYPE_CODE_UNION
);
4752 t
= arch_type (gdbarch
, code
, 0, NULL
);
4753 TYPE_TAG_NAME (t
) = name
;
4754 INIT_CPLUS_SPECIFIC (t
);
4758 /* Add new field with name NAME and type FIELD to composite type T.
4759 Do not set the field's position or adjust the type's length;
4760 the caller should do so. Return the new field. */
4763 append_composite_type_field_raw (struct type
*t
, char *name
,
4768 TYPE_NFIELDS (t
) = TYPE_NFIELDS (t
) + 1;
4769 TYPE_FIELDS (t
) = XRESIZEVEC (struct field
, TYPE_FIELDS (t
),
4771 f
= &(TYPE_FIELDS (t
)[TYPE_NFIELDS (t
) - 1]);
4772 memset (f
, 0, sizeof f
[0]);
4773 FIELD_TYPE (f
[0]) = field
;
4774 FIELD_NAME (f
[0]) = name
;
4778 /* Add new field with name NAME and type FIELD to composite type T.
4779 ALIGNMENT (if non-zero) specifies the minimum field alignment. */
4782 append_composite_type_field_aligned (struct type
*t
, char *name
,
4783 struct type
*field
, int alignment
)
4785 struct field
*f
= append_composite_type_field_raw (t
, name
, field
);
4787 if (TYPE_CODE (t
) == TYPE_CODE_UNION
)
4789 if (TYPE_LENGTH (t
) < TYPE_LENGTH (field
))
4790 TYPE_LENGTH (t
) = TYPE_LENGTH (field
);
4792 else if (TYPE_CODE (t
) == TYPE_CODE_STRUCT
)
4794 TYPE_LENGTH (t
) = TYPE_LENGTH (t
) + TYPE_LENGTH (field
);
4795 if (TYPE_NFIELDS (t
) > 1)
4797 SET_FIELD_BITPOS (f
[0],
4798 (FIELD_BITPOS (f
[-1])
4799 + (TYPE_LENGTH (FIELD_TYPE (f
[-1]))
4800 * TARGET_CHAR_BIT
)));
4806 alignment
*= TARGET_CHAR_BIT
;
4807 left
= FIELD_BITPOS (f
[0]) % alignment
;
4811 SET_FIELD_BITPOS (f
[0], FIELD_BITPOS (f
[0]) + (alignment
- left
));
4812 TYPE_LENGTH (t
) += (alignment
- left
) / TARGET_CHAR_BIT
;
4819 /* Add new field with name NAME and type FIELD to composite type T. */
4822 append_composite_type_field (struct type
*t
, char *name
,
4825 append_composite_type_field_aligned (t
, name
, field
, 0);
4828 static struct gdbarch_data
*gdbtypes_data
;
4830 const struct builtin_type
*
4831 builtin_type (struct gdbarch
*gdbarch
)
4833 return (const struct builtin_type
*) gdbarch_data (gdbarch
, gdbtypes_data
);
4837 gdbtypes_post_init (struct gdbarch
*gdbarch
)
4839 struct builtin_type
*builtin_type
4840 = GDBARCH_OBSTACK_ZALLOC (gdbarch
, struct builtin_type
);
4843 builtin_type
->builtin_void
4844 = arch_type (gdbarch
, TYPE_CODE_VOID
, 1, "void");
4845 builtin_type
->builtin_char
4846 = arch_integer_type (gdbarch
, TARGET_CHAR_BIT
,
4847 !gdbarch_char_signed (gdbarch
), "char");
4848 builtin_type
->builtin_signed_char
4849 = arch_integer_type (gdbarch
, TARGET_CHAR_BIT
,
4851 builtin_type
->builtin_unsigned_char
4852 = arch_integer_type (gdbarch
, TARGET_CHAR_BIT
,
4853 1, "unsigned char");
4854 builtin_type
->builtin_short
4855 = arch_integer_type (gdbarch
, gdbarch_short_bit (gdbarch
),
4857 builtin_type
->builtin_unsigned_short
4858 = arch_integer_type (gdbarch
, gdbarch_short_bit (gdbarch
),
4859 1, "unsigned short");
4860 builtin_type
->builtin_int
4861 = arch_integer_type (gdbarch
, gdbarch_int_bit (gdbarch
),
4863 builtin_type
->builtin_unsigned_int
4864 = arch_integer_type (gdbarch
, gdbarch_int_bit (gdbarch
),
4866 builtin_type
->builtin_long
4867 = arch_integer_type (gdbarch
, gdbarch_long_bit (gdbarch
),
4869 builtin_type
->builtin_unsigned_long
4870 = arch_integer_type (gdbarch
, gdbarch_long_bit (gdbarch
),
4871 1, "unsigned long");
4872 builtin_type
->builtin_long_long
4873 = arch_integer_type (gdbarch
, gdbarch_long_long_bit (gdbarch
),
4875 builtin_type
->builtin_unsigned_long_long
4876 = arch_integer_type (gdbarch
, gdbarch_long_long_bit (gdbarch
),
4877 1, "unsigned long long");
4878 builtin_type
->builtin_float
4879 = arch_float_type (gdbarch
, gdbarch_float_bit (gdbarch
),
4880 "float", gdbarch_float_format (gdbarch
));
4881 builtin_type
->builtin_double
4882 = arch_float_type (gdbarch
, gdbarch_double_bit (gdbarch
),
4883 "double", gdbarch_double_format (gdbarch
));
4884 builtin_type
->builtin_long_double
4885 = arch_float_type (gdbarch
, gdbarch_long_double_bit (gdbarch
),
4886 "long double", gdbarch_long_double_format (gdbarch
));
4887 builtin_type
->builtin_complex
4888 = arch_complex_type (gdbarch
, "complex",
4889 builtin_type
->builtin_float
);
4890 builtin_type
->builtin_double_complex
4891 = arch_complex_type (gdbarch
, "double complex",
4892 builtin_type
->builtin_double
);
4893 builtin_type
->builtin_string
4894 = arch_type (gdbarch
, TYPE_CODE_STRING
, 1, "string");
4895 builtin_type
->builtin_bool
4896 = arch_type (gdbarch
, TYPE_CODE_BOOL
, 1, "bool");
4898 /* The following three are about decimal floating point types, which
4899 are 32-bits, 64-bits and 128-bits respectively. */
4900 builtin_type
->builtin_decfloat
4901 = arch_type (gdbarch
, TYPE_CODE_DECFLOAT
, 32 / 8, "_Decimal32");
4902 builtin_type
->builtin_decdouble
4903 = arch_type (gdbarch
, TYPE_CODE_DECFLOAT
, 64 / 8, "_Decimal64");
4904 builtin_type
->builtin_declong
4905 = arch_type (gdbarch
, TYPE_CODE_DECFLOAT
, 128 / 8, "_Decimal128");
4907 /* "True" character types. */
4908 builtin_type
->builtin_true_char
4909 = arch_character_type (gdbarch
, TARGET_CHAR_BIT
, 0, "true character");
4910 builtin_type
->builtin_true_unsigned_char
4911 = arch_character_type (gdbarch
, TARGET_CHAR_BIT
, 1, "true character");
4913 /* Fixed-size integer types. */
4914 builtin_type
->builtin_int0
4915 = arch_integer_type (gdbarch
, 0, 0, "int0_t");
4916 builtin_type
->builtin_int8
4917 = arch_integer_type (gdbarch
, 8, 0, "int8_t");
4918 builtin_type
->builtin_uint8
4919 = arch_integer_type (gdbarch
, 8, 1, "uint8_t");
4920 builtin_type
->builtin_int16
4921 = arch_integer_type (gdbarch
, 16, 0, "int16_t");
4922 builtin_type
->builtin_uint16
4923 = arch_integer_type (gdbarch
, 16, 1, "uint16_t");
4924 builtin_type
->builtin_int32
4925 = arch_integer_type (gdbarch
, 32, 0, "int32_t");
4926 builtin_type
->builtin_uint32
4927 = arch_integer_type (gdbarch
, 32, 1, "uint32_t");
4928 builtin_type
->builtin_int64
4929 = arch_integer_type (gdbarch
, 64, 0, "int64_t");
4930 builtin_type
->builtin_uint64
4931 = arch_integer_type (gdbarch
, 64, 1, "uint64_t");
4932 builtin_type
->builtin_int128
4933 = arch_integer_type (gdbarch
, 128, 0, "int128_t");
4934 builtin_type
->builtin_uint128
4935 = arch_integer_type (gdbarch
, 128, 1, "uint128_t");
4936 TYPE_INSTANCE_FLAGS (builtin_type
->builtin_int8
) |=
4937 TYPE_INSTANCE_FLAG_NOTTEXT
;
4938 TYPE_INSTANCE_FLAGS (builtin_type
->builtin_uint8
) |=
4939 TYPE_INSTANCE_FLAG_NOTTEXT
;
4941 /* Wide character types. */
4942 builtin_type
->builtin_char16
4943 = arch_integer_type (gdbarch
, 16, 0, "char16_t");
4944 builtin_type
->builtin_char32
4945 = arch_integer_type (gdbarch
, 32, 0, "char32_t");
4948 /* Default data/code pointer types. */
4949 builtin_type
->builtin_data_ptr
4950 = lookup_pointer_type (builtin_type
->builtin_void
);
4951 builtin_type
->builtin_func_ptr
4952 = lookup_pointer_type (lookup_function_type (builtin_type
->builtin_void
));
4953 builtin_type
->builtin_func_func
4954 = lookup_function_type (builtin_type
->builtin_func_ptr
);
4956 /* This type represents a GDB internal function. */
4957 builtin_type
->internal_fn
4958 = arch_type (gdbarch
, TYPE_CODE_INTERNAL_FUNCTION
, 0,
4959 "<internal function>");
4961 /* This type represents an xmethod. */
4962 builtin_type
->xmethod
4963 = arch_type (gdbarch
, TYPE_CODE_XMETHOD
, 0, "<xmethod>");
4965 return builtin_type
;
4968 /* This set of objfile-based types is intended to be used by symbol
4969 readers as basic types. */
4971 static const struct objfile_data
*objfile_type_data
;
4973 const struct objfile_type
*
4974 objfile_type (struct objfile
*objfile
)
4976 struct gdbarch
*gdbarch
;
4977 struct objfile_type
*objfile_type
4978 = (struct objfile_type
*) objfile_data (objfile
, objfile_type_data
);
4981 return objfile_type
;
4983 objfile_type
= OBSTACK_CALLOC (&objfile
->objfile_obstack
,
4984 1, struct objfile_type
);
4986 /* Use the objfile architecture to determine basic type properties. */
4987 gdbarch
= get_objfile_arch (objfile
);
4990 objfile_type
->builtin_void
4991 = init_type (TYPE_CODE_VOID
, 1,
4995 objfile_type
->builtin_char
4996 = init_type (TYPE_CODE_INT
, TARGET_CHAR_BIT
/ TARGET_CHAR_BIT
,
4998 | (gdbarch_char_signed (gdbarch
) ? 0 : TYPE_FLAG_UNSIGNED
)),
5000 objfile_type
->builtin_signed_char
5001 = init_type (TYPE_CODE_INT
, TARGET_CHAR_BIT
/ TARGET_CHAR_BIT
,
5003 "signed char", objfile
);
5004 objfile_type
->builtin_unsigned_char
5005 = init_type (TYPE_CODE_INT
, TARGET_CHAR_BIT
/ TARGET_CHAR_BIT
,
5007 "unsigned char", objfile
);
5008 objfile_type
->builtin_short
5009 = init_type (TYPE_CODE_INT
,
5010 gdbarch_short_bit (gdbarch
) / TARGET_CHAR_BIT
,
5011 0, "short", objfile
);
5012 objfile_type
->builtin_unsigned_short
5013 = init_type (TYPE_CODE_INT
,
5014 gdbarch_short_bit (gdbarch
) / TARGET_CHAR_BIT
,
5015 TYPE_FLAG_UNSIGNED
, "unsigned short", objfile
);
5016 objfile_type
->builtin_int
5017 = init_type (TYPE_CODE_INT
,
5018 gdbarch_int_bit (gdbarch
) / TARGET_CHAR_BIT
,
5020 objfile_type
->builtin_unsigned_int
5021 = init_type (TYPE_CODE_INT
,
5022 gdbarch_int_bit (gdbarch
) / TARGET_CHAR_BIT
,
5023 TYPE_FLAG_UNSIGNED
, "unsigned int", objfile
);
5024 objfile_type
->builtin_long
5025 = init_type (TYPE_CODE_INT
,
5026 gdbarch_long_bit (gdbarch
) / TARGET_CHAR_BIT
,
5027 0, "long", objfile
);
5028 objfile_type
->builtin_unsigned_long
5029 = init_type (TYPE_CODE_INT
,
5030 gdbarch_long_bit (gdbarch
) / TARGET_CHAR_BIT
,
5031 TYPE_FLAG_UNSIGNED
, "unsigned long", objfile
);
5032 objfile_type
->builtin_long_long
5033 = init_type (TYPE_CODE_INT
,
5034 gdbarch_long_long_bit (gdbarch
) / TARGET_CHAR_BIT
,
5035 0, "long long", objfile
);
5036 objfile_type
->builtin_unsigned_long_long
5037 = init_type (TYPE_CODE_INT
,
5038 gdbarch_long_long_bit (gdbarch
) / TARGET_CHAR_BIT
,
5039 TYPE_FLAG_UNSIGNED
, "unsigned long long", objfile
);
5041 objfile_type
->builtin_float
5042 = init_type (TYPE_CODE_FLT
,
5043 gdbarch_float_bit (gdbarch
) / TARGET_CHAR_BIT
,
5044 0, "float", objfile
);
5045 TYPE_FLOATFORMAT (objfile_type
->builtin_float
)
5046 = gdbarch_float_format (gdbarch
);
5047 objfile_type
->builtin_double
5048 = init_type (TYPE_CODE_FLT
,
5049 gdbarch_double_bit (gdbarch
) / TARGET_CHAR_BIT
,
5050 0, "double", objfile
);
5051 TYPE_FLOATFORMAT (objfile_type
->builtin_double
)
5052 = gdbarch_double_format (gdbarch
);
5053 objfile_type
->builtin_long_double
5054 = init_type (TYPE_CODE_FLT
,
5055 gdbarch_long_double_bit (gdbarch
) / TARGET_CHAR_BIT
,
5056 0, "long double", objfile
);
5057 TYPE_FLOATFORMAT (objfile_type
->builtin_long_double
)
5058 = gdbarch_long_double_format (gdbarch
);
5060 /* This type represents a type that was unrecognized in symbol read-in. */
5061 objfile_type
->builtin_error
5062 = init_type (TYPE_CODE_ERROR
, 0, 0, "<unknown type>", objfile
);
5064 /* The following set of types is used for symbols with no
5065 debug information. */
5066 objfile_type
->nodebug_text_symbol
5067 = init_type (TYPE_CODE_FUNC
, 1, 0,
5068 "<text variable, no debug info>", objfile
);
5069 TYPE_TARGET_TYPE (objfile_type
->nodebug_text_symbol
)
5070 = objfile_type
->builtin_int
;
5071 objfile_type
->nodebug_text_gnu_ifunc_symbol
5072 = init_type (TYPE_CODE_FUNC
, 1, TYPE_FLAG_GNU_IFUNC
,
5073 "<text gnu-indirect-function variable, no debug info>",
5075 TYPE_TARGET_TYPE (objfile_type
->nodebug_text_gnu_ifunc_symbol
)
5076 = objfile_type
->nodebug_text_symbol
;
5077 objfile_type
->nodebug_got_plt_symbol
5078 = init_type (TYPE_CODE_PTR
, gdbarch_addr_bit (gdbarch
) / 8, 0,
5079 "<text from jump slot in .got.plt, no debug info>",
5081 TYPE_TARGET_TYPE (objfile_type
->nodebug_got_plt_symbol
)
5082 = objfile_type
->nodebug_text_symbol
;
5083 objfile_type
->nodebug_data_symbol
5084 = init_type (TYPE_CODE_INT
,
5085 gdbarch_int_bit (gdbarch
) / HOST_CHAR_BIT
, 0,
5086 "<data variable, no debug info>", objfile
);
5087 objfile_type
->nodebug_unknown_symbol
5088 = init_type (TYPE_CODE_INT
, 1, 0,
5089 "<variable (not text or data), no debug info>", objfile
);
5090 objfile_type
->nodebug_tls_symbol
5091 = init_type (TYPE_CODE_INT
,
5092 gdbarch_int_bit (gdbarch
) / HOST_CHAR_BIT
, 0,
5093 "<thread local variable, no debug info>", objfile
);
5095 /* NOTE: on some targets, addresses and pointers are not necessarily
5099 - gdb's `struct type' always describes the target's
5101 - gdb's `struct value' objects should always hold values in
5103 - gdb's CORE_ADDR values are addresses in the unified virtual
5104 address space that the assembler and linker work with. Thus,
5105 since target_read_memory takes a CORE_ADDR as an argument, it
5106 can access any memory on the target, even if the processor has
5107 separate code and data address spaces.
5109 In this context, objfile_type->builtin_core_addr is a bit odd:
5110 it's a target type for a value the target will never see. It's
5111 only used to hold the values of (typeless) linker symbols, which
5112 are indeed in the unified virtual address space. */
5114 objfile_type
->builtin_core_addr
5115 = init_type (TYPE_CODE_INT
,
5116 gdbarch_addr_bit (gdbarch
) / 8,
5117 TYPE_FLAG_UNSIGNED
, "__CORE_ADDR", objfile
);
5119 set_objfile_data (objfile
, objfile_type_data
, objfile_type
);
5120 return objfile_type
;
5123 extern initialize_file_ftype _initialize_gdbtypes
;
5126 _initialize_gdbtypes (void)
5128 gdbtypes_data
= gdbarch_data_register_post_init (gdbtypes_post_init
);
5129 objfile_type_data
= register_objfile_data ();
5131 add_setshow_zuinteger_cmd ("overload", no_class
, &overload_debug
,
5132 _("Set debugging of C++ overloading."),
5133 _("Show debugging of C++ overloading."),
5134 _("When enabled, ranking of the "
5135 "functions is displayed."),
5137 show_overload_debug
,
5138 &setdebuglist
, &showdebuglist
);
5140 /* Add user knob for controlling resolution of opaque types. */
5141 add_setshow_boolean_cmd ("opaque-type-resolution", class_support
,
5142 &opaque_type_resolution
,
5143 _("Set resolution of opaque struct/class/union"
5144 " types (if set before loading symbols)."),
5145 _("Show resolution of opaque struct/class/union"
5146 " types (if set before loading symbols)."),
5148 show_opaque_type_resolution
,
5149 &setlist
, &showlist
);
5151 /* Add an option to permit non-strict type checking. */
5152 add_setshow_boolean_cmd ("type", class_support
,
5153 &strict_type_checking
,
5154 _("Set strict type checking."),
5155 _("Show strict type checking."),
5157 show_strict_type_checking
,
5158 &setchecklist
, &showchecklist
);