1 /* Support routines for manipulating internal types for GDB.
3 Copyright (C) 1992-2024 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/>. */
27 #include "expression.h"
32 #include "complaints.h"
33 #include "cli/cli-cmds.h"
36 #include "cp-support.h"
38 #include "dwarf2/loc.h"
39 #include "dwarf2/read.h"
41 #include "floatformat.h"
44 #include "gmp-utils.h"
45 #include "rust-lang.h"
48 /* The value of an invalid conversion badness. */
49 #define INVALID_CONVERSION 100
51 static struct dynamic_prop_list
*
52 copy_dynamic_prop_list (struct obstack
*, struct dynamic_prop_list
*);
54 /* Initialize BADNESS constants. */
56 const struct rank LENGTH_MISMATCH_BADNESS
= {INVALID_CONVERSION
,0};
58 const struct rank TOO_FEW_PARAMS_BADNESS
= {INVALID_CONVERSION
,0};
59 const struct rank INCOMPATIBLE_TYPE_BADNESS
= {INVALID_CONVERSION
,0};
61 const struct rank EXACT_MATCH_BADNESS
= {0,0};
63 const struct rank INTEGER_PROMOTION_BADNESS
= {1,0};
64 const struct rank FLOAT_PROMOTION_BADNESS
= {1,0};
65 const struct rank BASE_PTR_CONVERSION_BADNESS
= {1,0};
66 const struct rank CV_CONVERSION_BADNESS
= {1, 0};
67 const struct rank INTEGER_CONVERSION_BADNESS
= {2,0};
68 const struct rank FLOAT_CONVERSION_BADNESS
= {2,0};
69 const struct rank INT_FLOAT_CONVERSION_BADNESS
= {2,0};
70 const struct rank VOID_PTR_CONVERSION_BADNESS
= {2,0};
71 const struct rank BOOL_CONVERSION_BADNESS
= {3,0};
72 const struct rank BASE_CONVERSION_BADNESS
= {2,0};
73 const struct rank REFERENCE_CONVERSION_BADNESS
= {2,0};
74 const struct rank REFERENCE_SEE_THROUGH_BADNESS
= {0,1};
75 const struct rank NULL_POINTER_CONVERSION_BADNESS
= {2,0};
76 const struct rank NS_POINTER_CONVERSION_BADNESS
= {10,0};
77 const struct rank NS_INTEGER_POINTER_CONVERSION_BADNESS
= {3,0};
78 const struct rank VARARG_BADNESS
= {4, 0};
80 /* Floatformat pairs. */
81 const struct floatformat
*floatformats_ieee_half
[BFD_ENDIAN_UNKNOWN
] = {
82 &floatformat_ieee_half_big
,
83 &floatformat_ieee_half_little
85 const struct floatformat
*floatformats_ieee_single
[BFD_ENDIAN_UNKNOWN
] = {
86 &floatformat_ieee_single_big
,
87 &floatformat_ieee_single_little
89 const struct floatformat
*floatformats_ieee_double
[BFD_ENDIAN_UNKNOWN
] = {
90 &floatformat_ieee_double_big
,
91 &floatformat_ieee_double_little
93 const struct floatformat
*floatformats_ieee_quad
[BFD_ENDIAN_UNKNOWN
] = {
94 &floatformat_ieee_quad_big
,
95 &floatformat_ieee_quad_little
97 const struct floatformat
*floatformats_ieee_double_littlebyte_bigword
[BFD_ENDIAN_UNKNOWN
] = {
98 &floatformat_ieee_double_big
,
99 &floatformat_ieee_double_littlebyte_bigword
101 const struct floatformat
*floatformats_i387_ext
[BFD_ENDIAN_UNKNOWN
] = {
102 &floatformat_i387_ext
,
103 &floatformat_i387_ext
105 const struct floatformat
*floatformats_m68881_ext
[BFD_ENDIAN_UNKNOWN
] = {
106 &floatformat_m68881_ext
,
107 &floatformat_m68881_ext
109 const struct floatformat
*floatformats_arm_ext
[BFD_ENDIAN_UNKNOWN
] = {
110 &floatformat_arm_ext_big
,
111 &floatformat_arm_ext_littlebyte_bigword
113 const struct floatformat
*floatformats_ia64_spill
[BFD_ENDIAN_UNKNOWN
] = {
114 &floatformat_ia64_spill_big
,
115 &floatformat_ia64_spill_little
117 const struct floatformat
*floatformats_vax_f
[BFD_ENDIAN_UNKNOWN
] = {
121 const struct floatformat
*floatformats_vax_d
[BFD_ENDIAN_UNKNOWN
] = {
125 const struct floatformat
*floatformats_ibm_long_double
[BFD_ENDIAN_UNKNOWN
] = {
126 &floatformat_ibm_long_double_big
,
127 &floatformat_ibm_long_double_little
129 const struct floatformat
*floatformats_bfloat16
[BFD_ENDIAN_UNKNOWN
] = {
130 &floatformat_bfloat16_big
,
131 &floatformat_bfloat16_little
134 /* Should opaque types be resolved? */
136 static bool opaque_type_resolution
= true;
138 /* See gdbtypes.h. */
140 unsigned int overload_debug
= 0;
142 /* A flag to enable strict type checking. */
144 static bool strict_type_checking
= true;
146 /* A function to show whether opaque types are resolved. */
149 show_opaque_type_resolution (struct ui_file
*file
, int from_tty
,
150 struct cmd_list_element
*c
,
153 gdb_printf (file
, _("Resolution of opaque struct/class/union types "
154 "(if set before loading symbols) is %s.\n"),
158 /* A function to show whether C++ overload debugging is enabled. */
161 show_overload_debug (struct ui_file
*file
, int from_tty
,
162 struct cmd_list_element
*c
, const char *value
)
164 gdb_printf (file
, _("Debugging of C++ overloading is %s.\n"),
168 /* A function to show the status of strict type checking. */
171 show_strict_type_checking (struct ui_file
*file
, int from_tty
,
172 struct cmd_list_element
*c
, const char *value
)
174 gdb_printf (file
, _("Strict type checking is %s.\n"), value
);
178 /* Helper function to initialize a newly allocated type. Set type code
179 to CODE and initialize the type-specific fields accordingly. */
182 set_type_code (struct type
*type
, enum type_code code
)
184 type
->set_code (code
);
188 case TYPE_CODE_STRUCT
:
189 case TYPE_CODE_UNION
:
190 case TYPE_CODE_NAMESPACE
:
191 INIT_CPLUS_SPECIFIC (type
);
194 TYPE_SPECIFIC_FIELD (type
) = TYPE_SPECIFIC_FLOATFORMAT
;
197 INIT_FUNC_SPECIFIC (type
);
199 case TYPE_CODE_FIXED_POINT
:
200 INIT_FIXED_POINT_SPECIFIC (type
);
205 /* See gdbtypes.h. */
208 type_allocator::new_type ()
213 obstack
*obstack
= (m_is_objfile
214 ? &m_data
.objfile
->objfile_obstack
215 : gdbarch_obstack (m_data
.gdbarch
));
217 /* Alloc the structure and start off with all fields zeroed. */
218 struct type
*type
= OBSTACK_ZALLOC (obstack
, struct type
);
219 TYPE_MAIN_TYPE (type
) = OBSTACK_ZALLOC (obstack
, struct main_type
);
220 TYPE_MAIN_TYPE (type
)->m_lang
= m_lang
;
224 OBJSTAT (m_data
.objfile
, n_types
++);
225 type
->set_owner (m_data
.objfile
);
228 type
->set_owner (m_data
.gdbarch
);
230 /* Initialize the fields that might not be zero. */
231 type
->set_code (TYPE_CODE_UNDEF
);
232 TYPE_CHAIN (type
) = type
; /* Chain back to itself. */
237 /* See gdbtypes.h. */
240 type_allocator::new_type (enum type_code code
, int bit
, const char *name
)
242 struct type
*type
= new_type ();
243 set_type_code (type
, code
);
244 gdb_assert ((bit
% TARGET_CHAR_BIT
) == 0);
245 type
->set_length (bit
/ TARGET_CHAR_BIT
);
249 obstack
*obstack
= (m_is_objfile
250 ? &m_data
.objfile
->objfile_obstack
251 : gdbarch_obstack (m_data
.gdbarch
));
252 type
->set_name (obstack_strdup (obstack
, name
));
258 /* See gdbtypes.h. */
261 type_allocator::arch ()
264 return m_data
.type
->arch ();
266 return m_data
.objfile
->arch ();
267 return m_data
.gdbarch
;
270 /* See gdbtypes.h. */
275 struct gdbarch
*arch
;
277 if (this->is_objfile_owned ())
278 arch
= this->objfile_owner ()->arch ();
280 arch
= this->arch_owner ();
282 /* The ARCH can be NULL if TYPE is associated with neither an objfile nor
283 a gdbarch, however, this is very rare, and even then, in most cases
284 that type::arch is called, we assume that a non-NULL value is
286 gdb_assert (arch
!= nullptr);
290 /* See gdbtypes.h. */
293 get_target_type (struct type
*type
)
297 type
= type
->target_type ();
299 type
= check_typedef (type
);
305 /* See gdbtypes.h. */
308 type_length_units (struct type
*type
)
310 int unit_size
= gdbarch_addressable_memory_unit_size (type
->arch ());
312 return type
->length () / unit_size
;
315 /* Alloc a new type instance structure, fill it with some defaults,
316 and point it at OLDTYPE. Allocate the new type instance from the
317 same place as OLDTYPE. */
320 alloc_type_instance (struct type
*oldtype
)
324 /* Allocate the structure. */
326 if (!oldtype
->is_objfile_owned ())
327 type
= GDBARCH_OBSTACK_ZALLOC (oldtype
->arch_owner (), struct type
);
329 type
= OBSTACK_ZALLOC (&oldtype
->objfile_owner ()->objfile_obstack
,
332 TYPE_MAIN_TYPE (type
) = TYPE_MAIN_TYPE (oldtype
);
334 TYPE_CHAIN (type
) = type
; /* Chain back to itself for now. */
339 /* Clear all remnants of the previous type at TYPE, in preparation for
340 replacing it with something else. Preserve owner information. */
343 smash_type (struct type
*type
)
345 bool objfile_owned
= type
->is_objfile_owned ();
346 objfile
*objfile
= type
->objfile_owner ();
347 gdbarch
*arch
= type
->arch_owner ();
349 memset (TYPE_MAIN_TYPE (type
), 0, sizeof (struct main_type
));
351 /* Restore owner information. */
353 type
->set_owner (objfile
);
355 type
->set_owner (arch
);
357 /* For now, delete the rings. */
358 TYPE_CHAIN (type
) = type
;
360 /* For now, leave the pointer/reference types alone. */
363 /* Lookup a pointer to a type TYPE. TYPEPTR, if nonzero, points
364 to a pointer to memory where the pointer type should be stored.
365 If *TYPEPTR is zero, update it to point to the pointer type we return.
366 We allocate new memory if needed. */
369 make_pointer_type (struct type
*type
, struct type
**typeptr
)
371 struct type
*ntype
; /* New type */
374 ntype
= TYPE_POINTER_TYPE (type
);
379 return ntype
; /* Don't care about alloc,
380 and have new type. */
381 else if (*typeptr
== 0)
383 *typeptr
= ntype
; /* Tracking alloc, and have new type. */
388 if (typeptr
== 0 || *typeptr
== 0) /* We'll need to allocate one. */
390 ntype
= type_allocator (type
).new_type ();
394 else /* We have storage, but need to reset it. */
397 chain
= TYPE_CHAIN (ntype
);
399 TYPE_CHAIN (ntype
) = chain
;
402 ntype
->set_target_type (type
);
403 TYPE_POINTER_TYPE (type
) = ntype
;
405 /* FIXME! Assumes the machine has only one representation for pointers! */
407 ntype
->set_length (gdbarch_ptr_bit (type
->arch ()) / TARGET_CHAR_BIT
);
408 ntype
->set_code (TYPE_CODE_PTR
);
410 /* Mark pointers as unsigned. The target converts between pointers
411 and addresses (CORE_ADDRs) using gdbarch_pointer_to_address and
412 gdbarch_address_to_pointer. */
413 ntype
->set_is_unsigned (true);
415 /* Update the length of all the other variants of this type. */
416 chain
= TYPE_CHAIN (ntype
);
417 while (chain
!= ntype
)
419 chain
->set_length (ntype
->length ());
420 chain
= TYPE_CHAIN (chain
);
426 /* Given a type TYPE, return a type of pointers to that type.
427 May need to construct such a type if this is the first use. */
430 lookup_pointer_type (struct type
*type
)
432 return make_pointer_type (type
, (struct type
**) 0);
435 /* Lookup a C++ `reference' to a type TYPE. TYPEPTR, if nonzero,
436 points to a pointer to memory where the reference type should be
437 stored. If *TYPEPTR is zero, update it to point to the reference
438 type we return. We allocate new memory if needed. REFCODE denotes
439 the kind of reference type to lookup (lvalue or rvalue reference). */
442 make_reference_type (struct type
*type
, struct type
**typeptr
,
443 enum type_code refcode
)
445 struct type
*ntype
; /* New type */
446 struct type
**reftype
;
449 gdb_assert (refcode
== TYPE_CODE_REF
|| refcode
== TYPE_CODE_RVALUE_REF
);
451 ntype
= (refcode
== TYPE_CODE_REF
? TYPE_REFERENCE_TYPE (type
)
452 : TYPE_RVALUE_REFERENCE_TYPE (type
));
457 return ntype
; /* Don't care about alloc,
458 and have new type. */
459 else if (*typeptr
== 0)
461 *typeptr
= ntype
; /* Tracking alloc, and have new type. */
466 if (typeptr
== 0 || *typeptr
== 0) /* We'll need to allocate one. */
468 ntype
= type_allocator (type
).new_type ();
472 else /* We have storage, but need to reset it. */
475 chain
= TYPE_CHAIN (ntype
);
477 TYPE_CHAIN (ntype
) = chain
;
480 ntype
->set_target_type (type
);
481 reftype
= (refcode
== TYPE_CODE_REF
? &TYPE_REFERENCE_TYPE (type
)
482 : &TYPE_RVALUE_REFERENCE_TYPE (type
));
486 /* FIXME! Assume the machine has only one representation for
487 references, and that it matches the (only) representation for
490 ntype
->set_length (gdbarch_ptr_bit (type
->arch ()) / TARGET_CHAR_BIT
);
491 ntype
->set_code (refcode
);
495 /* Update the length of all the other variants of this type. */
496 chain
= TYPE_CHAIN (ntype
);
497 while (chain
!= ntype
)
499 chain
->set_length (ntype
->length ());
500 chain
= TYPE_CHAIN (chain
);
506 /* Same as above, but caller doesn't care about memory allocation
510 lookup_reference_type (struct type
*type
, enum type_code refcode
)
512 return make_reference_type (type
, (struct type
**) 0, refcode
);
515 /* Lookup the lvalue reference type for the type TYPE. */
518 lookup_lvalue_reference_type (struct type
*type
)
520 return lookup_reference_type (type
, TYPE_CODE_REF
);
523 /* Lookup the rvalue reference type for the type TYPE. */
526 lookup_rvalue_reference_type (struct type
*type
)
528 return lookup_reference_type (type
, TYPE_CODE_RVALUE_REF
);
531 /* Lookup a function type that returns type TYPE. TYPEPTR, if
532 nonzero, points to a pointer to memory where the function type
533 should be stored. If *TYPEPTR is zero, update it to point to the
534 function type we return. We allocate new memory if needed. */
537 make_function_type (struct type
*type
, struct type
**typeptr
)
539 struct type
*ntype
; /* New type */
541 if (typeptr
== 0 || *typeptr
== 0) /* We'll need to allocate one. */
543 ntype
= type_allocator (type
).new_type ();
547 else /* We have storage, but need to reset it. */
553 ntype
->set_target_type (type
);
555 ntype
->set_length (1);
556 ntype
->set_code (TYPE_CODE_FUNC
);
558 INIT_FUNC_SPECIFIC (ntype
);
563 /* Given a type TYPE, return a type of functions that return that type.
564 May need to construct such a type if this is the first use. */
567 lookup_function_type (struct type
*type
)
569 return make_function_type (type
, (struct type
**) 0);
572 /* Given a type TYPE and argument types, return the appropriate
573 function type. If the final type in PARAM_TYPES is NULL, make a
577 lookup_function_type_with_arguments (struct type
*type
,
579 struct type
**param_types
)
581 struct type
*fn
= make_function_type (type
, (struct type
**) 0);
586 if (param_types
[nparams
- 1] == NULL
)
589 fn
->set_has_varargs (true);
591 else if (check_typedef (param_types
[nparams
- 1])->code ()
595 /* Caller should have ensured this. */
596 gdb_assert (nparams
== 0);
597 fn
->set_is_prototyped (true);
600 fn
->set_is_prototyped (true);
603 fn
->alloc_fields (nparams
);
604 for (i
= 0; i
< nparams
; ++i
)
605 fn
->field (i
).set_type (param_types
[i
]);
610 /* Identify address space identifier by name -- return a
611 type_instance_flags. */
614 address_space_name_to_type_instance_flags (struct gdbarch
*gdbarch
,
615 const char *space_identifier
)
617 type_instance_flags type_flags
;
619 /* Check for known address space delimiters. */
620 if (!strcmp (space_identifier
, "code"))
621 return TYPE_INSTANCE_FLAG_CODE_SPACE
;
622 else if (!strcmp (space_identifier
, "data"))
623 return TYPE_INSTANCE_FLAG_DATA_SPACE
;
624 else if (gdbarch_address_class_name_to_type_flags_p (gdbarch
)
625 && gdbarch_address_class_name_to_type_flags (gdbarch
,
630 error (_("Unknown address space specifier: \"%s\""), space_identifier
);
633 /* Identify address space identifier by type_instance_flags and return
634 the string version of the adress space name. */
637 address_space_type_instance_flags_to_name (struct gdbarch
*gdbarch
,
638 type_instance_flags space_flag
)
640 if (space_flag
& TYPE_INSTANCE_FLAG_CODE_SPACE
)
642 else if (space_flag
& TYPE_INSTANCE_FLAG_DATA_SPACE
)
644 else if ((space_flag
& TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL
)
645 && gdbarch_address_class_type_flags_to_name_p (gdbarch
))
646 return gdbarch_address_class_type_flags_to_name (gdbarch
, space_flag
);
651 /* Create a new type with instance flags NEW_FLAGS, based on TYPE.
653 If STORAGE is non-NULL, create the new type instance there.
654 STORAGE must be in the same obstack as TYPE. */
657 make_qualified_type (struct type
*type
, type_instance_flags new_flags
,
658 struct type
*storage
)
665 if (ntype
->instance_flags () == new_flags
)
667 ntype
= TYPE_CHAIN (ntype
);
669 while (ntype
!= type
);
671 /* Create a new type instance. */
673 ntype
= alloc_type_instance (type
);
676 /* If STORAGE was provided, it had better be in the same objfile
677 as TYPE. Otherwise, we can't link it into TYPE's cv chain:
678 if one objfile is freed and the other kept, we'd have
679 dangling pointers. */
680 gdb_assert (type
->objfile_owner () == storage
->objfile_owner ());
683 TYPE_MAIN_TYPE (ntype
) = TYPE_MAIN_TYPE (type
);
684 TYPE_CHAIN (ntype
) = ntype
;
687 /* Pointers or references to the original type are not relevant to
689 TYPE_POINTER_TYPE (ntype
) = (struct type
*) 0;
690 TYPE_REFERENCE_TYPE (ntype
) = (struct type
*) 0;
692 /* Chain the new qualified type to the old type. */
693 TYPE_CHAIN (ntype
) = TYPE_CHAIN (type
);
694 TYPE_CHAIN (type
) = ntype
;
696 /* Now set the instance flags and return the new type. */
697 ntype
->set_instance_flags (new_flags
);
699 /* Set length of new type to that of the original type. */
700 ntype
->set_length (type
->length ());
705 /* Make an address-space-delimited variant of a type -- a type that
706 is identical to the one supplied except that it has an address
707 space attribute attached to it (such as "code" or "data").
709 The space attributes "code" and "data" are for Harvard
710 architectures. The address space attributes are for architectures
711 which have alternately sized pointers or pointers with alternate
715 make_type_with_address_space (struct type
*type
,
716 type_instance_flags space_flag
)
718 type_instance_flags new_flags
= ((type
->instance_flags ()
719 & ~(TYPE_INSTANCE_FLAG_CODE_SPACE
720 | TYPE_INSTANCE_FLAG_DATA_SPACE
721 | TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL
))
724 return make_qualified_type (type
, new_flags
, NULL
);
727 /* Make a "c-v" variant of a type -- a type that is identical to the
728 one supplied except that it may have const or volatile attributes
729 CNST is a flag for setting the const attribute
730 VOLTL is a flag for setting the volatile attribute
731 TYPE is the base type whose variant we are creating.
733 If TYPEPTR and *TYPEPTR are non-zero, then *TYPEPTR points to
734 storage to hold the new qualified type; *TYPEPTR and TYPE must be
735 in the same objfile. Otherwise, allocate fresh memory for the new
736 type whereever TYPE lives. If TYPEPTR is non-zero, set it to the
737 new type we construct. */
740 make_cv_type (int cnst
, int voltl
,
742 struct type
**typeptr
)
744 struct type
*ntype
; /* New type */
746 type_instance_flags new_flags
= (type
->instance_flags ()
747 & ~(TYPE_INSTANCE_FLAG_CONST
748 | TYPE_INSTANCE_FLAG_VOLATILE
));
751 new_flags
|= TYPE_INSTANCE_FLAG_CONST
;
754 new_flags
|= TYPE_INSTANCE_FLAG_VOLATILE
;
756 if (typeptr
&& *typeptr
!= NULL
)
758 /* TYPE and *TYPEPTR must be in the same objfile. We can't have
759 a C-V variant chain that threads across objfiles: if one
760 objfile gets freed, then the other has a broken C-V chain.
762 This code used to try to copy over the main type from TYPE to
763 *TYPEPTR if they were in different objfiles, but that's
764 wrong, too: TYPE may have a field list or member function
765 lists, which refer to types of their own, etc. etc. The
766 whole shebang would need to be copied over recursively; you
767 can't have inter-objfile pointers. The only thing to do is
768 to leave stub types as stub types, and look them up afresh by
769 name each time you encounter them. */
770 gdb_assert ((*typeptr
)->objfile_owner () == type
->objfile_owner ());
773 ntype
= make_qualified_type (type
, new_flags
,
774 typeptr
? *typeptr
: NULL
);
782 /* Make a 'restrict'-qualified version of TYPE. */
785 make_restrict_type (struct type
*type
)
787 return make_qualified_type (type
,
788 (type
->instance_flags ()
789 | TYPE_INSTANCE_FLAG_RESTRICT
),
793 /* Make a type without const, volatile, or restrict. */
796 make_unqualified_type (struct type
*type
)
798 return make_qualified_type (type
,
799 (type
->instance_flags ()
800 & ~(TYPE_INSTANCE_FLAG_CONST
801 | TYPE_INSTANCE_FLAG_VOLATILE
802 | TYPE_INSTANCE_FLAG_RESTRICT
)),
806 /* Make a '_Atomic'-qualified version of TYPE. */
809 make_atomic_type (struct type
*type
)
811 return make_qualified_type (type
,
812 (type
->instance_flags ()
813 | TYPE_INSTANCE_FLAG_ATOMIC
),
817 /* Replace the contents of ntype with the type *type. This changes the
818 contents, rather than the pointer for TYPE_MAIN_TYPE (ntype); thus
819 the changes are propogated to all types in the TYPE_CHAIN.
821 In order to build recursive types, it's inevitable that we'll need
822 to update types in place --- but this sort of indiscriminate
823 smashing is ugly, and needs to be replaced with something more
824 controlled. TYPE_MAIN_TYPE is a step in this direction; it's not
825 clear if more steps are needed. */
828 replace_type (struct type
*ntype
, struct type
*type
)
832 /* These two types had better be in the same objfile. Otherwise,
833 the assignment of one type's main type structure to the other
834 will produce a type with references to objects (names; field
835 lists; etc.) allocated on an objfile other than its own. */
836 gdb_assert (ntype
->objfile_owner () == type
->objfile_owner ());
838 *TYPE_MAIN_TYPE (ntype
) = *TYPE_MAIN_TYPE (type
);
840 /* The type length is not a part of the main type. Update it for
841 each type on the variant chain. */
845 /* Assert that this element of the chain has no address-class bits
846 set in its flags. Such type variants might have type lengths
847 which are supposed to be different from the non-address-class
848 variants. This assertion shouldn't ever be triggered because
849 symbol readers which do construct address-class variants don't
850 call replace_type(). */
851 gdb_assert (TYPE_ADDRESS_CLASS_ALL (chain
) == 0);
853 chain
->set_length (type
->length ());
854 chain
= TYPE_CHAIN (chain
);
856 while (ntype
!= chain
);
858 /* Assert that the two types have equivalent instance qualifiers.
859 This should be true for at least all of our debug readers. */
860 gdb_assert (ntype
->instance_flags () == type
->instance_flags ());
863 /* Implement direct support for MEMBER_TYPE in GNU C++.
864 May need to construct such a type if this is the first use.
865 The TYPE is the type of the member. The DOMAIN is the type
866 of the aggregate that the member belongs to. */
869 lookup_memberptr_type (struct type
*type
, struct type
*domain
)
873 mtype
= type_allocator (type
).new_type ();
874 smash_to_memberptr_type (mtype
, domain
, type
);
878 /* Return a pointer-to-method type, for a method of type TO_TYPE. */
881 lookup_methodptr_type (struct type
*to_type
)
885 mtype
= type_allocator (to_type
).new_type ();
886 smash_to_methodptr_type (mtype
, to_type
);
890 /* See gdbtypes.h. */
893 operator== (const dynamic_prop
&l
, const dynamic_prop
&r
)
895 if (l
.kind () != r
.kind ())
903 return l
.const_val () == r
.const_val ();
904 case PROP_ADDR_OFFSET
:
907 return l
.baton () == r
.baton ();
908 case PROP_VARIANT_PARTS
:
909 return l
.variant_parts () == r
.variant_parts ();
911 return l
.original_type () == r
.original_type ();
914 gdb_assert_not_reached ("unhandled dynamic_prop kind");
917 /* See gdbtypes.h. */
920 operator== (const range_bounds
&l
, const range_bounds
&r
)
922 #define FIELD_EQ(FIELD) (l.FIELD == r.FIELD)
924 return (FIELD_EQ (low
)
926 && FIELD_EQ (flag_upper_bound_is_count
)
927 && FIELD_EQ (flag_bound_evaluated
)
933 /* See gdbtypes.h. */
936 create_range_type (type_allocator
&alloc
, struct type
*index_type
,
937 const struct dynamic_prop
*low_bound
,
938 const struct dynamic_prop
*high_bound
,
941 /* The INDEX_TYPE should be a type capable of holding the upper and lower
942 bounds, as such a zero sized, or void type makes no sense. */
943 gdb_assert (index_type
->code () != TYPE_CODE_VOID
);
944 gdb_assert (index_type
->length () > 0);
946 struct type
*result_type
= alloc
.new_type ();
947 result_type
->set_code (TYPE_CODE_RANGE
);
948 result_type
->set_target_type (index_type
);
949 if (index_type
->is_stub ())
950 result_type
->set_target_is_stub (true);
952 result_type
->set_length (check_typedef (index_type
)->length ());
955 = (struct range_bounds
*) TYPE_ZALLOC (result_type
, sizeof (range_bounds
));
956 bounds
->low
= *low_bound
;
957 bounds
->high
= *high_bound
;
959 bounds
->stride
.set_const_val (0);
961 result_type
->set_bounds (bounds
);
963 if (index_type
->code () == TYPE_CODE_FIXED_POINT
)
964 result_type
->set_is_unsigned (index_type
->is_unsigned ());
965 else if (index_type
->is_unsigned ())
967 /* If the underlying type is unsigned, then the range
969 result_type
->set_is_unsigned (true);
971 /* Otherwise, the signed-ness of a range type can't simply be copied
972 from the underlying type. Consider a case where the underlying
973 type is 'int', but the range type can hold 0..65535, and where
974 the range is further specified to fit into 16 bits. In this
975 case, if we copy the underlying type's sign, then reading some
976 range values will cause an unwanted sign extension. So, we have
977 some heuristics here instead. */
978 else if (low_bound
->is_constant () && low_bound
->const_val () >= 0)
980 result_type
->set_is_unsigned (true);
981 /* Ada allows the declaration of range types whose upper bound is
982 less than the lower bound, so checking the lower bound is not
983 enough. Make sure we do not mark a range type whose upper bound
984 is negative as unsigned. */
985 if (high_bound
->is_constant () && high_bound
->const_val () < 0)
986 result_type
->set_is_unsigned (false);
989 result_type
->set_endianity_is_not_default
990 (index_type
->endianity_is_not_default ());
995 /* See gdbtypes.h. */
998 create_range_type_with_stride (type_allocator
&alloc
,
999 struct type
*index_type
,
1000 const struct dynamic_prop
*low_bound
,
1001 const struct dynamic_prop
*high_bound
,
1003 const struct dynamic_prop
*stride
,
1006 struct type
*result_type
= create_range_type (alloc
, index_type
, low_bound
,
1009 gdb_assert (stride
!= nullptr);
1010 result_type
->bounds ()->stride
= *stride
;
1011 result_type
->bounds ()->flag_is_byte_stride
= byte_stride_p
;
1016 /* See gdbtypes.h. */
1019 create_static_range_type (type_allocator
&alloc
, struct type
*index_type
,
1020 LONGEST low_bound
, LONGEST high_bound
)
1022 struct dynamic_prop low
, high
;
1024 low
.set_const_val (low_bound
);
1025 high
.set_const_val (high_bound
);
1027 struct type
*result_type
= create_range_type (alloc
, index_type
,
1033 /* Predicate tests whether BOUNDS are static. Returns 1 if all bounds values
1034 are static, otherwise returns 0. */
1037 has_static_range (const struct range_bounds
*bounds
)
1039 /* If the range doesn't have a defined stride then its stride field will
1040 be initialized to the constant 0. */
1041 return (bounds
->low
.is_constant ()
1042 && bounds
->high
.is_constant ()
1043 && bounds
->stride
.is_constant ());
1046 /* See gdbtypes.h. */
1048 std::optional
<LONGEST
>
1049 get_discrete_low_bound (struct type
*type
)
1051 type
= check_typedef (type
);
1052 switch (type
->code ())
1054 case TYPE_CODE_RANGE
:
1056 /* This function only works for ranges with a constant low bound. */
1057 if (!type
->bounds ()->low
.is_constant ())
1060 LONGEST low
= type
->bounds ()->low
.const_val ();
1062 if (type
->target_type ()->code () == TYPE_CODE_ENUM
)
1064 std::optional
<LONGEST
> low_pos
1065 = discrete_position (type
->target_type (), low
);
1067 if (low_pos
.has_value ())
1074 case TYPE_CODE_ENUM
:
1076 if (type
->num_fields () > 0)
1078 /* The enums may not be sorted by value, so search all
1080 LONGEST low
= type
->field (0).loc_enumval ();
1082 for (int i
= 0; i
< type
->num_fields (); i
++)
1084 if (type
->field (i
).loc_enumval () < low
)
1085 low
= type
->field (i
).loc_enumval ();
1094 case TYPE_CODE_BOOL
:
1098 if (type
->length () > sizeof (LONGEST
)) /* Too big */
1101 if (!type
->is_unsigned ())
1102 return -(1 << (type
->length () * TARGET_CHAR_BIT
- 1));
1105 case TYPE_CODE_CHAR
:
1113 /* See gdbtypes.h. */
1115 std::optional
<LONGEST
>
1116 get_discrete_high_bound (struct type
*type
)
1118 type
= check_typedef (type
);
1119 switch (type
->code ())
1121 case TYPE_CODE_RANGE
:
1123 /* This function only works for ranges with a constant high bound. */
1124 if (!type
->bounds ()->high
.is_constant ())
1127 LONGEST high
= type
->bounds ()->high
.const_val ();
1129 if (type
->target_type ()->code () == TYPE_CODE_ENUM
)
1131 std::optional
<LONGEST
> high_pos
1132 = discrete_position (type
->target_type (), high
);
1134 if (high_pos
.has_value ())
1141 case TYPE_CODE_ENUM
:
1143 if (type
->num_fields () > 0)
1145 /* The enums may not be sorted by value, so search all
1147 LONGEST high
= type
->field (0).loc_enumval ();
1149 for (int i
= 0; i
< type
->num_fields (); i
++)
1151 if (type
->field (i
).loc_enumval () > high
)
1152 high
= type
->field (i
).loc_enumval ();
1161 case TYPE_CODE_BOOL
:
1165 if (type
->length () > sizeof (LONGEST
)) /* Too big */
1168 if (!type
->is_unsigned ())
1170 LONGEST low
= -(1 << (type
->length () * TARGET_CHAR_BIT
- 1));
1175 case TYPE_CODE_CHAR
:
1177 /* This round-about calculation is to avoid shifting by
1178 type->length () * TARGET_CHAR_BIT, which will not work
1179 if type->length () == sizeof (LONGEST). */
1180 LONGEST high
= 1 << (type
->length () * TARGET_CHAR_BIT
- 1);
1181 return (high
- 1) | high
;
1189 /* See gdbtypes.h. */
1192 get_discrete_bounds (struct type
*type
, LONGEST
*lowp
, LONGEST
*highp
)
1194 std::optional
<LONGEST
> low
= get_discrete_low_bound (type
);
1195 if (!low
.has_value ())
1198 std::optional
<LONGEST
> high
= get_discrete_high_bound (type
);
1199 if (!high
.has_value ())
1208 /* See gdbtypes.h */
1211 get_array_bounds (struct type
*type
, LONGEST
*low_bound
, LONGEST
*high_bound
)
1213 struct type
*index
= type
->index_type ();
1220 if (!get_discrete_bounds (index
, &low
, &high
))
1232 /* Assuming that TYPE is a discrete type and VAL is a valid integer
1233 representation of a value of this type, save the corresponding
1234 position number in POS.
1236 Its differs from VAL only in the case of enumeration types. In
1237 this case, the position number of the value of the first listed
1238 enumeration literal is zero; the position number of the value of
1239 each subsequent enumeration literal is one more than that of its
1240 predecessor in the list.
1242 Return 1 if the operation was successful. Return zero otherwise,
1243 in which case the value of POS is unmodified.
1246 std::optional
<LONGEST
>
1247 discrete_position (struct type
*type
, LONGEST val
)
1249 if (type
->code () == TYPE_CODE_RANGE
)
1250 type
= type
->target_type ();
1252 if (type
->code () == TYPE_CODE_ENUM
)
1256 for (i
= 0; i
< type
->num_fields (); i
+= 1)
1258 if (val
== type
->field (i
).loc_enumval ())
1262 /* Invalid enumeration value. */
1269 /* If the array TYPE has static bounds calculate and update its
1270 size, then return true. Otherwise return false and leave TYPE
1274 update_static_array_size (struct type
*type
)
1276 gdb_assert (type
->code () == TYPE_CODE_ARRAY
);
1278 struct type
*range_type
= type
->index_type ();
1280 if (type
->dyn_prop (DYN_PROP_BYTE_STRIDE
) == nullptr
1281 && has_static_range (range_type
->bounds ())
1282 && (!type_not_associated (type
)
1283 && !type_not_allocated (type
)))
1285 LONGEST low_bound
, high_bound
;
1287 struct type
*element_type
;
1289 stride
= type
->bit_stride ();
1291 if (!get_discrete_bounds (range_type
, &low_bound
, &high_bound
))
1292 low_bound
= high_bound
= 0;
1294 element_type
= check_typedef (type
->target_type ());
1295 /* Be careful when setting the array length. Ada arrays can be
1296 empty arrays with the high_bound being smaller than the low_bound.
1297 In such cases, the array length should be zero. */
1298 if (high_bound
< low_bound
)
1299 type
->set_length (0);
1300 else if (stride
!= 0)
1302 /* Ensure that the type length is always positive, even in the
1303 case where (for example in Fortran) we have a negative
1304 stride. It is possible to have a single element array with a
1305 negative stride in Fortran (this doesn't mean anything
1306 special, it's still just a single element array) so do
1307 consider that case when touching this code. */
1308 LONGEST element_count
= std::abs (high_bound
- low_bound
+ 1);
1309 type
->set_length (((std::abs (stride
) * element_count
) + 7) / 8);
1312 type
->set_length (element_type
->length ()
1313 * (high_bound
- low_bound
+ 1));
1315 /* If this array's element is itself an array with a bit stride,
1316 then we want to update this array's bit stride to reflect the
1317 size of the sub-array. Otherwise, we'll end up using the
1318 wrong size when trying to find elements of the outer
1320 if (element_type
->code () == TYPE_CODE_ARRAY
1321 && (stride
!= 0 || element_type
->is_multi_dimensional ())
1322 && element_type
->length () != 0
1323 && element_type
->field (0).bitsize () != 0
1324 && get_array_bounds (element_type
, &low_bound
, &high_bound
)
1325 && high_bound
>= low_bound
)
1326 type
->field (0).set_bitsize
1327 ((high_bound
- low_bound
+ 1)
1328 * element_type
->field (0).bitsize ());
1336 /* See gdbtypes.h. */
1339 create_array_type_with_stride (type_allocator
&alloc
,
1340 struct type
*element_type
,
1341 struct type
*range_type
,
1342 struct dynamic_prop
*byte_stride_prop
,
1343 unsigned int bit_stride
)
1345 if (byte_stride_prop
!= nullptr && byte_stride_prop
->is_constant ())
1347 /* The byte stride is actually not dynamic. Pretend we were
1348 called with bit_stride set instead of byte_stride_prop.
1349 This will give us the same result type, while avoiding
1350 the need to handle this as a special case. */
1351 bit_stride
= byte_stride_prop
->const_val () * 8;
1352 byte_stride_prop
= NULL
;
1355 struct type
*result_type
= alloc
.new_type ();
1357 result_type
->set_code (TYPE_CODE_ARRAY
);
1358 result_type
->set_target_type (element_type
);
1360 result_type
->alloc_fields (1);
1361 result_type
->set_index_type (range_type
);
1362 if (byte_stride_prop
!= NULL
)
1363 result_type
->add_dyn_prop (DYN_PROP_BYTE_STRIDE
, *byte_stride_prop
);
1364 else if (bit_stride
> 0)
1365 result_type
->field (0).set_bitsize (bit_stride
);
1367 if (!update_static_array_size (result_type
))
1369 /* This type is dynamic and its length needs to be computed
1370 on demand. In the meantime, avoid leaving the TYPE_LENGTH
1371 undefined by setting it to zero. Although we are not expected
1372 to trust TYPE_LENGTH in this case, setting the size to zero
1373 allows us to avoid allocating objects of random sizes in case
1374 we accidently do. */
1375 result_type
->set_length (0);
1378 /* TYPE_TARGET_STUB will take care of zero length arrays. */
1379 if (result_type
->length () == 0)
1380 result_type
->set_target_is_stub (true);
1385 /* See gdbtypes.h. */
1388 create_array_type (type_allocator
&alloc
,
1389 struct type
*element_type
,
1390 struct type
*range_type
)
1392 return create_array_type_with_stride (alloc
, element_type
,
1393 range_type
, NULL
, 0);
1397 lookup_array_range_type (struct type
*element_type
,
1398 LONGEST low_bound
, LONGEST high_bound
)
1400 struct type
*index_type
;
1401 struct type
*range_type
;
1403 type_allocator
alloc (element_type
);
1404 index_type
= builtin_type (element_type
->arch ())->builtin_int
;
1406 range_type
= create_static_range_type (alloc
, index_type
,
1407 low_bound
, high_bound
);
1409 return create_array_type (alloc
, element_type
, range_type
);
1412 /* See gdbtypes.h. */
1415 create_string_type (type_allocator
&alloc
,
1416 struct type
*string_char_type
,
1417 struct type
*range_type
)
1419 struct type
*result_type
= create_array_type (alloc
,
1422 result_type
->set_code (TYPE_CODE_STRING
);
1427 lookup_string_range_type (struct type
*string_char_type
,
1428 LONGEST low_bound
, LONGEST high_bound
)
1430 struct type
*result_type
;
1432 result_type
= lookup_array_range_type (string_char_type
,
1433 low_bound
, high_bound
);
1434 result_type
->set_code (TYPE_CODE_STRING
);
1439 create_set_type (type_allocator
&alloc
, struct type
*domain_type
)
1441 struct type
*result_type
= alloc
.new_type ();
1443 result_type
->set_code (TYPE_CODE_SET
);
1444 result_type
->alloc_fields (1);
1446 if (!domain_type
->is_stub ())
1448 LONGEST low_bound
, high_bound
, bit_length
;
1450 if (!get_discrete_bounds (domain_type
, &low_bound
, &high_bound
))
1451 low_bound
= high_bound
= 0;
1453 bit_length
= high_bound
- low_bound
+ 1;
1454 result_type
->set_length ((bit_length
+ TARGET_CHAR_BIT
- 1)
1457 result_type
->set_is_unsigned (true);
1459 result_type
->field (0).set_type (domain_type
);
1464 /* Convert ARRAY_TYPE to a vector type. This may modify ARRAY_TYPE
1465 and any array types nested inside it. */
1468 make_vector_type (struct type
*array_type
)
1470 struct type
*inner_array
, *elt_type
;
1472 /* Find the innermost array type, in case the array is
1473 multi-dimensional. */
1474 inner_array
= array_type
;
1475 while (inner_array
->target_type ()->code () == TYPE_CODE_ARRAY
)
1476 inner_array
= inner_array
->target_type ();
1478 elt_type
= inner_array
->target_type ();
1479 if (elt_type
->code () == TYPE_CODE_INT
)
1481 type_instance_flags flags
1482 = elt_type
->instance_flags () | TYPE_INSTANCE_FLAG_NOTTEXT
;
1483 elt_type
= make_qualified_type (elt_type
, flags
, NULL
);
1484 inner_array
->set_target_type (elt_type
);
1487 array_type
->set_is_vector (true);
1491 init_vector_type (struct type
*elt_type
, int n
)
1493 struct type
*array_type
;
1495 array_type
= lookup_array_range_type (elt_type
, 0, n
- 1);
1496 make_vector_type (array_type
);
1500 /* Internal routine called by TYPE_SELF_TYPE to return the type that TYPE
1501 belongs to. In c++ this is the class of "this", but TYPE_THIS_TYPE is too
1502 confusing. "self" is a common enough replacement for "this".
1503 TYPE must be one of TYPE_CODE_METHODPTR, TYPE_CODE_MEMBERPTR, or
1504 TYPE_CODE_METHOD. */
1507 internal_type_self_type (struct type
*type
)
1509 switch (type
->code ())
1511 case TYPE_CODE_METHODPTR
:
1512 case TYPE_CODE_MEMBERPTR
:
1513 if (TYPE_SPECIFIC_FIELD (type
) == TYPE_SPECIFIC_NONE
)
1515 gdb_assert (TYPE_SPECIFIC_FIELD (type
) == TYPE_SPECIFIC_SELF_TYPE
);
1516 return TYPE_MAIN_TYPE (type
)->type_specific
.self_type
;
1517 case TYPE_CODE_METHOD
:
1518 if (TYPE_SPECIFIC_FIELD (type
) == TYPE_SPECIFIC_NONE
)
1520 gdb_assert (TYPE_SPECIFIC_FIELD (type
) == TYPE_SPECIFIC_FUNC
);
1521 return TYPE_MAIN_TYPE (type
)->type_specific
.func_stuff
->self_type
;
1523 gdb_assert_not_reached ("bad type");
1527 /* Set the type of the class that TYPE belongs to.
1528 In c++ this is the class of "this".
1529 TYPE must be one of TYPE_CODE_METHODPTR, TYPE_CODE_MEMBERPTR, or
1530 TYPE_CODE_METHOD. */
1533 set_type_self_type (struct type
*type
, struct type
*self_type
)
1535 switch (type
->code ())
1537 case TYPE_CODE_METHODPTR
:
1538 case TYPE_CODE_MEMBERPTR
:
1539 if (TYPE_SPECIFIC_FIELD (type
) == TYPE_SPECIFIC_NONE
)
1540 TYPE_SPECIFIC_FIELD (type
) = TYPE_SPECIFIC_SELF_TYPE
;
1541 gdb_assert (TYPE_SPECIFIC_FIELD (type
) == TYPE_SPECIFIC_SELF_TYPE
);
1542 TYPE_MAIN_TYPE (type
)->type_specific
.self_type
= self_type
;
1544 case TYPE_CODE_METHOD
:
1545 if (TYPE_SPECIFIC_FIELD (type
) == TYPE_SPECIFIC_NONE
)
1546 INIT_FUNC_SPECIFIC (type
);
1547 gdb_assert (TYPE_SPECIFIC_FIELD (type
) == TYPE_SPECIFIC_FUNC
);
1548 TYPE_MAIN_TYPE (type
)->type_specific
.func_stuff
->self_type
= self_type
;
1551 gdb_assert_not_reached ("bad type");
1555 /* Smash TYPE to be a type of pointers to members of SELF_TYPE with type
1556 TO_TYPE. A member pointer is a wierd thing -- it amounts to a
1557 typed offset into a struct, e.g. "an int at offset 8". A MEMBER
1558 TYPE doesn't include the offset (that's the value of the MEMBER
1559 itself), but does include the structure type into which it points
1562 When "smashing" the type, we preserve the objfile that the old type
1563 pointed to, since we aren't changing where the type is actually
1567 smash_to_memberptr_type (struct type
*type
, struct type
*self_type
,
1568 struct type
*to_type
)
1571 type
->set_code (TYPE_CODE_MEMBERPTR
);
1572 type
->set_target_type (to_type
);
1573 set_type_self_type (type
, self_type
);
1574 /* Assume that a data member pointer is the same size as a normal
1576 type
->set_length (gdbarch_ptr_bit (to_type
->arch ()) / TARGET_CHAR_BIT
);
1579 /* Smash TYPE to be a type of pointer to methods type TO_TYPE.
1581 When "smashing" the type, we preserve the objfile that the old type
1582 pointed to, since we aren't changing where the type is actually
1586 smash_to_methodptr_type (struct type
*type
, struct type
*to_type
)
1589 type
->set_code (TYPE_CODE_METHODPTR
);
1590 type
->set_target_type (to_type
);
1591 set_type_self_type (type
, TYPE_SELF_TYPE (to_type
));
1592 type
->set_length (cplus_method_ptr_size (to_type
));
1595 /* Smash TYPE to be a type of method of SELF_TYPE with type TO_TYPE.
1596 METHOD just means `function that gets an extra "this" argument'.
1598 When "smashing" the type, we preserve the objfile that the old type
1599 pointed to, since we aren't changing where the type is actually
1603 smash_to_method_type (struct type
*type
, struct type
*self_type
,
1604 struct type
*to_type
, struct field
*args
,
1605 int nargs
, int varargs
)
1608 type
->set_code (TYPE_CODE_METHOD
);
1609 type
->set_target_type (to_type
);
1610 set_type_self_type (type
, self_type
);
1611 type
->set_fields (args
);
1612 type
->set_num_fields (nargs
);
1615 type
->set_has_varargs (true);
1617 /* In practice, this is never needed. */
1618 type
->set_length (1);
1621 /* A wrapper of TYPE_NAME which calls error if the type is anonymous.
1622 Since GCC PR debug/47510 DWARF provides associated information to detect the
1623 anonymous class linkage name from its typedef.
1625 Parameter TYPE should not yet have CHECK_TYPEDEF applied, this function will
1629 type_name_or_error (struct type
*type
)
1631 struct type
*saved_type
= type
;
1633 struct objfile
*objfile
;
1635 type
= check_typedef (type
);
1637 name
= type
->name ();
1641 name
= saved_type
->name ();
1642 objfile
= saved_type
->objfile_owner ();
1643 error (_("Invalid anonymous type %s [in module %s], GCC PR debug/47510 bug?"),
1644 name
? name
: "<anonymous>",
1645 objfile
? objfile_name (objfile
) : "<arch>");
1648 /* See gdbtypes.h. */
1651 lookup_typename (const struct language_defn
*language
,
1653 const struct block
*block
, int noerr
)
1657 sym
= lookup_symbol_in_language (name
, block
, SEARCH_TYPE_DOMAIN
,
1658 language
->la_language
, NULL
).symbol
;
1661 struct type
*type
= sym
->type ();
1662 /* Ensure the length of TYPE is valid. */
1663 check_typedef (type
);
1669 error (_("No type named %s."), name
);
1673 lookup_unsigned_typename (const struct language_defn
*language
,
1677 uns
.reserve (strlen (name
) + strlen ("unsigned "));
1681 return lookup_typename (language
, uns
.c_str (), NULL
, 0);
1685 lookup_signed_typename (const struct language_defn
*language
, const char *name
)
1687 /* In C and C++, "char" and "signed char" are distinct types. */
1688 if (streq (name
, "char"))
1689 name
= "signed char";
1690 return lookup_typename (language
, name
, NULL
, 0);
1693 /* Lookup a structure type named "struct NAME",
1694 visible in lexical block BLOCK. */
1697 lookup_struct (const char *name
, const struct block
*block
)
1701 sym
= lookup_symbol (name
, block
, SEARCH_STRUCT_DOMAIN
, 0).symbol
;
1705 error (_("No struct type named %s."), name
);
1707 if (sym
->type ()->code () != TYPE_CODE_STRUCT
)
1709 error (_("This context has class, union or enum %s, not a struct."),
1712 return (sym
->type ());
1715 /* Lookup a union type named "union NAME",
1716 visible in lexical block BLOCK. */
1719 lookup_union (const char *name
, const struct block
*block
)
1724 sym
= lookup_symbol (name
, block
, SEARCH_STRUCT_DOMAIN
, 0).symbol
;
1727 error (_("No union type named %s."), name
);
1731 if (t
->code () == TYPE_CODE_UNION
)
1734 /* If we get here, it's not a union. */
1735 error (_("This context has class, struct or enum %s, not a union."),
1739 /* Lookup an enum type named "enum NAME",
1740 visible in lexical block BLOCK. */
1743 lookup_enum (const char *name
, const struct block
*block
)
1747 sym
= lookup_symbol (name
, block
, SEARCH_STRUCT_DOMAIN
, 0).symbol
;
1750 error (_("No enum type named %s."), name
);
1752 if (sym
->type ()->code () != TYPE_CODE_ENUM
)
1754 error (_("This context has class, struct or union %s, not an enum."),
1757 return (sym
->type ());
1760 /* Lookup a template type named "template NAME<TYPE>",
1761 visible in lexical block BLOCK. */
1764 lookup_template_type (const char *name
, struct type
*type
,
1765 const struct block
*block
)
1768 nam
.reserve (strlen (name
) + strlen (type
->name ()) + strlen ("< >"));
1771 nam
+= type
->name ();
1772 nam
+= " >"; /* FIXME, extra space still introduced in gcc? */
1774 symbol
*sym
= lookup_symbol (nam
.c_str (), block
,
1775 SEARCH_STRUCT_DOMAIN
, 0).symbol
;
1779 error (_("No template type named %s."), name
);
1781 if (sym
->type ()->code () != TYPE_CODE_STRUCT
)
1783 error (_("This context has class, union or enum %s, not a struct."),
1786 return (sym
->type ());
1789 /* See gdbtypes.h. */
1792 lookup_struct_elt (struct type
*type
, const char *name
, int noerr
)
1798 type
= check_typedef (type
);
1799 if (type
->code () != TYPE_CODE_PTR
1800 && type
->code () != TYPE_CODE_REF
)
1802 type
= type
->target_type ();
1805 if (type
->code () != TYPE_CODE_STRUCT
1806 && type
->code () != TYPE_CODE_UNION
)
1808 std::string type_name
= type_to_string (type
);
1809 error (_("Type %s is not a structure or union type."),
1810 type_name
.c_str ());
1813 for (i
= type
->num_fields () - 1; i
>= TYPE_N_BASECLASSES (type
); i
--)
1815 const char *t_field_name
= type
->field (i
).name ();
1817 if (t_field_name
&& (strcmp_iw (t_field_name
, name
) == 0))
1819 return {&type
->field (i
), type
->field (i
).loc_bitpos ()};
1821 else if (!t_field_name
|| *t_field_name
== '\0')
1824 = lookup_struct_elt (type
->field (i
).type (), name
, 1);
1825 if (elt
.field
!= NULL
)
1827 elt
.offset
+= type
->field (i
).loc_bitpos ();
1833 /* OK, it's not in this class. Recursively check the baseclasses. */
1834 for (i
= TYPE_N_BASECLASSES (type
) - 1; i
>= 0; i
--)
1836 struct_elt elt
= lookup_struct_elt (TYPE_BASECLASS (type
, i
), name
, 1);
1837 if (elt
.field
!= NULL
)
1842 return {nullptr, 0};
1844 std::string type_name
= type_to_string (type
);
1845 error (_("Type %s has no component named %s."), type_name
.c_str (), name
);
1848 /* See gdbtypes.h. */
1851 lookup_struct_elt_type (struct type
*type
, const char *name
, int noerr
)
1853 struct_elt elt
= lookup_struct_elt (type
, name
, noerr
);
1854 if (elt
.field
!= NULL
)
1855 return elt
.field
->type ();
1860 /* Return the largest number representable by unsigned integer type TYPE. */
1863 get_unsigned_type_max (struct type
*type
)
1867 type
= check_typedef (type
);
1868 gdb_assert (type
->code () == TYPE_CODE_INT
&& type
->is_unsigned ());
1869 gdb_assert (type
->length () <= sizeof (ULONGEST
));
1871 /* Written this way to avoid overflow. */
1872 n
= type
->length () * TARGET_CHAR_BIT
;
1873 return ((((ULONGEST
) 1 << (n
- 1)) - 1) << 1) | 1;
1876 /* Store in *MIN, *MAX the smallest and largest numbers representable by
1877 signed integer type TYPE. */
1880 get_signed_type_minmax (struct type
*type
, LONGEST
*min
, LONGEST
*max
)
1884 type
= check_typedef (type
);
1885 gdb_assert (type
->code () == TYPE_CODE_INT
&& !type
->is_unsigned ());
1886 gdb_assert (type
->length () <= sizeof (LONGEST
));
1888 n
= type
->length () * TARGET_CHAR_BIT
;
1889 *min
= -((ULONGEST
) 1 << (n
- 1));
1890 *max
= ((ULONGEST
) 1 << (n
- 1)) - 1;
1893 /* Return the largest value representable by pointer type TYPE. */
1896 get_pointer_type_max (struct type
*type
)
1900 type
= check_typedef (type
);
1901 gdb_assert (type
->code () == TYPE_CODE_PTR
);
1902 gdb_assert (type
->length () <= sizeof (CORE_ADDR
));
1904 n
= type
->length () * TARGET_CHAR_BIT
;
1905 return ((((CORE_ADDR
) 1 << (n
- 1)) - 1) << 1) | 1;
1908 /* Internal routine called by TYPE_VPTR_FIELDNO to return the value of
1909 cplus_stuff.vptr_fieldno.
1911 cplus_stuff is initialized to cplus_struct_default which does not
1912 set vptr_fieldno to -1 for portability reasons (IWBN to use C99
1913 designated initializers). We cope with that here. */
1916 internal_type_vptr_fieldno (struct type
*type
)
1918 type
= check_typedef (type
);
1919 gdb_assert (type
->code () == TYPE_CODE_STRUCT
1920 || type
->code () == TYPE_CODE_UNION
);
1921 if (!HAVE_CPLUS_STRUCT (type
))
1923 return TYPE_RAW_CPLUS_SPECIFIC (type
)->vptr_fieldno
;
1926 /* Set the value of cplus_stuff.vptr_fieldno. */
1929 set_type_vptr_fieldno (struct type
*type
, int fieldno
)
1931 type
= check_typedef (type
);
1932 gdb_assert (type
->code () == TYPE_CODE_STRUCT
1933 || type
->code () == TYPE_CODE_UNION
);
1934 if (!HAVE_CPLUS_STRUCT (type
))
1935 ALLOCATE_CPLUS_STRUCT_TYPE (type
);
1936 TYPE_RAW_CPLUS_SPECIFIC (type
)->vptr_fieldno
= fieldno
;
1939 /* Internal routine called by TYPE_VPTR_BASETYPE to return the value of
1940 cplus_stuff.vptr_basetype. */
1943 internal_type_vptr_basetype (struct type
*type
)
1945 type
= check_typedef (type
);
1946 gdb_assert (type
->code () == TYPE_CODE_STRUCT
1947 || type
->code () == TYPE_CODE_UNION
);
1948 gdb_assert (TYPE_SPECIFIC_FIELD (type
) == TYPE_SPECIFIC_CPLUS_STUFF
);
1949 return TYPE_RAW_CPLUS_SPECIFIC (type
)->vptr_basetype
;
1952 /* Set the value of cplus_stuff.vptr_basetype. */
1955 set_type_vptr_basetype (struct type
*type
, struct type
*basetype
)
1957 type
= check_typedef (type
);
1958 gdb_assert (type
->code () == TYPE_CODE_STRUCT
1959 || type
->code () == TYPE_CODE_UNION
);
1960 if (!HAVE_CPLUS_STRUCT (type
))
1961 ALLOCATE_CPLUS_STRUCT_TYPE (type
);
1962 TYPE_RAW_CPLUS_SPECIFIC (type
)->vptr_basetype
= basetype
;
1965 /* Lookup the vptr basetype/fieldno values for TYPE.
1966 If found store vptr_basetype in *BASETYPEP if non-NULL, and return
1967 vptr_fieldno. Also, if found and basetype is from the same objfile,
1969 If not found, return -1 and ignore BASETYPEP.
1970 Callers should be aware that in some cases (for example,
1971 the type or one of its baseclasses is a stub type and we are
1972 debugging a .o file, or the compiler uses DWARF-2 and is not GCC),
1973 this function will not be able to find the
1974 virtual function table pointer, and vptr_fieldno will remain -1 and
1975 vptr_basetype will remain NULL or incomplete. */
1978 get_vptr_fieldno (struct type
*type
, struct type
**basetypep
)
1980 type
= check_typedef (type
);
1982 if (TYPE_VPTR_FIELDNO (type
) < 0)
1986 /* We must start at zero in case the first (and only) baseclass
1987 is virtual (and hence we cannot share the table pointer). */
1988 for (i
= 0; i
< TYPE_N_BASECLASSES (type
); i
++)
1990 struct type
*baseclass
= check_typedef (TYPE_BASECLASS (type
, i
));
1992 struct type
*basetype
;
1994 fieldno
= get_vptr_fieldno (baseclass
, &basetype
);
1997 /* If the type comes from a different objfile we can't cache
1998 it, it may have a different lifetime. PR 2384 */
1999 if (type
->objfile_owner () == basetype
->objfile_owner ())
2001 set_type_vptr_fieldno (type
, fieldno
);
2002 set_type_vptr_basetype (type
, basetype
);
2005 *basetypep
= basetype
;
2016 *basetypep
= TYPE_VPTR_BASETYPE (type
);
2017 return TYPE_VPTR_FIELDNO (type
);
2022 stub_noname_complaint (void)
2024 complaint (_("stub type has NULL name"));
2027 /* Return nonzero if TYPE has a DYN_PROP_BYTE_STRIDE dynamic property
2028 attached to it, and that property has a non-constant value. */
2031 array_type_has_dynamic_stride (struct type
*type
)
2033 struct dynamic_prop
*prop
= type
->dyn_prop (DYN_PROP_BYTE_STRIDE
);
2035 return prop
!= nullptr && prop
->is_constant ();
2038 /* Worker for is_dynamic_type. */
2041 is_dynamic_type_internal (struct type
*type
, bool top_level
)
2043 type
= check_typedef (type
);
2045 /* We only want to recognize references and pointers at the outermost
2047 if (top_level
&& type
->is_pointer_or_reference ())
2048 type
= check_typedef (type
->target_type ());
2050 /* Types that have a dynamic TYPE_DATA_LOCATION are considered
2051 dynamic, even if the type itself is statically defined.
2052 From a user's point of view, this may appear counter-intuitive;
2053 but it makes sense in this context, because the point is to determine
2054 whether any part of the type needs to be resolved before it can
2056 if (TYPE_DATA_LOCATION (type
) != NULL
2057 && (TYPE_DATA_LOCATION_KIND (type
) == PROP_LOCEXPR
2058 || TYPE_DATA_LOCATION_KIND (type
) == PROP_LOCLIST
))
2061 if (TYPE_ASSOCIATED_PROP (type
))
2064 if (TYPE_ALLOCATED_PROP (type
))
2067 struct dynamic_prop
*prop
= type
->dyn_prop (DYN_PROP_VARIANT_PARTS
);
2068 if (prop
!= nullptr && prop
->kind () != PROP_TYPE
)
2071 if (TYPE_HAS_DYNAMIC_LENGTH (type
))
2074 switch (type
->code ())
2076 case TYPE_CODE_RANGE
:
2078 /* A range type is obviously dynamic if it has at least one
2079 dynamic bound. But also consider the range type to be
2080 dynamic when its subtype is dynamic, even if the bounds
2081 of the range type are static. It allows us to assume that
2082 the subtype of a static range type is also static. */
2083 return (!has_static_range (type
->bounds ())
2084 || is_dynamic_type_internal (type
->target_type (), false));
2087 case TYPE_CODE_STRING
:
2088 /* Strings are very much like an array of characters, and can be
2089 treated as one here. */
2090 case TYPE_CODE_ARRAY
:
2092 gdb_assert (type
->num_fields () == 1);
2094 /* The array is dynamic if either the bounds are dynamic... */
2095 if (is_dynamic_type_internal (type
->index_type (), false))
2097 /* ... or the elements it contains have a dynamic contents... */
2098 if (is_dynamic_type_internal (type
->target_type (), false))
2100 /* ... or if it has a dynamic stride... */
2101 if (array_type_has_dynamic_stride (type
))
2106 case TYPE_CODE_STRUCT
:
2107 case TYPE_CODE_UNION
:
2111 bool is_cplus
= HAVE_CPLUS_STRUCT (type
);
2113 for (i
= 0; i
< type
->num_fields (); ++i
)
2115 /* Static fields can be ignored here. */
2116 if (type
->field (i
).is_static ())
2118 /* If the field has dynamic type, then so does TYPE. */
2119 if (is_dynamic_type_internal (type
->field (i
).type (), false))
2121 /* If the field is at a fixed offset, then it is not
2123 if (type
->field (i
).loc_kind () != FIELD_LOC_KIND_DWARF_BLOCK
)
2125 /* Do not consider C++ virtual base types to be dynamic
2126 due to the field's offset being dynamic; these are
2127 handled via other means. */
2128 if (is_cplus
&& BASETYPE_VIA_VIRTUAL (type
, i
))
2139 /* See gdbtypes.h. */
2142 is_dynamic_type (struct type
*type
)
2144 return is_dynamic_type_internal (type
, true);
2147 static struct type
*resolve_dynamic_type_internal
2148 (struct type
*type
, struct property_addr_info
*addr_stack
,
2149 const frame_info_ptr
&frame
, bool top_level
);
2151 /* Given a dynamic range type (dyn_range_type) and a stack of
2152 struct property_addr_info elements, return a static version
2155 When RESOLVE_P is true then the returned static range is created by
2156 actually evaluating any dynamic properties within the range type, while
2157 when RESOLVE_P is false the returned static range has all of the bounds
2158 and stride information set to undefined. The RESOLVE_P set to false
2159 case will be used when evaluating a dynamic array that is not
2160 allocated, or not associated, i.e. the bounds information might not be
2163 RANK is the array rank for which we are resolving this range, and is a
2164 zero based count. The rank should never be negative.
2167 static struct type
*
2168 resolve_dynamic_range (struct type
*dyn_range_type
,
2169 struct property_addr_info
*addr_stack
,
2170 const frame_info_ptr
&frame
,
2171 int rank
, bool resolve_p
= true)
2174 struct type
*static_range_type
, *static_target_type
;
2175 struct dynamic_prop low_bound
, high_bound
, stride
;
2177 gdb_assert (dyn_range_type
->code () == TYPE_CODE_RANGE
);
2178 gdb_assert (rank
>= 0);
2180 const struct dynamic_prop
*prop
= &dyn_range_type
->bounds ()->low
;
2183 if (dwarf2_evaluate_property (prop
, frame
, addr_stack
, &value
,
2184 { (CORE_ADDR
) rank
}))
2185 low_bound
.set_const_val (value
);
2186 else if (prop
->kind () == PROP_UNDEFINED
)
2187 low_bound
.set_undefined ();
2189 low_bound
.set_optimized_out ();
2192 low_bound
.set_undefined ();
2194 prop
= &dyn_range_type
->bounds ()->high
;
2197 if (dwarf2_evaluate_property (prop
, frame
, addr_stack
, &value
,
2198 { (CORE_ADDR
) rank
}))
2200 high_bound
.set_const_val (value
);
2202 if (dyn_range_type
->bounds ()->flag_upper_bound_is_count
)
2203 high_bound
.set_const_val
2204 (low_bound
.const_val () + high_bound
.const_val () - 1);
2206 else if (prop
->kind () == PROP_UNDEFINED
)
2207 high_bound
.set_undefined ();
2209 high_bound
.set_optimized_out ();
2212 high_bound
.set_undefined ();
2214 bool byte_stride_p
= dyn_range_type
->bounds ()->flag_is_byte_stride
;
2215 prop
= &dyn_range_type
->bounds ()->stride
;
2216 if (resolve_p
&& dwarf2_evaluate_property (prop
, frame
, addr_stack
, &value
,
2217 { (CORE_ADDR
) rank
}))
2219 stride
.set_const_val (value
);
2221 /* If we have a bit stride that is not an exact number of bytes then
2222 I really don't think this is going to work with current GDB, the
2223 array indexing code in GDB seems to be pretty heavily tied to byte
2224 offsets right now. Assuming 8 bits in a byte. */
2225 struct gdbarch
*gdbarch
= dyn_range_type
->arch ();
2226 int unit_size
= gdbarch_addressable_memory_unit_size (gdbarch
);
2227 if (!byte_stride_p
&& (value
% (unit_size
* 8)) != 0)
2228 error (_("bit strides that are not a multiple of the byte size "
2229 "are currently not supported"));
2233 stride
.set_undefined ();
2234 byte_stride_p
= true;
2238 = resolve_dynamic_type_internal (dyn_range_type
->target_type (),
2239 addr_stack
, frame
, false);
2240 LONGEST bias
= dyn_range_type
->bounds ()->bias
;
2241 type_allocator
alloc (dyn_range_type
);
2242 static_range_type
= create_range_type_with_stride
2243 (alloc
, static_target_type
,
2244 &low_bound
, &high_bound
, bias
, &stride
, byte_stride_p
);
2245 static_range_type
->set_name (dyn_range_type
->name ());
2246 static_range_type
->bounds ()->flag_bound_evaluated
= 1;
2247 return static_range_type
;
2250 /* Helper function for resolve_dynamic_array_or_string. This function
2251 resolves the properties for a single array at RANK within a nested array
2252 of arrays structure. The RANK value is greater than or equal to 0, and
2253 starts at it's maximum value and goes down by 1 for each recursive call
2254 to this function. So, for a 3-dimensional array, the first call to this
2255 function has RANK == 2, then we call ourselves recursively with RANK ==
2256 1, than again with RANK == 0, and at that point we should return.
2258 TYPE is updated as the dynamic properties are resolved, and so, should
2259 be a copy of the dynamic type, rather than the original dynamic type
2262 ADDR_STACK is a stack of struct property_addr_info to be used if needed
2263 during the dynamic resolution.
2265 When RESOLVE_P is true then the dynamic properties of TYPE are
2266 evaluated, otherwise the dynamic properties of TYPE are not evaluated,
2267 instead we assume the array is not allocated/associated yet. */
2269 static struct type
*
2270 resolve_dynamic_array_or_string_1 (struct type
*type
,
2271 struct property_addr_info
*addr_stack
,
2272 const frame_info_ptr
&frame
,
2273 int rank
, bool resolve_p
)
2276 struct type
*elt_type
;
2277 struct type
*range_type
;
2278 struct type
*ary_dim
;
2279 struct dynamic_prop
*prop
;
2280 unsigned int bit_stride
= 0;
2282 /* For dynamic type resolution strings can be treated like arrays of
2284 gdb_assert (type
->code () == TYPE_CODE_ARRAY
2285 || type
->code () == TYPE_CODE_STRING
);
2287 /* As the rank is a zero based count we expect this to never be
2289 gdb_assert (rank
>= 0);
2291 /* Resolve the allocated and associated properties before doing anything
2292 else. If an array is not allocated or not associated then (at least
2293 for Fortran) there is no guarantee that the data to define the upper
2294 bound, lower bound, or stride will be correct. If RESOLVE_P is
2295 already false at this point then this is not the first dimension of
2296 the array and a more outer dimension has already marked this array as
2297 not allocated/associated, as such we just ignore this property. This
2298 is fine as GDB only checks the allocated/associated on the outer most
2299 dimension of the array. */
2300 prop
= TYPE_ALLOCATED_PROP (type
);
2301 if (prop
!= NULL
&& resolve_p
2302 && dwarf2_evaluate_property (prop
, frame
, addr_stack
, &value
))
2304 prop
->set_const_val (value
);
2309 prop
= TYPE_ASSOCIATED_PROP (type
);
2310 if (prop
!= NULL
&& resolve_p
2311 && dwarf2_evaluate_property (prop
, frame
, addr_stack
, &value
))
2313 prop
->set_const_val (value
);
2318 range_type
= check_typedef (type
->index_type ());
2320 = resolve_dynamic_range (range_type
, addr_stack
, frame
, rank
, resolve_p
);
2322 ary_dim
= check_typedef (type
->target_type ());
2323 if (ary_dim
!= NULL
&& ary_dim
->code () == TYPE_CODE_ARRAY
)
2325 ary_dim
= copy_type (ary_dim
);
2326 elt_type
= resolve_dynamic_array_or_string_1 (ary_dim
, addr_stack
,
2331 elt_type
= type
->target_type ();
2333 prop
= type
->dyn_prop (DYN_PROP_BYTE_STRIDE
);
2334 if (prop
!= NULL
&& resolve_p
)
2336 if (dwarf2_evaluate_property (prop
, frame
, addr_stack
, &value
))
2338 type
->remove_dyn_prop (DYN_PROP_BYTE_STRIDE
);
2339 bit_stride
= (unsigned int) (value
* 8);
2343 /* Could be a bug in our code, but it could also happen
2344 if the DWARF info is not correct. Issue a warning,
2345 and assume no byte/bit stride (leave bit_stride = 0). */
2346 warning (_("cannot determine array stride for type %s"),
2347 type
->name () ? type
->name () : "<no name>");
2351 bit_stride
= type
->field (0).bitsize ();
2353 type_allocator
alloc (type
, type_allocator::SMASH
);
2354 return create_array_type_with_stride (alloc
, elt_type
, range_type
, NULL
,
2358 /* Resolve an array or string type with dynamic properties, return a new
2359 type with the dynamic properties resolved to actual values. The
2360 ADDR_STACK represents the location of the object being resolved. */
2362 static struct type
*
2363 resolve_dynamic_array_or_string (struct type
*type
,
2364 struct property_addr_info
*addr_stack
,
2365 const frame_info_ptr
&frame
)
2370 /* For dynamic type resolution strings can be treated like arrays of
2372 gdb_assert (type
->code () == TYPE_CODE_ARRAY
2373 || type
->code () == TYPE_CODE_STRING
);
2375 type
= copy_type (type
);
2377 /* Resolve the rank property to get rank value. */
2378 struct dynamic_prop
*prop
= TYPE_RANK_PROP (type
);
2379 if (dwarf2_evaluate_property (prop
, frame
, addr_stack
, &value
))
2381 prop
->set_const_val (value
);
2386 /* Rank is zero, if a variable is passed as an argument to a
2387 function. In this case the resolved type should not be an
2388 array, but should instead be that of an array element. */
2389 struct type
*dynamic_array_type
= type
;
2390 type
= copy_type (dynamic_array_type
->target_type ());
2391 struct dynamic_prop_list
*prop_list
2392 = TYPE_MAIN_TYPE (dynamic_array_type
)->dyn_prop_list
;
2393 if (prop_list
!= nullptr)
2395 struct obstack
*obstack
2396 = &type
->objfile_owner ()->objfile_obstack
;
2397 TYPE_MAIN_TYPE (type
)->dyn_prop_list
2398 = copy_dynamic_prop_list (obstack
, prop_list
);
2402 else if (type
->code () == TYPE_CODE_STRING
&& rank
!= 1)
2404 /* What would this even mean? A string with a dynamic rank
2406 error (_("unable to handle string with dynamic rank greater than 1"));
2410 /* Arrays with dynamic rank are initially just an array type
2411 with a target type that is the array element.
2413 However, now we know the rank of the array we need to build
2414 the array of arrays structure that GDB expects, that is we
2415 need an array type that has a target which is an array type,
2416 and so on, until eventually, we have the element type at the
2417 end of the chain. Create all the additional array types here
2418 by copying the top level array type. */
2419 struct type
*element_type
= type
->target_type ();
2420 struct type
*rank_type
= type
;
2421 for (int i
= 1; i
< rank
; i
++)
2423 rank_type
->set_target_type (copy_type (rank_type
));
2424 rank_type
= rank_type
->target_type ();
2426 rank_type
->set_target_type (element_type
);
2433 for (struct type
*tmp_type
= check_typedef (type
->target_type ());
2434 tmp_type
->code () == TYPE_CODE_ARRAY
;
2435 tmp_type
= check_typedef (tmp_type
->target_type ()))
2439 /* The rank that we calculated above is actually a count of the number of
2440 ranks. However, when we resolve the type of each individual array
2441 rank we should actually use a rank "offset", e.g. an array with a rank
2442 count of 1 (calculated above) will use the rank offset 0 in order to
2443 resolve the details of the first array dimension. As a result, we
2444 reduce the rank by 1 here. */
2447 return resolve_dynamic_array_or_string_1 (type
, addr_stack
, frame
, rank
,
2451 /* Resolve dynamic bounds of members of the union TYPE to static
2452 bounds. ADDR_STACK is a stack of struct property_addr_info
2453 to be used if needed during the dynamic resolution. */
2455 static struct type
*
2456 resolve_dynamic_union (struct type
*type
,
2457 struct property_addr_info
*addr_stack
,
2458 const frame_info_ptr
&frame
)
2460 struct type
*resolved_type
;
2462 unsigned int max_len
= 0;
2464 gdb_assert (type
->code () == TYPE_CODE_UNION
);
2466 resolved_type
= copy_type (type
);
2467 resolved_type
->copy_fields (type
);
2468 for (i
= 0; i
< resolved_type
->num_fields (); ++i
)
2472 if (type
->field (i
).is_static ())
2475 t
= resolve_dynamic_type_internal (resolved_type
->field (i
).type (),
2476 addr_stack
, frame
, false);
2477 resolved_type
->field (i
).set_type (t
);
2479 struct type
*real_type
= check_typedef (t
);
2480 if (real_type
->length () > max_len
)
2481 max_len
= real_type
->length ();
2484 resolved_type
->set_length (max_len
);
2485 return resolved_type
;
2488 /* See gdbtypes.h. */
2491 variant::matches (ULONGEST value
, bool is_unsigned
) const
2493 for (const discriminant_range
&range
: discriminants
)
2494 if (range
.contains (value
, is_unsigned
))
2500 compute_variant_fields_inner (struct type
*type
,
2501 struct property_addr_info
*addr_stack
,
2502 const variant_part
&part
,
2503 std::vector
<bool> &flags
);
2505 /* A helper function to determine which variant fields will be active.
2506 This handles both the variant's direct fields, and any variant
2507 parts embedded in this variant. TYPE is the type we're examining.
2508 ADDR_STACK holds information about the concrete object. VARIANT is
2509 the current variant to be handled. FLAGS is where the results are
2510 stored -- this function sets the Nth element in FLAGS if the
2511 corresponding field is enabled. ENABLED is whether this variant is
2515 compute_variant_fields_recurse (struct type
*type
,
2516 struct property_addr_info
*addr_stack
,
2517 const variant
&variant
,
2518 std::vector
<bool> &flags
,
2521 for (int field
= variant
.first_field
; field
< variant
.last_field
; ++field
)
2522 flags
[field
] = enabled
;
2524 for (const variant_part
&new_part
: variant
.parts
)
2527 compute_variant_fields_inner (type
, addr_stack
, new_part
, flags
);
2530 for (const auto &sub_variant
: new_part
.variants
)
2531 compute_variant_fields_recurse (type
, addr_stack
, sub_variant
,
2537 /* A helper function to determine which variant fields will be active.
2538 This evaluates the discriminant, decides which variant (if any) is
2539 active, and then updates FLAGS to reflect which fields should be
2540 available. TYPE is the type we're examining. ADDR_STACK holds
2541 information about the concrete object. VARIANT is the current
2542 variant to be handled. FLAGS is where the results are stored --
2543 this function sets the Nth element in FLAGS if the corresponding
2544 field is enabled. */
2547 compute_variant_fields_inner (struct type
*type
,
2548 struct property_addr_info
*addr_stack
,
2549 const variant_part
&part
,
2550 std::vector
<bool> &flags
)
2552 /* Evaluate the discriminant. */
2553 std::optional
<ULONGEST
> discr_value
;
2554 if (part
.discriminant_index
!= -1)
2556 int idx
= part
.discriminant_index
;
2558 if (type
->field (idx
).loc_kind () != FIELD_LOC_KIND_BITPOS
)
2559 error (_("Cannot determine struct field location"
2560 " (invalid location kind)"));
2562 if (addr_stack
->valaddr
.data () != NULL
)
2563 discr_value
= unpack_field_as_long (type
, addr_stack
->valaddr
.data (),
2567 CORE_ADDR addr
= (addr_stack
->addr
2568 + (type
->field (idx
).loc_bitpos ()
2569 / TARGET_CHAR_BIT
));
2571 LONGEST bitsize
= type
->field (idx
).bitsize ();
2572 LONGEST size
= bitsize
/ 8;
2574 size
= type
->field (idx
).type ()->length ();
2576 gdb_byte bits
[sizeof (ULONGEST
)];
2577 read_memory (addr
, bits
, size
);
2579 LONGEST bitpos
= (type
->field (idx
).loc_bitpos ()
2582 discr_value
= unpack_bits_as_long (type
->field (idx
).type (),
2583 bits
, bitpos
, bitsize
);
2587 /* Go through each variant and see which applies. */
2588 const variant
*default_variant
= nullptr;
2589 const variant
*applied_variant
= nullptr;
2590 for (const auto &variant
: part
.variants
)
2592 if (variant
.is_default ())
2593 default_variant
= &variant
;
2594 else if (discr_value
.has_value ()
2595 && variant
.matches (*discr_value
, part
.is_unsigned
))
2597 applied_variant
= &variant
;
2601 if (applied_variant
== nullptr)
2602 applied_variant
= default_variant
;
2604 for (const auto &variant
: part
.variants
)
2605 compute_variant_fields_recurse (type
, addr_stack
, variant
,
2606 flags
, applied_variant
== &variant
);
2609 /* Determine which variant fields are available in TYPE. The enabled
2610 fields are stored in RESOLVED_TYPE. ADDR_STACK holds information
2611 about the concrete object. PARTS describes the top-level variant
2612 parts for this type. */
2615 compute_variant_fields (struct type
*type
,
2616 struct type
*resolved_type
,
2617 struct property_addr_info
*addr_stack
,
2618 const gdb::array_view
<variant_part
> &parts
)
2620 /* Assume all fields are included by default. */
2621 std::vector
<bool> flags (resolved_type
->num_fields (), true);
2623 /* Now disable fields based on the variants that control them. */
2624 for (const auto &part
: parts
)
2625 compute_variant_fields_inner (type
, addr_stack
, part
, flags
);
2627 unsigned int nfields
= std::count (flags
.begin (), flags
.end (), true);
2628 /* No need to zero-initialize the newly allocated fields, they'll be
2629 initialized by the copy in the loop below. */
2630 resolved_type
->alloc_fields (nfields
, false);
2633 for (int i
= 0; i
< type
->num_fields (); ++i
)
2638 resolved_type
->field (out
) = type
->field (i
);
2643 /* Resolve dynamic bounds of members of the struct TYPE to static
2644 bounds. ADDR_STACK is a stack of struct property_addr_info to
2645 be used if needed during the dynamic resolution. */
2647 static struct type
*
2648 resolve_dynamic_struct (struct type
*type
,
2649 struct property_addr_info
*addr_stack
,
2650 const frame_info_ptr
&frame
)
2652 struct type
*resolved_type
;
2654 unsigned resolved_type_bit_length
= 0;
2656 gdb_assert (type
->code () == TYPE_CODE_STRUCT
);
2658 resolved_type
= copy_type (type
);
2660 dynamic_prop
*variant_prop
= resolved_type
->dyn_prop (DYN_PROP_VARIANT_PARTS
);
2661 if (variant_prop
!= nullptr && variant_prop
->kind () == PROP_VARIANT_PARTS
)
2663 compute_variant_fields (type
, resolved_type
, addr_stack
,
2664 *variant_prop
->variant_parts ());
2665 /* We want to leave the property attached, so that the Rust code
2666 can tell whether the type was originally an enum. */
2667 variant_prop
->set_original_type (type
);
2671 resolved_type
->copy_fields (type
);
2674 for (i
= 0; i
< resolved_type
->num_fields (); ++i
)
2676 unsigned new_bit_length
;
2677 struct property_addr_info pinfo
;
2679 if (resolved_type
->field (i
).is_static ())
2682 if (resolved_type
->field (i
).loc_kind () == FIELD_LOC_KIND_DWARF_BLOCK
)
2684 struct dwarf2_property_baton baton
;
2686 = lookup_pointer_type (resolved_type
->field (i
).type ());
2687 baton
.locexpr
= *resolved_type
->field (i
).loc_dwarf_block ();
2689 struct dynamic_prop prop
;
2690 prop
.set_locexpr (&baton
);
2693 if (dwarf2_evaluate_property (&prop
, frame
, addr_stack
, &addr
,
2694 {addr_stack
->addr
}))
2695 resolved_type
->field (i
).set_loc_bitpos
2696 (TARGET_CHAR_BIT
* (addr
- addr_stack
->addr
));
2699 /* As we know this field is not a static field, the field's
2700 field_loc_kind should be FIELD_LOC_KIND_BITPOS. Verify
2701 this is the case, but only trigger a simple error rather
2702 than an internal error if that fails. While failing
2703 that verification indicates a bug in our code, the error
2704 is not severe enough to suggest to the user he stops
2705 his debugging session because of it. */
2706 if (resolved_type
->field (i
).loc_kind () != FIELD_LOC_KIND_BITPOS
)
2707 error (_("Cannot determine struct field location"
2708 " (invalid location kind)"));
2710 pinfo
.type
= check_typedef (resolved_type
->field (i
).type ());
2711 size_t offset
= resolved_type
->field (i
).loc_bitpos () / TARGET_CHAR_BIT
;
2712 pinfo
.valaddr
= addr_stack
->valaddr
;
2713 if (!pinfo
.valaddr
.empty ())
2714 pinfo
.valaddr
= pinfo
.valaddr
.slice (offset
);
2715 pinfo
.addr
= addr_stack
->addr
+ offset
;
2716 pinfo
.next
= addr_stack
;
2718 resolved_type
->field (i
).set_type
2719 (resolve_dynamic_type_internal (resolved_type
->field (i
).type (),
2720 &pinfo
, frame
, false));
2721 gdb_assert (resolved_type
->field (i
).loc_kind ()
2722 == FIELD_LOC_KIND_BITPOS
);
2724 new_bit_length
= resolved_type
->field (i
).loc_bitpos ();
2725 if (resolved_type
->field (i
).bitsize () != 0)
2726 new_bit_length
+= resolved_type
->field (i
).bitsize ();
2729 struct type
*real_type
2730 = check_typedef (resolved_type
->field (i
).type ());
2732 new_bit_length
+= (real_type
->length () * TARGET_CHAR_BIT
);
2735 /* Normally, we would use the position and size of the last field
2736 to determine the size of the enclosing structure. But GCC seems
2737 to be encoding the position of some fields incorrectly when
2738 the struct contains a dynamic field that is not placed last.
2739 So we compute the struct size based on the field that has
2740 the highest position + size - probably the best we can do. */
2741 if (new_bit_length
> resolved_type_bit_length
)
2742 resolved_type_bit_length
= new_bit_length
;
2745 /* The length of a type won't change for fortran, but it does for C and Ada.
2746 For fortran the size of dynamic fields might change over time but not the
2747 type length of the structure. If we adapt it, we run into problems
2748 when calculating the element offset for arrays of structs. */
2749 if (current_language
->la_language
!= language_fortran
)
2750 resolved_type
->set_length ((resolved_type_bit_length
+ TARGET_CHAR_BIT
- 1)
2753 /* The Ada language uses this field as a cache for static fixed types: reset
2754 it as RESOLVED_TYPE must have its own static fixed type. */
2755 resolved_type
->set_target_type (nullptr);
2757 return resolved_type
;
2760 /* Worker for resolved_dynamic_type. */
2762 static struct type
*
2763 resolve_dynamic_type_internal (struct type
*type
,
2764 struct property_addr_info
*addr_stack
,
2765 const frame_info_ptr
&frame
,
2768 struct type
*real_type
= check_typedef (type
);
2769 struct type
*resolved_type
= nullptr;
2770 struct dynamic_prop
*prop
;
2773 if (!is_dynamic_type_internal (real_type
, top_level
))
2776 std::optional
<CORE_ADDR
> type_length
;
2777 prop
= TYPE_DYNAMIC_LENGTH (type
);
2779 && dwarf2_evaluate_property (prop
, frame
, addr_stack
, &value
))
2780 type_length
= value
;
2782 if (type
->code () == TYPE_CODE_TYPEDEF
)
2784 resolved_type
= copy_type (type
);
2785 resolved_type
->set_target_type
2786 (resolve_dynamic_type_internal (type
->target_type (), addr_stack
,
2791 /* Before trying to resolve TYPE, make sure it is not a stub. */
2794 switch (type
->code ())
2798 case TYPE_CODE_RVALUE_REF
:
2800 struct property_addr_info pinfo
;
2802 pinfo
.type
= check_typedef (type
->target_type ());
2804 if (addr_stack
->valaddr
.data () != NULL
)
2805 pinfo
.addr
= extract_typed_address (addr_stack
->valaddr
.data (),
2808 pinfo
.addr
= read_memory_typed_address (addr_stack
->addr
, type
);
2809 pinfo
.next
= addr_stack
;
2811 /* Special case a NULL pointer here -- we don't want to
2813 if (pinfo
.addr
!= 0)
2815 resolved_type
= copy_type (type
);
2816 resolved_type
->set_target_type
2817 (resolve_dynamic_type_internal (type
->target_type (),
2818 &pinfo
, frame
, true));
2823 case TYPE_CODE_STRING
:
2824 /* Strings are very much like an array of characters, and can be
2825 treated as one here. */
2826 case TYPE_CODE_ARRAY
:
2827 resolved_type
= resolve_dynamic_array_or_string (type
, addr_stack
,
2831 case TYPE_CODE_RANGE
:
2832 /* Pass 0 for the rank value here, which indicates this is a
2833 range for the first rank of an array. The assumption is that
2834 this rank value is not actually required for the resolution of
2835 the dynamic range, otherwise, we'd be resolving this range
2836 within the context of a dynamic array. */
2837 resolved_type
= resolve_dynamic_range (type
, addr_stack
, frame
, 0);
2840 case TYPE_CODE_UNION
:
2841 resolved_type
= resolve_dynamic_union (type
, addr_stack
, frame
);
2844 case TYPE_CODE_STRUCT
:
2845 resolved_type
= resolve_dynamic_struct (type
, addr_stack
, frame
);
2850 if (resolved_type
== nullptr)
2853 if (type_length
.has_value ())
2855 resolved_type
->set_length (*type_length
);
2856 resolved_type
->remove_dyn_prop (DYN_PROP_BYTE_SIZE
);
2859 /* Resolve data_location attribute. */
2860 prop
= TYPE_DATA_LOCATION (resolved_type
);
2862 && dwarf2_evaluate_property (prop
, frame
, addr_stack
, &value
))
2864 /* Start of Fortran hack. See comment in f-lang.h for what is going
2866 if (current_language
->la_language
== language_fortran
2867 && resolved_type
->code () == TYPE_CODE_ARRAY
)
2868 value
= fortran_adjust_dynamic_array_base_address_hack (resolved_type
,
2870 /* End of Fortran hack. */
2871 prop
->set_const_val (value
);
2874 return resolved_type
;
2877 /* See gdbtypes.h */
2880 resolve_dynamic_type (struct type
*type
,
2881 gdb::array_view
<const gdb_byte
> valaddr
,
2883 const frame_info_ptr
*in_frame
)
2885 struct property_addr_info pinfo
2886 = {check_typedef (type
), valaddr
, addr
, NULL
};
2888 frame_info_ptr frame
;
2889 if (in_frame
!= nullptr)
2892 return resolve_dynamic_type_internal (type
, &pinfo
, frame
, true);
2895 /* See gdbtypes.h */
2898 type::dyn_prop (dynamic_prop_node_kind prop_kind
) const
2900 dynamic_prop_list
*node
= this->main_type
->dyn_prop_list
;
2902 while (node
!= NULL
)
2904 if (node
->prop_kind
== prop_kind
)
2911 /* See gdbtypes.h */
2914 type::add_dyn_prop (dynamic_prop_node_kind prop_kind
, dynamic_prop prop
)
2916 struct dynamic_prop_list
*temp
;
2918 gdb_assert (this->is_objfile_owned ());
2920 temp
= XOBNEW (&this->objfile_owner ()->objfile_obstack
,
2921 struct dynamic_prop_list
);
2922 temp
->prop_kind
= prop_kind
;
2924 temp
->next
= this->main_type
->dyn_prop_list
;
2926 this->main_type
->dyn_prop_list
= temp
;
2929 /* See gdbtypes.h. */
2932 type::remove_dyn_prop (dynamic_prop_node_kind kind
)
2934 struct dynamic_prop_list
*prev_node
, *curr_node
;
2936 curr_node
= this->main_type
->dyn_prop_list
;
2939 while (NULL
!= curr_node
)
2941 if (curr_node
->prop_kind
== kind
)
2943 /* Update the linked list but don't free anything.
2944 The property was allocated on obstack and it is not known
2945 if we are on top of it. Nevertheless, everything is released
2946 when the complete obstack is freed. */
2947 if (NULL
== prev_node
)
2948 this->main_type
->dyn_prop_list
= curr_node
->next
;
2950 prev_node
->next
= curr_node
->next
;
2955 prev_node
= curr_node
;
2956 curr_node
= curr_node
->next
;
2960 /* Find the real type of TYPE. This function returns the real type,
2961 after removing all layers of typedefs, and completing opaque or stub
2962 types. Completion changes the TYPE argument, but stripping of
2965 Instance flags (e.g. const/volatile) are preserved as typedefs are
2966 stripped. If necessary a new qualified form of the underlying type
2969 NOTE: This will return a typedef if type::target_type for the typedef has
2970 not been computed and we're either in the middle of reading symbols, or
2971 there was no name for the typedef in the debug info.
2973 NOTE: Lookup of opaque types can throw errors for invalid symbol files.
2974 QUITs in the symbol reading code can also throw.
2975 Thus this function can throw an exception.
2977 If TYPE is a TYPE_CODE_TYPEDEF, its length is updated to the length of
2980 If this is a stubbed struct (i.e. declared as struct foo *), see if
2981 we can find a full definition in some other file. If so, copy this
2982 definition, so we can use it in future. There used to be a comment
2983 (but not any code) that if we don't find a full definition, we'd
2984 set a flag so we don't spend time in the future checking the same
2985 type. That would be a mistake, though--we might load in more
2986 symbols which contain a full definition for the type. */
2989 check_typedef (struct type
*type
)
2991 struct type
*orig_type
= type
;
2995 /* While we're removing typedefs, we don't want to lose qualifiers.
2996 E.g., const/volatile. */
2997 type_instance_flags instance_flags
= type
->instance_flags ();
2999 while (type
->code () == TYPE_CODE_TYPEDEF
)
3001 if (!type
->target_type ())
3006 /* It is dangerous to call lookup_symbol if we are currently
3007 reading a symtab. Infinite recursion is one danger. */
3008 if (currently_reading_symtab
)
3009 return make_qualified_type (type
, instance_flags
, NULL
);
3011 name
= type
->name ();
3014 stub_noname_complaint ();
3015 return make_qualified_type (type
, instance_flags
, NULL
);
3017 domain_search_flag flag
3018 = ((type
->language () == language_c
3019 || type
->language () == language_objc
3020 || type
->language () == language_opencl
3021 || type
->language () == language_minimal
)
3022 ? SEARCH_STRUCT_DOMAIN
3023 : SEARCH_TYPE_DOMAIN
);
3024 sym
= lookup_symbol (name
, nullptr, flag
, nullptr).symbol
;
3026 type
->set_target_type (sym
->type ());
3027 else /* TYPE_CODE_UNDEF */
3028 type
->set_target_type (type_allocator (type
->arch ()).new_type ());
3030 type
= type
->target_type ();
3032 /* Preserve the instance flags as we traverse down the typedef chain.
3034 Handling address spaces/classes is nasty, what do we do if there's a
3036 E.g., what if an outer typedef marks the type as class_1 and an inner
3037 typedef marks the type as class_2?
3038 This is the wrong place to do such error checking. We leave it to
3039 the code that created the typedef in the first place to flag the
3040 error. We just pick the outer address space (akin to letting the
3041 outer cast in a chain of casting win), instead of assuming
3042 "it can't happen". */
3044 const type_instance_flags ALL_SPACES
3045 = (TYPE_INSTANCE_FLAG_CODE_SPACE
3046 | TYPE_INSTANCE_FLAG_DATA_SPACE
);
3047 const type_instance_flags ALL_CLASSES
3048 = TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL
;
3050 type_instance_flags new_instance_flags
= type
->instance_flags ();
3052 /* Treat code vs data spaces and address classes separately. */
3053 if ((instance_flags
& ALL_SPACES
) != 0)
3054 new_instance_flags
&= ~ALL_SPACES
;
3055 if ((instance_flags
& ALL_CLASSES
) != 0)
3056 new_instance_flags
&= ~ALL_CLASSES
;
3058 instance_flags
|= new_instance_flags
;
3062 /* If this is a struct/class/union with no fields, then check
3063 whether a full definition exists somewhere else. This is for
3064 systems where a type definition with no fields is issued for such
3065 types, instead of identifying them as stub types in the first
3068 if (TYPE_IS_OPAQUE (type
)
3069 && opaque_type_resolution
3070 && !currently_reading_symtab
)
3072 const char *name
= type
->name ();
3073 struct type
*newtype
;
3077 stub_noname_complaint ();
3078 return make_qualified_type (type
, instance_flags
, NULL
);
3080 newtype
= lookup_transparent_type (name
);
3084 /* If the resolved type and the stub are in the same
3085 objfile, then replace the stub type with the real deal.
3086 But if they're in separate objfiles, leave the stub
3087 alone; we'll just look up the transparent type every time
3088 we call check_typedef. We can't create pointers between
3089 types allocated to different objfiles, since they may
3090 have different lifetimes. Trying to copy NEWTYPE over to
3091 TYPE's objfile is pointless, too, since you'll have to
3092 move over any other types NEWTYPE refers to, which could
3093 be an unbounded amount of stuff. */
3094 if (newtype
->objfile_owner () == type
->objfile_owner ())
3095 type
= make_qualified_type (newtype
, type
->instance_flags (), type
);
3100 /* Otherwise, rely on the stub flag being set for opaque/stubbed
3102 else if (type
->is_stub () && !currently_reading_symtab
)
3104 const char *name
= type
->name ();
3109 stub_noname_complaint ();
3110 return make_qualified_type (type
, instance_flags
, NULL
);
3112 domain_search_flag flag
3113 = ((type
->language () == language_c
3114 || type
->language () == language_objc
3115 || type
->language () == language_opencl
3116 || type
->language () == language_minimal
)
3117 ? SEARCH_STRUCT_DOMAIN
3118 : SEARCH_TYPE_DOMAIN
);
3119 sym
= lookup_symbol (name
, nullptr, flag
, nullptr).symbol
;
3122 /* Same as above for opaque types, we can replace the stub
3123 with the complete type only if they are in the same
3125 if (sym
->type ()->objfile_owner () == type
->objfile_owner ())
3126 type
= make_qualified_type (sym
->type (),
3127 type
->instance_flags (), type
);
3129 type
= sym
->type ();
3133 if (type
->target_is_stub ())
3135 struct type
*target_type
= check_typedef (type
->target_type ());
3137 if (target_type
->is_stub () || target_type
->target_is_stub ())
3139 /* Nothing we can do. */
3141 else if (type
->code () == TYPE_CODE_RANGE
)
3143 type
->set_length (target_type
->length ());
3144 type
->set_target_is_stub (false);
3146 else if (type
->code () == TYPE_CODE_ARRAY
3147 && update_static_array_size (type
))
3148 type
->set_target_is_stub (false);
3151 type
= make_qualified_type (type
, instance_flags
, NULL
);
3153 /* Cache TYPE_LENGTH for future use. */
3154 orig_type
->set_length (type
->length ());
3159 /* Parse a type expression in the string [P..P+LENGTH). If an error
3160 occurs, silently return a void type. */
3162 static struct type
*
3163 safe_parse_type (struct gdbarch
*gdbarch
, const char *p
, int length
)
3165 struct type
*type
= NULL
; /* Initialize to keep gcc happy. */
3167 /* Suppress error messages. */
3168 scoped_restore saved_gdb_stderr
= make_scoped_restore (&gdb_stderr
,
3171 /* Call parse_and_eval_type() without fear of longjmp()s. */
3174 type
= parse_and_eval_type (p
, length
);
3176 catch (const gdb_exception_error
&except
)
3178 type
= builtin_type (gdbarch
)->builtin_void
;
3184 /* Ugly hack to convert method stubs into method types.
3186 He ain't kiddin'. This demangles the name of the method into a
3187 string including argument types, parses out each argument type,
3188 generates a string casting a zero to that type, evaluates the
3189 string, and stuffs the resulting type into an argtype vector!!!
3190 Then it knows the type of the whole function (including argument
3191 types for overloading), which info used to be in the stab's but was
3192 removed to hack back the space required for them. */
3195 check_stub_method (struct type
*type
, int method_id
, int signature_id
)
3197 struct gdbarch
*gdbarch
= type
->arch ();
3199 char *mangled_name
= gdb_mangle_name (type
, method_id
, signature_id
);
3200 gdb::unique_xmalloc_ptr
<char> demangled_name
3201 = gdb_demangle (mangled_name
, DMGL_PARAMS
| DMGL_ANSI
);
3202 char *argtypetext
, *p
;
3203 int depth
= 0, argcount
= 1;
3204 struct field
*argtypes
;
3207 /* Make sure we got back a function string that we can use. */
3209 p
= strchr (demangled_name
.get (), '(');
3213 if (demangled_name
== NULL
|| p
== NULL
)
3214 error (_("Internal: Cannot demangle mangled name `%s'."),
3217 /* Now, read in the parameters that define this type. */
3222 if (*p
== '(' || *p
== '<')
3226 else if (*p
== ')' || *p
== '>')
3230 else if (*p
== ',' && depth
== 0)
3238 /* If we read one argument and it was ``void'', don't count it. */
3239 if (startswith (argtypetext
, "(void)"))
3242 /* We need one extra slot, for the THIS pointer. */
3244 argtypes
= (struct field
*)
3245 TYPE_ZALLOC (type
, (argcount
+ 1) * sizeof (struct field
));
3248 /* Add THIS pointer for non-static methods. */
3249 f
= TYPE_FN_FIELDLIST1 (type
, method_id
);
3250 if (TYPE_FN_FIELD_STATIC_P (f
, signature_id
))
3254 argtypes
[0].set_type (lookup_pointer_type (type
));
3258 if (*p
!= ')') /* () means no args, skip while. */
3263 if (depth
<= 0 && (*p
== ',' || *p
== ')'))
3265 /* Avoid parsing of ellipsis, they will be handled below.
3266 Also avoid ``void'' as above. */
3267 if (strncmp (argtypetext
, "...", p
- argtypetext
) != 0
3268 && strncmp (argtypetext
, "void", p
- argtypetext
) != 0)
3270 argtypes
[argcount
].set_type
3271 (safe_parse_type (gdbarch
, argtypetext
, p
- argtypetext
));
3274 argtypetext
= p
+ 1;
3277 if (*p
== '(' || *p
== '<')
3281 else if (*p
== ')' || *p
== '>')
3290 TYPE_FN_FIELD_PHYSNAME (f
, signature_id
) = mangled_name
;
3292 /* Now update the old "stub" type into a real type. */
3293 mtype
= TYPE_FN_FIELD_TYPE (f
, signature_id
);
3294 /* MTYPE may currently be a function (TYPE_CODE_FUNC).
3295 We want a method (TYPE_CODE_METHOD). */
3296 smash_to_method_type (mtype
, type
, mtype
->target_type (),
3297 argtypes
, argcount
, p
[-2] == '.');
3298 mtype
->set_is_stub (false);
3299 TYPE_FN_FIELD_STUB (f
, signature_id
) = 0;
3302 /* This is the external interface to check_stub_method, above. This
3303 function unstubs all of the signatures for TYPE's METHOD_ID method
3304 name. After calling this function TYPE_FN_FIELD_STUB will be
3305 cleared for each signature and TYPE_FN_FIELDLIST_NAME will be
3308 This function unfortunately can not die until stabs do. */
3311 check_stub_method_group (struct type
*type
, int method_id
)
3313 int len
= TYPE_FN_FIELDLIST_LENGTH (type
, method_id
);
3314 struct fn_field
*f
= TYPE_FN_FIELDLIST1 (type
, method_id
);
3316 for (int j
= 0; j
< len
; j
++)
3318 if (TYPE_FN_FIELD_STUB (f
, j
))
3319 check_stub_method (type
, method_id
, j
);
3323 /* Ensure it is in .rodata (if available) by working around GCC PR 44690. */
3324 const struct cplus_struct_type cplus_struct_default
= { };
3327 allocate_cplus_struct_type (struct type
*type
)
3329 if (HAVE_CPLUS_STRUCT (type
))
3330 /* Structure was already allocated. Nothing more to do. */
3333 TYPE_SPECIFIC_FIELD (type
) = TYPE_SPECIFIC_CPLUS_STUFF
;
3334 TYPE_RAW_CPLUS_SPECIFIC (type
) = (struct cplus_struct_type
*)
3335 TYPE_ZALLOC (type
, sizeof (struct cplus_struct_type
));
3336 *(TYPE_RAW_CPLUS_SPECIFIC (type
)) = cplus_struct_default
;
3337 set_type_vptr_fieldno (type
, -1);
3340 const struct gnat_aux_type gnat_aux_default
=
3343 /* Set the TYPE's type-specific kind to TYPE_SPECIFIC_GNAT_STUFF,
3344 and allocate the associated gnat-specific data. The gnat-specific
3345 data is also initialized to gnat_aux_default. */
3348 allocate_gnat_aux_type (struct type
*type
)
3350 TYPE_SPECIFIC_FIELD (type
) = TYPE_SPECIFIC_GNAT_STUFF
;
3351 TYPE_GNAT_SPECIFIC (type
) = (struct gnat_aux_type
*)
3352 TYPE_ZALLOC (type
, sizeof (struct gnat_aux_type
));
3353 *(TYPE_GNAT_SPECIFIC (type
)) = gnat_aux_default
;
3356 /* Helper function to verify floating-point format and size.
3357 BIT is the type size in bits; if BIT equals -1, the size is
3358 determined by the floatformat. Returns size to be used. */
3361 verify_floatformat (int bit
, const struct floatformat
*floatformat
)
3363 gdb_assert (floatformat
!= NULL
);
3366 bit
= floatformat
->totalsize
;
3368 gdb_assert (bit
>= 0);
3369 gdb_assert (bit
>= floatformat
->totalsize
);
3374 /* Return the floating-point format for a floating-point variable of
3377 const struct floatformat
*
3378 floatformat_from_type (const struct type
*type
)
3380 gdb_assert (type
->code () == TYPE_CODE_FLT
);
3381 gdb_assert (TYPE_FLOATFORMAT (type
));
3382 return TYPE_FLOATFORMAT (type
);
3385 /* See gdbtypes.h. */
3388 init_integer_type (type_allocator
&alloc
,
3389 int bit
, int unsigned_p
, const char *name
)
3393 t
= alloc
.new_type (TYPE_CODE_INT
, bit
, name
);
3395 t
->set_is_unsigned (true);
3397 TYPE_SPECIFIC_FIELD (t
) = TYPE_SPECIFIC_INT
;
3398 TYPE_MAIN_TYPE (t
)->type_specific
.int_stuff
.bit_size
= bit
;
3399 TYPE_MAIN_TYPE (t
)->type_specific
.int_stuff
.bit_offset
= 0;
3404 /* See gdbtypes.h. */
3407 init_character_type (type_allocator
&alloc
,
3408 int bit
, int unsigned_p
, const char *name
)
3412 t
= alloc
.new_type (TYPE_CODE_CHAR
, bit
, name
);
3414 t
->set_is_unsigned (true);
3419 /* See gdbtypes.h. */
3422 init_boolean_type (type_allocator
&alloc
,
3423 int bit
, int unsigned_p
, const char *name
)
3427 t
= alloc
.new_type (TYPE_CODE_BOOL
, bit
, name
);
3429 t
->set_is_unsigned (true);
3431 TYPE_SPECIFIC_FIELD (t
) = TYPE_SPECIFIC_INT
;
3432 TYPE_MAIN_TYPE (t
)->type_specific
.int_stuff
.bit_size
= bit
;
3433 TYPE_MAIN_TYPE (t
)->type_specific
.int_stuff
.bit_offset
= 0;
3438 /* See gdbtypes.h. */
3441 init_float_type (type_allocator
&alloc
,
3442 int bit
, const char *name
,
3443 const struct floatformat
**floatformats
,
3444 enum bfd_endian byte_order
)
3446 if (byte_order
== BFD_ENDIAN_UNKNOWN
)
3448 struct gdbarch
*gdbarch
= alloc
.arch ();
3449 byte_order
= gdbarch_byte_order (gdbarch
);
3451 const struct floatformat
*fmt
= floatformats
[byte_order
];
3454 bit
= verify_floatformat (bit
, fmt
);
3455 t
= alloc
.new_type (TYPE_CODE_FLT
, bit
, name
);
3456 TYPE_FLOATFORMAT (t
) = fmt
;
3461 /* See gdbtypes.h. */
3464 init_decfloat_type (type_allocator
&alloc
, int bit
, const char *name
)
3466 return alloc
.new_type (TYPE_CODE_DECFLOAT
, bit
, name
);
3469 /* Return true if init_complex_type can be called with TARGET_TYPE. */
3472 can_create_complex_type (struct type
*target_type
)
3474 return (target_type
->code () == TYPE_CODE_INT
3475 || target_type
->code () == TYPE_CODE_FLT
);
3478 /* Allocate a TYPE_CODE_COMPLEX type structure. NAME is the type
3479 name. TARGET_TYPE is the component type. */
3482 init_complex_type (const char *name
, struct type
*target_type
)
3486 gdb_assert (can_create_complex_type (target_type
));
3488 if (TYPE_MAIN_TYPE (target_type
)->flds_bnds
.complex_type
== nullptr)
3490 if (name
== nullptr && target_type
->name () != nullptr)
3492 /* No zero-initialization required, initialized by strcpy/strcat
3495 = (char *) TYPE_ALLOC (target_type
,
3496 strlen (target_type
->name ())
3497 + strlen ("_Complex ") + 1);
3498 strcpy (new_name
, "_Complex ");
3499 strcat (new_name
, target_type
->name ());
3503 t
= type_allocator (target_type
).new_type ();
3504 set_type_code (t
, TYPE_CODE_COMPLEX
);
3505 t
->set_length (2 * target_type
->length ());
3508 t
->set_target_type (target_type
);
3509 TYPE_MAIN_TYPE (target_type
)->flds_bnds
.complex_type
= t
;
3512 return TYPE_MAIN_TYPE (target_type
)->flds_bnds
.complex_type
;
3515 /* See gdbtypes.h. */
3518 init_pointer_type (type_allocator
&alloc
,
3519 int bit
, const char *name
, struct type
*target_type
)
3523 t
= alloc
.new_type (TYPE_CODE_PTR
, bit
, name
);
3524 t
->set_target_type (target_type
);
3525 t
->set_is_unsigned (true);
3529 /* Allocate a TYPE_CODE_FIXED_POINT type structure associated with OBJFILE.
3530 BIT is the pointer type size in bits.
3531 UNSIGNED_P should be nonzero if the type is unsigned.
3532 NAME is the type name. */
3535 init_fixed_point_type (type_allocator
&alloc
,
3536 int bit
, int unsigned_p
, const char *name
)
3540 t
= alloc
.new_type (TYPE_CODE_FIXED_POINT
, bit
, name
);
3542 t
->set_is_unsigned (true);
3547 /* See gdbtypes.h. */
3550 type_raw_align (struct type
*type
)
3552 if (type
->align_log2
!= 0)
3553 return 1 << (type
->align_log2
- 1);
3557 /* See gdbtypes.h. */
3560 type_align (struct type
*type
)
3562 /* Check alignment provided in the debug information. */
3563 unsigned raw_align
= type_raw_align (type
);
3567 /* Allow the architecture to provide an alignment. */
3568 ULONGEST align
= gdbarch_type_align (type
->arch (), type
);
3572 switch (type
->code ())
3575 case TYPE_CODE_FUNC
:
3576 case TYPE_CODE_FLAGS
:
3578 case TYPE_CODE_RANGE
:
3580 case TYPE_CODE_ENUM
:
3582 case TYPE_CODE_RVALUE_REF
:
3583 case TYPE_CODE_CHAR
:
3584 case TYPE_CODE_BOOL
:
3585 case TYPE_CODE_DECFLOAT
:
3586 case TYPE_CODE_METHODPTR
:
3587 case TYPE_CODE_MEMBERPTR
:
3588 align
= type_length_units (check_typedef (type
));
3591 case TYPE_CODE_ARRAY
:
3592 case TYPE_CODE_COMPLEX
:
3593 case TYPE_CODE_TYPEDEF
:
3594 align
= type_align (type
->target_type ());
3597 case TYPE_CODE_STRUCT
:
3598 case TYPE_CODE_UNION
:
3600 int number_of_non_static_fields
= 0;
3601 for (unsigned i
= 0; i
< type
->num_fields (); ++i
)
3603 if (!type
->field (i
).is_static ())
3605 number_of_non_static_fields
++;
3606 ULONGEST f_align
= type_align (type
->field (i
).type ());
3609 /* Don't pretend we know something we don't. */
3613 if (f_align
> align
)
3617 /* A struct with no fields, or with only static fields has an
3619 if (number_of_non_static_fields
== 0)
3625 case TYPE_CODE_STRING
:
3626 /* Not sure what to do here, and these can't appear in C or C++
3630 case TYPE_CODE_VOID
:
3634 case TYPE_CODE_ERROR
:
3635 case TYPE_CODE_METHOD
:
3640 if ((align
& (align
- 1)) != 0)
3642 /* Not a power of 2, so pass. */
3649 /* See gdbtypes.h. */
3652 set_type_align (struct type
*type
, ULONGEST align
)
3654 /* Must be a power of 2. Zero is ok. */
3655 gdb_assert ((align
& (align
- 1)) == 0);
3657 unsigned result
= 0;
3664 if (result
>= (1 << TYPE_ALIGN_BITS
))
3667 type
->align_log2
= result
;
3672 /* Queries on types. */
3675 can_dereference (struct type
*t
)
3677 /* FIXME: Should we return true for references as well as
3679 t
= check_typedef (t
);
3682 && t
->code () == TYPE_CODE_PTR
3683 && t
->target_type ()->code () != TYPE_CODE_VOID
);
3687 is_integral_type (struct type
*t
)
3689 t
= check_typedef (t
);
3692 && !is_fixed_point_type (t
)
3693 && ((t
->code () == TYPE_CODE_INT
)
3694 || (t
->code () == TYPE_CODE_ENUM
)
3695 || (t
->code () == TYPE_CODE_FLAGS
)
3696 || (t
->code () == TYPE_CODE_CHAR
)
3697 || (t
->code () == TYPE_CODE_RANGE
)
3698 || (t
->code () == TYPE_CODE_BOOL
)));
3702 is_floating_type (struct type
*t
)
3704 t
= check_typedef (t
);
3707 && ((t
->code () == TYPE_CODE_FLT
)
3708 || (t
->code () == TYPE_CODE_DECFLOAT
)));
3711 /* Return true if TYPE is scalar. */
3714 is_scalar_type (struct type
*type
)
3716 type
= check_typedef (type
);
3718 if (is_fixed_point_type (type
))
3719 return 0; /* Implemented as a scalar, but more like a floating point. */
3721 switch (type
->code ())
3723 case TYPE_CODE_ARRAY
:
3724 case TYPE_CODE_STRUCT
:
3725 case TYPE_CODE_UNION
:
3727 case TYPE_CODE_STRING
:
3734 /* Return true if T is scalar, or a composite type which in practice has
3735 the memory layout of a scalar type. E.g., an array or struct with only
3736 one scalar element inside it, or a union with only scalar elements. */
3739 is_scalar_type_recursive (struct type
*t
)
3741 t
= check_typedef (t
);
3743 if (is_scalar_type (t
))
3745 /* Are we dealing with an array or string of known dimensions? */
3746 else if ((t
->code () == TYPE_CODE_ARRAY
3747 || t
->code () == TYPE_CODE_STRING
) && t
->num_fields () == 1
3748 && t
->index_type ()->code () == TYPE_CODE_RANGE
)
3750 LONGEST low_bound
, high_bound
;
3751 struct type
*elt_type
= check_typedef (t
->target_type ());
3753 if (get_discrete_bounds (t
->index_type (), &low_bound
, &high_bound
))
3754 return (high_bound
== low_bound
3755 && is_scalar_type_recursive (elt_type
));
3759 /* Are we dealing with a struct with one element? */
3760 else if (t
->code () == TYPE_CODE_STRUCT
&& t
->num_fields () == 1)
3761 return is_scalar_type_recursive (t
->field (0).type ());
3762 else if (t
->code () == TYPE_CODE_UNION
)
3764 int i
, n
= t
->num_fields ();
3766 /* If all elements of the union are scalar, then the union is scalar. */
3767 for (i
= 0; i
< n
; i
++)
3768 if (!is_scalar_type_recursive (t
->field (i
).type ()))
3777 /* Return true is T is a class or a union. False otherwise. */
3780 class_or_union_p (const struct type
*t
)
3782 return (t
->code () == TYPE_CODE_STRUCT
3783 || t
->code () == TYPE_CODE_UNION
);
3786 /* A helper function which returns true if types A and B represent the
3787 "same" class type. This is true if the types have the same main
3788 type, or the same name. */
3791 class_types_same_p (const struct type
*a
, const struct type
*b
)
3793 return (TYPE_MAIN_TYPE (a
) == TYPE_MAIN_TYPE (b
)
3794 || (a
->name () && b
->name ()
3795 && !strcmp (a
->name (), b
->name ())));
3798 /* If BASE is an ancestor of DCLASS return the distance between them.
3799 otherwise return -1;
3803 class B: public A {};
3804 class C: public B {};
3807 distance_to_ancestor (A, A, 0) = 0
3808 distance_to_ancestor (A, B, 0) = 1
3809 distance_to_ancestor (A, C, 0) = 2
3810 distance_to_ancestor (A, D, 0) = 3
3812 If PUBLIC is 1 then only public ancestors are considered,
3813 and the function returns the distance only if BASE is a public ancestor
3817 distance_to_ancestor (A, D, 1) = -1. */
3820 distance_to_ancestor (struct type
*base
, struct type
*dclass
, int is_public
)
3825 base
= check_typedef (base
);
3826 dclass
= check_typedef (dclass
);
3828 if (class_types_same_p (base
, dclass
))
3831 for (i
= 0; i
< TYPE_N_BASECLASSES (dclass
); i
++)
3833 if (is_public
&& ! BASETYPE_VIA_PUBLIC (dclass
, i
))
3836 d
= distance_to_ancestor (base
, TYPE_BASECLASS (dclass
, i
), is_public
);
3844 /* Check whether BASE is an ancestor or base class or DCLASS
3845 Return 1 if so, and 0 if not.
3846 Note: If BASE and DCLASS are of the same type, this function
3847 will return 1. So for some class A, is_ancestor (A, A) will
3851 is_ancestor (struct type
*base
, struct type
*dclass
)
3853 return distance_to_ancestor (base
, dclass
, 0) >= 0;
3856 /* Like is_ancestor, but only returns true when BASE is a public
3857 ancestor of DCLASS. */
3860 is_public_ancestor (struct type
*base
, struct type
*dclass
)
3862 return distance_to_ancestor (base
, dclass
, 1) >= 0;
3865 /* A helper function for is_unique_ancestor. */
3868 is_unique_ancestor_worker (struct type
*base
, struct type
*dclass
,
3870 const gdb_byte
*valaddr
, int embedded_offset
,
3871 CORE_ADDR address
, struct value
*val
)
3875 base
= check_typedef (base
);
3876 dclass
= check_typedef (dclass
);
3878 for (i
= 0; i
< TYPE_N_BASECLASSES (dclass
) && count
< 2; ++i
)
3883 iter
= check_typedef (TYPE_BASECLASS (dclass
, i
));
3885 this_offset
= baseclass_offset (dclass
, i
, valaddr
, embedded_offset
,
3888 if (class_types_same_p (base
, iter
))
3890 /* If this is the first subclass, set *OFFSET and set count
3891 to 1. Otherwise, if this is at the same offset as
3892 previous instances, do nothing. Otherwise, increment
3896 *offset
= this_offset
;
3899 else if (this_offset
== *offset
)
3907 count
+= is_unique_ancestor_worker (base
, iter
, offset
,
3909 embedded_offset
+ this_offset
,
3916 /* Like is_ancestor, but only returns true if BASE is a unique base
3917 class of the type of VAL. */
3920 is_unique_ancestor (struct type
*base
, struct value
*val
)
3924 return is_unique_ancestor_worker (base
, val
->type (), &offset
,
3925 val
->contents_for_printing ().data (),
3926 val
->embedded_offset (),
3927 val
->address (), val
) == 1;
3930 /* See gdbtypes.h. */
3933 type_byte_order (const struct type
*type
)
3935 bfd_endian byteorder
= gdbarch_byte_order (type
->arch ());
3936 if (type
->endianity_is_not_default ())
3938 if (byteorder
== BFD_ENDIAN_BIG
)
3939 return BFD_ENDIAN_LITTLE
;
3942 gdb_assert (byteorder
== BFD_ENDIAN_LITTLE
);
3943 return BFD_ENDIAN_BIG
;
3950 /* See gdbtypes.h. */
3953 is_nocall_function (const struct type
*type
)
3955 if (type
->code () != TYPE_CODE_FUNC
&& type
->code () != TYPE_CODE_METHOD
)
3958 return TYPE_CALLING_CONVENTION (type
) == DW_CC_nocall
;
3962 /* Overload resolution. */
3964 /* Return the sum of the rank of A with the rank of B. */
3967 sum_ranks (struct rank a
, struct rank b
)
3970 c
.rank
= a
.rank
+ b
.rank
;
3971 c
.subrank
= a
.subrank
+ b
.subrank
;
3975 /* Compare rank A and B and return:
3977 1 if a is better than b
3978 -1 if b is better than a. */
3981 compare_ranks (struct rank a
, struct rank b
)
3983 if (a
.rank
== b
.rank
)
3985 if (a
.subrank
== b
.subrank
)
3987 if (a
.subrank
< b
.subrank
)
3989 if (a
.subrank
> b
.subrank
)
3993 if (a
.rank
< b
.rank
)
3996 /* a.rank > b.rank */
4000 /* Functions for overload resolution begin here. */
4002 /* Compare two badness vectors A and B and return the result.
4003 0 => A and B are identical
4004 1 => A and B are incomparable
4005 2 => A is better than B
4006 3 => A is worse than B */
4009 compare_badness (const badness_vector
&a
, const badness_vector
&b
)
4013 /* Any positives in comparison? */
4014 bool found_pos
= false;
4015 /* Any negatives in comparison? */
4016 bool found_neg
= false;
4017 /* Did A have any INVALID_CONVERSION entries. */
4018 bool a_invalid
= false;
4019 /* Did B have any INVALID_CONVERSION entries. */
4020 bool b_invalid
= false;
4022 /* differing sizes => incomparable */
4023 if (a
.size () != b
.size ())
4026 /* Subtract b from a */
4027 for (i
= 0; i
< a
.size (); i
++)
4029 tmp
= compare_ranks (b
[i
], a
[i
]);
4034 if (a
[i
].rank
>= INVALID_CONVERSION
)
4036 if (b
[i
].rank
>= INVALID_CONVERSION
)
4040 /* B will only be considered better than or incomparable to A if
4041 they both have invalid entries, or if neither does. That is, if
4042 A has only valid entries, and B has an invalid entry, then A will
4043 be considered better than B, even if B happens to be better for
4045 if (a_invalid
!= b_invalid
)
4048 return 3; /* A > B */
4049 return 2; /* A < B */
4054 return 1; /* incomparable */
4056 return 3; /* A > B */
4062 return 2; /* A < B */
4064 return 0; /* A == B */
4068 /* Rank a function by comparing its parameter types (PARMS), to the
4069 types of an argument list (ARGS). Return the badness vector. This
4070 has ARGS.size() + 1 entries. */
4073 rank_function (gdb::array_view
<type
*> parms
,
4074 gdb::array_view
<value
*> args
,
4077 /* add 1 for the length-match rank. */
4079 bv
.reserve (1 + args
.size ());
4081 /* First compare the lengths of the supplied lists.
4082 If there is a mismatch, set it to a high value. */
4084 /* pai/1997-06-03 FIXME: when we have debug info about default
4085 arguments and ellipsis parameter lists, we should consider those
4086 and rank the length-match more finely. */
4088 bv
.push_back ((args
.size () != parms
.size ()
4089 && (! varargs
|| args
.size () < parms
.size ()))
4090 ? LENGTH_MISMATCH_BADNESS
4091 : EXACT_MATCH_BADNESS
);
4093 /* Now rank all the parameters of the candidate function. */
4094 size_t min_len
= std::min (parms
.size (), args
.size ());
4096 for (size_t i
= 0; i
< min_len
; i
++)
4097 bv
.push_back (rank_one_type (parms
[i
], args
[i
]->type (),
4100 /* If more arguments than parameters, add dummy entries. */
4101 for (size_t i
= min_len
; i
< args
.size (); i
++)
4102 bv
.push_back (varargs
? VARARG_BADNESS
: TOO_FEW_PARAMS_BADNESS
);
4107 /* Compare the names of two integer types, assuming that any sign
4108 qualifiers have been checked already. We do it this way because
4109 there may be an "int" in the name of one of the types. */
4112 integer_types_same_name_p (const char *first
, const char *second
)
4114 int first_p
, second_p
;
4116 /* If both are shorts, return 1; if neither is a short, keep
4118 first_p
= (strstr (first
, "short") != NULL
);
4119 second_p
= (strstr (second
, "short") != NULL
);
4120 if (first_p
&& second_p
)
4122 if (first_p
|| second_p
)
4125 /* Likewise for long. */
4126 first_p
= (strstr (first
, "long") != NULL
);
4127 second_p
= (strstr (second
, "long") != NULL
);
4128 if (first_p
&& second_p
)
4130 if (first_p
|| second_p
)
4133 /* Likewise for char. */
4134 first_p
= (strstr (first
, "char") != NULL
);
4135 second_p
= (strstr (second
, "char") != NULL
);
4136 if (first_p
&& second_p
)
4138 if (first_p
|| second_p
)
4141 /* They must both be ints. */
4145 /* Compares type A to type B. Returns true if they represent the same
4146 type, false otherwise. */
4149 types_equal (struct type
*a
, struct type
*b
)
4151 /* Identical type pointers. */
4152 /* However, this still doesn't catch all cases of same type for b
4153 and a. The reason is that builtin types are different from
4154 the same ones constructed from the object. */
4158 /* Resolve typedefs */
4159 if (a
->code () == TYPE_CODE_TYPEDEF
)
4160 a
= check_typedef (a
);
4161 if (b
->code () == TYPE_CODE_TYPEDEF
)
4162 b
= check_typedef (b
);
4164 /* Check if identical after resolving typedefs. */
4168 /* If after resolving typedefs a and b are not of the same type
4169 code then they are not equal. */
4170 if (a
->code () != b
->code ())
4173 /* If a and b are both pointers types or both reference types then
4174 they are equal of the same type iff the objects they refer to are
4175 of the same type. */
4176 if (a
->code () == TYPE_CODE_PTR
4177 || a
->code () == TYPE_CODE_REF
)
4178 return types_equal (a
->target_type (),
4181 /* Well, damnit, if the names are exactly the same, I'll say they
4182 are exactly the same. This happens when we generate method
4183 stubs. The types won't point to the same address, but they
4184 really are the same. */
4186 if (a
->name () && b
->name ()
4187 && strcmp (a
->name (), b
->name ()) == 0)
4190 /* Two function types are equal if their argument and return types
4192 if (a
->code () == TYPE_CODE_FUNC
)
4196 if (a
->num_fields () != b
->num_fields ())
4199 if (!types_equal (a
->target_type (), b
->target_type ()))
4202 for (i
= 0; i
< a
->num_fields (); ++i
)
4203 if (!types_equal (a
->field (i
).type (), b
->field (i
).type ()))
4209 /* Two array types are the same if they have the same element types
4210 and array bounds. */
4211 if (a
->code () == TYPE_CODE_ARRAY
)
4213 if (!types_equal (a
->target_type (), b
->target_type ()))
4216 if (*a
->bounds () != *b
->bounds ())
4225 /* Deep comparison of types. */
4227 /* An entry in the type-equality bcache. */
4229 struct type_equality_entry
4231 type_equality_entry (struct type
*t1
, struct type
*t2
)
4237 struct type
*type1
, *type2
;
4240 /* A helper function to compare two strings. Returns true if they are
4241 the same, false otherwise. Handles NULLs properly. */
4244 compare_maybe_null_strings (const char *s
, const char *t
)
4246 if (s
== NULL
|| t
== NULL
)
4248 return strcmp (s
, t
) == 0;
4251 /* A helper function for check_types_worklist that checks two types for
4252 "deep" equality. Returns true if the types are considered the
4253 same, false otherwise. */
4256 check_types_equal (struct type
*type1
, struct type
*type2
,
4257 std::vector
<type_equality_entry
> *worklist
)
4259 type1
= check_typedef (type1
);
4260 type2
= check_typedef (type2
);
4265 if (type1
->code () != type2
->code ()
4266 || type1
->length () != type2
->length ()
4267 || type1
->is_unsigned () != type2
->is_unsigned ()
4268 || type1
->has_no_signedness () != type2
->has_no_signedness ()
4269 || type1
->endianity_is_not_default () != type2
->endianity_is_not_default ()
4270 || type1
->has_varargs () != type2
->has_varargs ()
4271 || type1
->is_vector () != type2
->is_vector ()
4272 || TYPE_NOTTEXT (type1
) != TYPE_NOTTEXT (type2
)
4273 || type1
->instance_flags () != type2
->instance_flags ()
4274 || type1
->num_fields () != type2
->num_fields ())
4277 if (!compare_maybe_null_strings (type1
->name (), type2
->name ()))
4279 if (!compare_maybe_null_strings (type1
->name (), type2
->name ()))
4282 if (type1
->code () == TYPE_CODE_RANGE
)
4284 if (*type1
->bounds () != *type2
->bounds ())
4291 for (i
= 0; i
< type1
->num_fields (); ++i
)
4293 const struct field
*field1
= &type1
->field (i
);
4294 const struct field
*field2
= &type2
->field (i
);
4296 if (field1
->is_artificial () != field2
->is_artificial ()
4297 || field1
->bitsize () != field2
->bitsize ()
4298 || field1
->loc_kind () != field2
->loc_kind ())
4300 if (!compare_maybe_null_strings (field1
->name (), field2
->name ()))
4302 switch (field1
->loc_kind ())
4304 case FIELD_LOC_KIND_BITPOS
:
4305 if (field1
->loc_bitpos () != field2
->loc_bitpos ())
4308 case FIELD_LOC_KIND_ENUMVAL
:
4309 if (field1
->loc_enumval () != field2
->loc_enumval ())
4311 /* Don't compare types of enum fields, because they don't
4314 case FIELD_LOC_KIND_PHYSADDR
:
4315 if (field1
->loc_physaddr () != field2
->loc_physaddr ())
4318 case FIELD_LOC_KIND_PHYSNAME
:
4319 if (!compare_maybe_null_strings (field1
->loc_physname (),
4320 field2
->loc_physname ()))
4323 case FIELD_LOC_KIND_DWARF_BLOCK
:
4325 struct dwarf2_locexpr_baton
*block1
, *block2
;
4327 block1
= field1
->loc_dwarf_block ();
4328 block2
= field2
->loc_dwarf_block ();
4329 if (block1
->per_cu
!= block2
->per_cu
4330 || block1
->size
!= block2
->size
4331 || memcmp (block1
->data
, block2
->data
, block1
->size
) != 0)
4336 internal_error (_("Unsupported field kind "
4337 "%d by check_types_equal"),
4338 field1
->loc_kind ());
4341 worklist
->emplace_back (field1
->type (), field2
->type ());
4345 if (type1
->target_type () != NULL
)
4347 if (type2
->target_type () == NULL
)
4350 worklist
->emplace_back (type1
->target_type (),
4351 type2
->target_type ());
4353 else if (type2
->target_type () != NULL
)
4359 /* Check types on a worklist for equality. Returns false if any pair
4360 is not equal, true if they are all considered equal. */
4363 check_types_worklist (std::vector
<type_equality_entry
> *worklist
,
4366 while (!worklist
->empty ())
4370 struct type_equality_entry entry
= std::move (worklist
->back ());
4371 worklist
->pop_back ();
4373 /* If the type pair has already been visited, we know it is
4375 cache
->insert (&entry
, sizeof (entry
), &added
);
4379 if (!check_types_equal (entry
.type1
, entry
.type2
, worklist
))
4386 /* Return true if types TYPE1 and TYPE2 are equal, as determined by a
4387 "deep comparison". Otherwise return false. */
4390 types_deeply_equal (struct type
*type1
, struct type
*type2
)
4392 std::vector
<type_equality_entry
> worklist
;
4394 gdb_assert (type1
!= NULL
&& type2
!= NULL
);
4396 /* Early exit for the simple case. */
4401 worklist
.emplace_back (type1
, type2
);
4402 return check_types_worklist (&worklist
, &cache
);
4405 /* Allocated status of type TYPE. Return zero if type TYPE is allocated.
4406 Otherwise return one. */
4409 type_not_allocated (const struct type
*type
)
4411 struct dynamic_prop
*prop
= TYPE_ALLOCATED_PROP (type
);
4413 return prop
!= nullptr && prop
->is_constant () && prop
->const_val () == 0;
4416 /* Associated status of type TYPE. Return zero if type TYPE is associated.
4417 Otherwise return one. */
4420 type_not_associated (const struct type
*type
)
4422 struct dynamic_prop
*prop
= TYPE_ASSOCIATED_PROP (type
);
4424 return prop
!= nullptr && prop
->is_constant () && prop
->const_val () == 0;
4427 /* rank_one_type helper for when PARM's type code is TYPE_CODE_PTR. */
4430 rank_one_type_parm_ptr (struct type
*parm
, struct type
*arg
, struct value
*value
)
4432 struct rank rank
= {0,0};
4434 switch (arg
->code ())
4438 /* Allowed pointer conversions are:
4439 (a) pointer to void-pointer conversion. */
4440 if (parm
->target_type ()->code () == TYPE_CODE_VOID
)
4441 return VOID_PTR_CONVERSION_BADNESS
;
4443 /* (b) pointer to ancestor-pointer conversion. */
4444 rank
.subrank
= distance_to_ancestor (parm
->target_type (),
4445 arg
->target_type (),
4447 if (rank
.subrank
>= 0)
4448 return sum_ranks (BASE_PTR_CONVERSION_BADNESS
, rank
);
4450 return INCOMPATIBLE_TYPE_BADNESS
;
4451 case TYPE_CODE_ARRAY
:
4453 struct type
*t1
= parm
->target_type ();
4454 struct type
*t2
= arg
->target_type ();
4456 if (types_equal (t1
, t2
))
4458 /* Make sure they are CV equal. */
4459 if (TYPE_CONST (t1
) != TYPE_CONST (t2
))
4460 rank
.subrank
|= CV_CONVERSION_CONST
;
4461 if (TYPE_VOLATILE (t1
) != TYPE_VOLATILE (t2
))
4462 rank
.subrank
|= CV_CONVERSION_VOLATILE
;
4463 if (rank
.subrank
!= 0)
4464 return sum_ranks (CV_CONVERSION_BADNESS
, rank
);
4465 return EXACT_MATCH_BADNESS
;
4467 return INCOMPATIBLE_TYPE_BADNESS
;
4469 case TYPE_CODE_FUNC
:
4470 return rank_one_type (parm
->target_type (), arg
, NULL
);
4472 if (value
!= NULL
&& value
->type ()->code () == TYPE_CODE_INT
)
4474 if (value_as_long (value
) == 0)
4476 /* Null pointer conversion: allow it to be cast to a pointer.
4477 [4.10.1 of C++ standard draft n3290] */
4478 return NULL_POINTER_CONVERSION_BADNESS
;
4482 /* If type checking is disabled, allow the conversion. */
4483 if (!strict_type_checking
)
4484 return NS_INTEGER_POINTER_CONVERSION_BADNESS
;
4488 case TYPE_CODE_ENUM
:
4489 case TYPE_CODE_FLAGS
:
4490 case TYPE_CODE_CHAR
:
4491 case TYPE_CODE_RANGE
:
4492 case TYPE_CODE_BOOL
:
4494 return INCOMPATIBLE_TYPE_BADNESS
;
4498 /* rank_one_type helper for when PARM's type code is TYPE_CODE_ARRAY. */
4501 rank_one_type_parm_array (struct type
*parm
, struct type
*arg
, struct value
*value
)
4503 switch (arg
->code ())
4506 case TYPE_CODE_ARRAY
:
4507 return rank_one_type (parm
->target_type (),
4508 arg
->target_type (), NULL
);
4510 return INCOMPATIBLE_TYPE_BADNESS
;
4514 /* rank_one_type helper for when PARM's type code is TYPE_CODE_FUNC. */
4517 rank_one_type_parm_func (struct type
*parm
, struct type
*arg
, struct value
*value
)
4519 switch (arg
->code ())
4521 case TYPE_CODE_PTR
: /* funcptr -> func */
4522 return rank_one_type (parm
, arg
->target_type (), NULL
);
4524 return INCOMPATIBLE_TYPE_BADNESS
;
4528 /* rank_one_type helper for when PARM's type code is TYPE_CODE_INT. */
4531 rank_one_type_parm_int (struct type
*parm
, struct type
*arg
, struct value
*value
)
4533 switch (arg
->code ())
4536 if (arg
->length () == parm
->length ())
4538 /* Deal with signed, unsigned, and plain chars and
4539 signed and unsigned ints. */
4540 if (parm
->has_no_signedness ())
4542 /* This case only for character types. */
4543 if (arg
->has_no_signedness ())
4544 return EXACT_MATCH_BADNESS
; /* plain char -> plain char */
4545 else /* signed/unsigned char -> plain char */
4546 return INTEGER_CONVERSION_BADNESS
;
4548 else if (parm
->is_unsigned ())
4550 if (arg
->is_unsigned ())
4552 /* unsigned int -> unsigned int, or
4553 unsigned long -> unsigned long */
4554 if (integer_types_same_name_p (parm
->name (),
4556 return EXACT_MATCH_BADNESS
;
4557 else if (integer_types_same_name_p (arg
->name (),
4559 && integer_types_same_name_p (parm
->name (),
4561 /* unsigned int -> unsigned long */
4562 return INTEGER_PROMOTION_BADNESS
;
4564 /* unsigned long -> unsigned int */
4565 return INTEGER_CONVERSION_BADNESS
;
4569 if (integer_types_same_name_p (arg
->name (),
4571 && integer_types_same_name_p (parm
->name (),
4573 /* signed long -> unsigned int */
4574 return INTEGER_CONVERSION_BADNESS
;
4576 /* signed int/long -> unsigned int/long */
4577 return INTEGER_CONVERSION_BADNESS
;
4580 else if (!arg
->has_no_signedness () && !arg
->is_unsigned ())
4582 if (integer_types_same_name_p (parm
->name (),
4584 return EXACT_MATCH_BADNESS
;
4585 else if (integer_types_same_name_p (arg
->name (),
4587 && integer_types_same_name_p (parm
->name (),
4589 return INTEGER_PROMOTION_BADNESS
;
4591 return INTEGER_CONVERSION_BADNESS
;
4594 return INTEGER_CONVERSION_BADNESS
;
4596 else if (arg
->length () < parm
->length ())
4597 return INTEGER_PROMOTION_BADNESS
;
4599 return INTEGER_CONVERSION_BADNESS
;
4600 case TYPE_CODE_ENUM
:
4601 case TYPE_CODE_FLAGS
:
4602 case TYPE_CODE_CHAR
:
4603 case TYPE_CODE_RANGE
:
4604 case TYPE_CODE_BOOL
:
4605 if (arg
->is_declared_class ())
4606 return INCOMPATIBLE_TYPE_BADNESS
;
4607 return INTEGER_PROMOTION_BADNESS
;
4609 return INT_FLOAT_CONVERSION_BADNESS
;
4611 return NS_POINTER_CONVERSION_BADNESS
;
4613 return INCOMPATIBLE_TYPE_BADNESS
;
4617 /* rank_one_type helper for when PARM's type code is TYPE_CODE_ENUM. */
4620 rank_one_type_parm_enum (struct type
*parm
, struct type
*arg
, struct value
*value
)
4622 switch (arg
->code ())
4625 case TYPE_CODE_CHAR
:
4626 case TYPE_CODE_RANGE
:
4627 case TYPE_CODE_BOOL
:
4628 case TYPE_CODE_ENUM
:
4629 if (parm
->is_declared_class () || arg
->is_declared_class ())
4630 return INCOMPATIBLE_TYPE_BADNESS
;
4631 return INTEGER_CONVERSION_BADNESS
;
4633 return INT_FLOAT_CONVERSION_BADNESS
;
4635 return INCOMPATIBLE_TYPE_BADNESS
;
4639 /* rank_one_type helper for when PARM's type code is TYPE_CODE_CHAR. */
4642 rank_one_type_parm_char (struct type
*parm
, struct type
*arg
, struct value
*value
)
4644 switch (arg
->code ())
4646 case TYPE_CODE_RANGE
:
4647 case TYPE_CODE_BOOL
:
4648 case TYPE_CODE_ENUM
:
4649 if (arg
->is_declared_class ())
4650 return INCOMPATIBLE_TYPE_BADNESS
;
4651 return INTEGER_CONVERSION_BADNESS
;
4653 return INT_FLOAT_CONVERSION_BADNESS
;
4655 if (arg
->length () > parm
->length ())
4656 return INTEGER_CONVERSION_BADNESS
;
4657 else if (arg
->length () < parm
->length ())
4658 return INTEGER_PROMOTION_BADNESS
;
4660 case TYPE_CODE_CHAR
:
4661 /* Deal with signed, unsigned, and plain chars for C++ and
4662 with int cases falling through from previous case. */
4663 if (parm
->has_no_signedness ())
4665 if (arg
->has_no_signedness ())
4666 return EXACT_MATCH_BADNESS
;
4668 return INTEGER_CONVERSION_BADNESS
;
4670 else if (parm
->is_unsigned ())
4672 if (arg
->is_unsigned ())
4673 return EXACT_MATCH_BADNESS
;
4675 return INTEGER_PROMOTION_BADNESS
;
4677 else if (!arg
->has_no_signedness () && !arg
->is_unsigned ())
4678 return EXACT_MATCH_BADNESS
;
4680 return INTEGER_CONVERSION_BADNESS
;
4682 return INCOMPATIBLE_TYPE_BADNESS
;
4686 /* rank_one_type helper for when PARM's type code is TYPE_CODE_RANGE. */
4689 rank_one_type_parm_range (struct type
*parm
, struct type
*arg
, struct value
*value
)
4691 switch (arg
->code ())
4694 case TYPE_CODE_CHAR
:
4695 case TYPE_CODE_RANGE
:
4696 case TYPE_CODE_BOOL
:
4697 case TYPE_CODE_ENUM
:
4698 return INTEGER_CONVERSION_BADNESS
;
4700 return INT_FLOAT_CONVERSION_BADNESS
;
4702 return INCOMPATIBLE_TYPE_BADNESS
;
4706 /* rank_one_type helper for when PARM's type code is TYPE_CODE_BOOL. */
4709 rank_one_type_parm_bool (struct type
*parm
, struct type
*arg
, struct value
*value
)
4711 switch (arg
->code ())
4713 /* n3290 draft, section 4.12.1 (conv.bool):
4715 "A prvalue of arithmetic, unscoped enumeration, pointer, or
4716 pointer to member type can be converted to a prvalue of type
4717 bool. A zero value, null pointer value, or null member pointer
4718 value is converted to false; any other value is converted to
4719 true. A prvalue of type std::nullptr_t can be converted to a
4720 prvalue of type bool; the resulting value is false." */
4722 case TYPE_CODE_CHAR
:
4723 case TYPE_CODE_ENUM
:
4725 case TYPE_CODE_MEMBERPTR
:
4727 return BOOL_CONVERSION_BADNESS
;
4728 case TYPE_CODE_RANGE
:
4729 return INCOMPATIBLE_TYPE_BADNESS
;
4730 case TYPE_CODE_BOOL
:
4731 return EXACT_MATCH_BADNESS
;
4733 return INCOMPATIBLE_TYPE_BADNESS
;
4737 /* rank_one_type helper for when PARM's type code is TYPE_CODE_FLOAT. */
4740 rank_one_type_parm_float (struct type
*parm
, struct type
*arg
, struct value
*value
)
4742 switch (arg
->code ())
4745 if (arg
->length () < parm
->length ())
4746 return FLOAT_PROMOTION_BADNESS
;
4747 else if (arg
->length () == parm
->length ())
4748 return EXACT_MATCH_BADNESS
;
4750 return FLOAT_CONVERSION_BADNESS
;
4752 case TYPE_CODE_BOOL
:
4753 case TYPE_CODE_ENUM
:
4754 case TYPE_CODE_RANGE
:
4755 case TYPE_CODE_CHAR
:
4756 return INT_FLOAT_CONVERSION_BADNESS
;
4758 return INCOMPATIBLE_TYPE_BADNESS
;
4762 /* rank_one_type helper for when PARM's type code is TYPE_CODE_COMPLEX. */
4765 rank_one_type_parm_complex (struct type
*parm
, struct type
*arg
, struct value
*value
)
4767 switch (arg
->code ())
4768 { /* Strictly not needed for C++, but... */
4770 return FLOAT_PROMOTION_BADNESS
;
4771 case TYPE_CODE_COMPLEX
:
4772 return EXACT_MATCH_BADNESS
;
4774 return INCOMPATIBLE_TYPE_BADNESS
;
4778 /* rank_one_type helper for when PARM's type code is TYPE_CODE_STRUCT. */
4781 rank_one_type_parm_struct (struct type
*parm
, struct type
*arg
, struct value
*value
)
4783 struct rank rank
= {0, 0};
4785 switch (arg
->code ())
4787 case TYPE_CODE_STRUCT
:
4788 /* Check for derivation */
4789 rank
.subrank
= distance_to_ancestor (parm
, arg
, 0);
4790 if (rank
.subrank
>= 0)
4791 return sum_ranks (BASE_CONVERSION_BADNESS
, rank
);
4794 return INCOMPATIBLE_TYPE_BADNESS
;
4798 /* rank_one_type helper for when PARM's type code is TYPE_CODE_SET. */
4801 rank_one_type_parm_set (struct type
*parm
, struct type
*arg
, struct value
*value
)
4803 switch (arg
->code ())
4807 return rank_one_type (parm
->field (0).type (),
4808 arg
->field (0).type (), NULL
);
4810 return INCOMPATIBLE_TYPE_BADNESS
;
4814 /* Compare one type (PARM) for compatibility with another (ARG).
4815 * PARM is intended to be the parameter type of a function; and
4816 * ARG is the supplied argument's type. This function tests if
4817 * the latter can be converted to the former.
4818 * VALUE is the argument's value or NULL if none (or called recursively)
4820 * Return 0 if they are identical types;
4821 * Otherwise, return an integer which corresponds to how compatible
4822 * PARM is to ARG. The higher the return value, the worse the match.
4823 * Generally the "bad" conversions are all uniformly assigned
4824 * INVALID_CONVERSION. */
4827 rank_one_type (struct type
*parm
, struct type
*arg
, struct value
*value
)
4829 struct rank rank
= {0,0};
4831 /* Resolve typedefs */
4832 if (parm
->code () == TYPE_CODE_TYPEDEF
)
4833 parm
= check_typedef (parm
);
4834 if (arg
->code () == TYPE_CODE_TYPEDEF
)
4835 arg
= check_typedef (arg
);
4837 if (TYPE_IS_REFERENCE (parm
) && value
!= NULL
)
4839 if (value
->lval () == not_lval
)
4841 /* Rvalues should preferably bind to rvalue references or const
4842 lvalue references. */
4843 if (parm
->code () == TYPE_CODE_RVALUE_REF
)
4844 rank
.subrank
= REFERENCE_CONVERSION_RVALUE
;
4845 else if (TYPE_CONST (parm
->target_type ()))
4846 rank
.subrank
= REFERENCE_CONVERSION_CONST_LVALUE
;
4848 return INCOMPATIBLE_TYPE_BADNESS
;
4849 return sum_ranks (rank
, REFERENCE_CONVERSION_BADNESS
);
4853 /* It's illegal to pass an lvalue as an rvalue. */
4854 if (parm
->code () == TYPE_CODE_RVALUE_REF
)
4855 return INCOMPATIBLE_TYPE_BADNESS
;
4859 if (types_equal (parm
, arg
))
4861 struct type
*t1
= parm
;
4862 struct type
*t2
= arg
;
4864 /* For pointers and references, compare target type. */
4865 if (parm
->is_pointer_or_reference ())
4867 t1
= parm
->target_type ();
4868 t2
= arg
->target_type ();
4871 /* Make sure they are CV equal, too. */
4872 if (TYPE_CONST (t1
) != TYPE_CONST (t2
))
4873 rank
.subrank
|= CV_CONVERSION_CONST
;
4874 if (TYPE_VOLATILE (t1
) != TYPE_VOLATILE (t2
))
4875 rank
.subrank
|= CV_CONVERSION_VOLATILE
;
4876 if (rank
.subrank
!= 0)
4877 return sum_ranks (CV_CONVERSION_BADNESS
, rank
);
4878 return EXACT_MATCH_BADNESS
;
4881 /* See through references, since we can almost make non-references
4884 if (TYPE_IS_REFERENCE (arg
))
4885 return (sum_ranks (rank_one_type (parm
, arg
->target_type (), NULL
),
4886 REFERENCE_SEE_THROUGH_BADNESS
));
4887 if (TYPE_IS_REFERENCE (parm
))
4888 return (sum_ranks (rank_one_type (parm
->target_type (), arg
, NULL
),
4889 REFERENCE_SEE_THROUGH_BADNESS
));
4892 /* Debugging only. */
4893 gdb_printf (gdb_stderr
,
4894 "------ Arg is %s [%d], parm is %s [%d]\n",
4895 arg
->name (), arg
->code (),
4896 parm
->name (), parm
->code ());
4899 /* x -> y means arg of type x being supplied for parameter of type y. */
4901 switch (parm
->code ())
4904 return rank_one_type_parm_ptr (parm
, arg
, value
);
4905 case TYPE_CODE_ARRAY
:
4906 return rank_one_type_parm_array (parm
, arg
, value
);
4907 case TYPE_CODE_FUNC
:
4908 return rank_one_type_parm_func (parm
, arg
, value
);
4910 return rank_one_type_parm_int (parm
, arg
, value
);
4911 case TYPE_CODE_ENUM
:
4912 return rank_one_type_parm_enum (parm
, arg
, value
);
4913 case TYPE_CODE_CHAR
:
4914 return rank_one_type_parm_char (parm
, arg
, value
);
4915 case TYPE_CODE_RANGE
:
4916 return rank_one_type_parm_range (parm
, arg
, value
);
4917 case TYPE_CODE_BOOL
:
4918 return rank_one_type_parm_bool (parm
, arg
, value
);
4920 return rank_one_type_parm_float (parm
, arg
, value
);
4921 case TYPE_CODE_COMPLEX
:
4922 return rank_one_type_parm_complex (parm
, arg
, value
);
4923 case TYPE_CODE_STRUCT
:
4924 return rank_one_type_parm_struct (parm
, arg
, value
);
4926 return rank_one_type_parm_set (parm
, arg
, value
);
4928 return INCOMPATIBLE_TYPE_BADNESS
;
4929 } /* switch (arg->code ()) */
4932 /* End of functions for overload resolution. */
4935 /* Note the first arg should be the "this" pointer, we may not want to
4936 include it since we may get into a infinitely recursive
4940 print_args (struct field
*args
, int nargs
, int spaces
)
4946 for (i
= 0; i
< nargs
; i
++)
4949 ("%*s[%d] name '%s'\n", spaces
, "", i
,
4950 args
[i
].name () != NULL
? args
[i
].name () : "<NULL>");
4951 recursive_dump_type (args
[i
].type (), spaces
+ 2);
4957 dump_fn_fieldlists (struct type
*type
, int spaces
)
4963 gdb_printf ("%*sfn_fieldlists %s\n", spaces
, "",
4964 host_address_to_string (TYPE_FN_FIELDLISTS (type
)));
4965 for (method_idx
= 0; method_idx
< TYPE_NFN_FIELDS (type
); method_idx
++)
4967 f
= TYPE_FN_FIELDLIST1 (type
, method_idx
);
4969 ("%*s[%d] name '%s' (%s) length %d\n", spaces
+ 2, "",
4971 TYPE_FN_FIELDLIST_NAME (type
, method_idx
),
4972 host_address_to_string (TYPE_FN_FIELDLIST_NAME (type
, method_idx
)),
4973 TYPE_FN_FIELDLIST_LENGTH (type
, method_idx
));
4974 for (overload_idx
= 0;
4975 overload_idx
< TYPE_FN_FIELDLIST_LENGTH (type
, method_idx
);
4979 ("%*s[%d] physname '%s' (%s)\n",
4980 spaces
+ 4, "", overload_idx
,
4981 TYPE_FN_FIELD_PHYSNAME (f
, overload_idx
),
4982 host_address_to_string (TYPE_FN_FIELD_PHYSNAME (f
,
4985 ("%*stype %s\n", spaces
+ 8, "",
4986 host_address_to_string (TYPE_FN_FIELD_TYPE (f
, overload_idx
)));
4988 recursive_dump_type (TYPE_FN_FIELD_TYPE (f
, overload_idx
),
4992 ("%*sargs %s\n", spaces
+ 8, "",
4993 host_address_to_string (TYPE_FN_FIELD_ARGS (f
, overload_idx
)));
4994 print_args (TYPE_FN_FIELD_ARGS (f
, overload_idx
),
4995 TYPE_FN_FIELD_TYPE (f
, overload_idx
)->num_fields (),
4998 ("%*sfcontext %s\n", spaces
+ 8, "",
4999 host_address_to_string (TYPE_FN_FIELD_FCONTEXT (f
,
5002 gdb_printf ("%*sis_const %d\n", spaces
+ 8, "",
5003 TYPE_FN_FIELD_CONST (f
, overload_idx
));
5004 gdb_printf ("%*sis_volatile %d\n", spaces
+ 8, "",
5005 TYPE_FN_FIELD_VOLATILE (f
, overload_idx
));
5006 gdb_printf ("%*sis_private %d\n", spaces
+ 8, "",
5007 TYPE_FN_FIELD_PRIVATE (f
, overload_idx
));
5008 gdb_printf ("%*sis_protected %d\n", spaces
+ 8, "",
5009 TYPE_FN_FIELD_PROTECTED (f
, overload_idx
));
5010 gdb_printf ("%*sis_stub %d\n", spaces
+ 8, "",
5011 TYPE_FN_FIELD_STUB (f
, overload_idx
));
5012 gdb_printf ("%*sdefaulted %d\n", spaces
+ 8, "",
5013 TYPE_FN_FIELD_DEFAULTED (f
, overload_idx
));
5014 gdb_printf ("%*sis_deleted %d\n", spaces
+ 8, "",
5015 TYPE_FN_FIELD_DELETED (f
, overload_idx
));
5016 gdb_printf ("%*svoffset %u\n", spaces
+ 8, "",
5017 TYPE_FN_FIELD_VOFFSET (f
, overload_idx
));
5023 print_cplus_stuff (struct type
*type
, int spaces
)
5025 gdb_printf ("%*svptr_fieldno %d\n", spaces
, "",
5026 TYPE_VPTR_FIELDNO (type
));
5027 gdb_printf ("%*svptr_basetype %s\n", spaces
, "",
5028 host_address_to_string (TYPE_VPTR_BASETYPE (type
)));
5029 if (TYPE_VPTR_BASETYPE (type
) != NULL
)
5030 recursive_dump_type (TYPE_VPTR_BASETYPE (type
), spaces
+ 2);
5032 gdb_printf ("%*sn_baseclasses %d\n", spaces
, "",
5033 TYPE_N_BASECLASSES (type
));
5034 gdb_printf ("%*snfn_fields %d\n", spaces
, "",
5035 TYPE_NFN_FIELDS (type
));
5036 if (TYPE_NFN_FIELDS (type
) > 0)
5038 dump_fn_fieldlists (type
, spaces
);
5041 gdb_printf ("%*scalling_convention %d\n", spaces
, "",
5042 TYPE_CPLUS_CALLING_CONVENTION (type
));
5045 /* Print the contents of the TYPE's type_specific union, assuming that
5046 its type-specific kind is TYPE_SPECIFIC_GNAT_STUFF. */
5049 print_gnat_stuff (struct type
*type
, int spaces
)
5051 struct type
*descriptive_type
= TYPE_DESCRIPTIVE_TYPE (type
);
5053 if (descriptive_type
== NULL
)
5054 gdb_printf ("%*sno descriptive type\n", spaces
+ 2, "");
5057 gdb_printf ("%*sdescriptive type\n", spaces
+ 2, "");
5058 recursive_dump_type (descriptive_type
, spaces
+ 4);
5062 /* Print the contents of the TYPE's type_specific union, assuming that
5063 its type-specific kind is TYPE_SPECIFIC_FIXED_POINT. */
5066 print_fixed_point_type_info (struct type
*type
, int spaces
)
5068 gdb_printf ("%*sscaling factor: %s\n", spaces
+ 2, "",
5069 type
->fixed_point_scaling_factor ().str ().c_str ());
5072 static struct obstack dont_print_type_obstack
;
5074 /* Print the dynamic_prop PROP. */
5077 dump_dynamic_prop (dynamic_prop
const& prop
)
5079 switch (prop
.kind ())
5082 gdb_printf ("%s", plongest (prop
.const_val ()));
5084 case PROP_UNDEFINED
:
5085 gdb_printf ("(undefined)");
5089 gdb_printf ("(dynamic)");
5092 gdb_assert_not_reached ("unhandled prop kind");
5097 /* Return a string that represents a type code. */
5099 type_code_name (type_code code
)
5103 #define OP(X) case X: return # X;
5104 #include "type-codes.def"
5107 case TYPE_CODE_UNDEF
:
5108 return "TYPE_CODE_UNDEF";
5111 gdb_assert_not_reached ("unhandled type_code");
5115 recursive_dump_type (struct type
*type
, int spaces
)
5120 obstack_begin (&dont_print_type_obstack
, 0);
5122 if (type
->num_fields () > 0
5123 || (HAVE_CPLUS_STRUCT (type
) && TYPE_NFN_FIELDS (type
) > 0))
5125 struct type
**first_dont_print
5126 = (struct type
**) obstack_base (&dont_print_type_obstack
);
5128 int i
= (struct type
**)
5129 obstack_next_free (&dont_print_type_obstack
) - first_dont_print
;
5133 if (type
== first_dont_print
[i
])
5135 gdb_printf ("%*stype node %s", spaces
, "",
5136 host_address_to_string (type
));
5137 gdb_printf (_(" <same as already seen type>\n"));
5142 obstack_ptr_grow (&dont_print_type_obstack
, type
);
5145 gdb_printf ("%*stype node %s\n", spaces
, "",
5146 host_address_to_string (type
));
5147 gdb_printf ("%*sname '%s' (%s)\n", spaces
, "",
5148 type
->name () ? type
->name () : "<NULL>",
5149 host_address_to_string (type
->name ()));
5150 gdb_printf ("%*scode 0x%x ", spaces
, "", type
->code ());
5151 gdb_printf ("(%s)", type_code_name (type
->code ()));
5153 gdb_printf ("%*slength %s\n", spaces
, "",
5154 pulongest (type
->length ()));
5155 if (type
->is_objfile_owned ())
5156 gdb_printf ("%*sobjfile %s\n", spaces
, "",
5157 host_address_to_string (type
->objfile_owner ()));
5159 gdb_printf ("%*sgdbarch %s\n", spaces
, "",
5160 host_address_to_string (type
->arch_owner ()));
5161 gdb_printf ("%*starget_type %s\n", spaces
, "",
5162 host_address_to_string (type
->target_type ()));
5163 if (type
->target_type () != NULL
)
5165 recursive_dump_type (type
->target_type (), spaces
+ 2);
5167 gdb_printf ("%*spointer_type %s\n", spaces
, "",
5168 host_address_to_string (TYPE_POINTER_TYPE (type
)));
5169 gdb_printf ("%*sreference_type %s\n", spaces
, "",
5170 host_address_to_string (TYPE_REFERENCE_TYPE (type
)));
5171 gdb_printf ("%*stype_chain %s\n", spaces
, "",
5172 host_address_to_string (TYPE_CHAIN (type
)));
5173 gdb_printf ("%*sinstance_flags 0x%x", spaces
, "",
5174 (unsigned) type
->instance_flags ());
5175 if (TYPE_CONST (type
))
5177 gdb_puts (" TYPE_CONST");
5179 if (TYPE_VOLATILE (type
))
5181 gdb_puts (" TYPE_VOLATILE");
5183 if (TYPE_CODE_SPACE (type
))
5185 gdb_puts (" TYPE_CODE_SPACE");
5187 if (TYPE_DATA_SPACE (type
))
5189 gdb_puts (" TYPE_DATA_SPACE");
5191 if (TYPE_ADDRESS_CLASS_1 (type
))
5193 gdb_puts (" TYPE_ADDRESS_CLASS_1");
5195 if (TYPE_ADDRESS_CLASS_2 (type
))
5197 gdb_puts (" TYPE_ADDRESS_CLASS_2");
5199 if (TYPE_RESTRICT (type
))
5201 gdb_puts (" TYPE_RESTRICT");
5203 if (TYPE_ATOMIC (type
))
5205 gdb_puts (" TYPE_ATOMIC");
5209 gdb_printf ("%*sflags", spaces
, "");
5210 if (type
->is_unsigned ())
5212 gdb_puts (" TYPE_UNSIGNED");
5214 if (type
->has_no_signedness ())
5216 gdb_puts (" TYPE_NOSIGN");
5218 if (type
->endianity_is_not_default ())
5220 gdb_puts (" TYPE_ENDIANITY_NOT_DEFAULT");
5222 if (type
->is_stub ())
5224 gdb_puts (" TYPE_STUB");
5226 if (type
->target_is_stub ())
5228 gdb_puts (" TYPE_TARGET_STUB");
5230 if (type
->is_prototyped ())
5232 gdb_puts (" TYPE_PROTOTYPED");
5234 if (type
->has_varargs ())
5236 gdb_puts (" TYPE_VARARGS");
5238 /* This is used for things like AltiVec registers on ppc. Gcc emits
5239 an attribute for the array type, which tells whether or not we
5240 have a vector, instead of a regular array. */
5241 if (type
->is_vector ())
5243 gdb_puts (" TYPE_VECTOR");
5245 if (type
->is_fixed_instance ())
5247 gdb_puts (" TYPE_FIXED_INSTANCE");
5249 if (type
->stub_is_supported ())
5251 gdb_puts (" TYPE_STUB_SUPPORTED");
5253 if (TYPE_NOTTEXT (type
))
5255 gdb_puts (" TYPE_NOTTEXT");
5258 gdb_printf ("%*snfields %d ", spaces
, "", type
->num_fields ());
5259 if (TYPE_ASSOCIATED_PROP (type
) != nullptr
5260 || TYPE_ALLOCATED_PROP (type
) != nullptr)
5262 gdb_printf ("%*s", spaces
, "");
5263 if (TYPE_ASSOCIATED_PROP (type
) != nullptr)
5265 gdb_printf ("associated ");
5266 dump_dynamic_prop (*TYPE_ASSOCIATED_PROP (type
));
5268 if (TYPE_ALLOCATED_PROP (type
) != nullptr)
5270 if (TYPE_ASSOCIATED_PROP (type
) != nullptr)
5272 gdb_printf ("allocated ");
5273 dump_dynamic_prop (*TYPE_ALLOCATED_PROP (type
));
5277 gdb_printf ("%s\n", host_address_to_string (type
->fields ()));
5278 for (idx
= 0; idx
< type
->num_fields (); idx
++)
5280 field
&fld
= type
->field (idx
);
5281 if (type
->code () == TYPE_CODE_ENUM
)
5282 gdb_printf ("%*s[%d] enumval %s type ", spaces
+ 2, "",
5283 idx
, plongest (fld
.loc_enumval ()));
5285 gdb_printf ("%*s[%d] bitpos %s bitsize %d type ", spaces
+ 2, "",
5286 idx
, plongest (fld
.loc_bitpos ()),
5288 gdb_printf ("%s name '%s' (%s)",
5289 host_address_to_string (fld
.type ()),
5293 host_address_to_string (fld
.name ()));
5294 if (fld
.is_virtual ())
5295 gdb_printf (" virtual");
5297 if (fld
.is_private ())
5298 gdb_printf (" private");
5299 else if (fld
.is_protected ())
5300 gdb_printf (" protected");
5301 else if (fld
.is_ignored ())
5302 gdb_printf (" ignored");
5305 if (fld
.type () != NULL
)
5307 recursive_dump_type (fld
.type (), spaces
+ 4);
5310 if (type
->code () == TYPE_CODE_RANGE
)
5312 gdb_printf ("%*slow ", spaces
, "");
5313 dump_dynamic_prop (type
->bounds ()->low
);
5314 gdb_printf (" high ");
5315 dump_dynamic_prop (type
->bounds ()->high
);
5319 switch (TYPE_SPECIFIC_FIELD (type
))
5321 case TYPE_SPECIFIC_CPLUS_STUFF
:
5322 gdb_printf ("%*scplus_stuff %s\n", spaces
, "",
5323 host_address_to_string (TYPE_CPLUS_SPECIFIC (type
)));
5324 print_cplus_stuff (type
, spaces
);
5327 case TYPE_SPECIFIC_GNAT_STUFF
:
5328 gdb_printf ("%*sgnat_stuff %s\n", spaces
, "",
5329 host_address_to_string (TYPE_GNAT_SPECIFIC (type
)));
5330 print_gnat_stuff (type
, spaces
);
5333 case TYPE_SPECIFIC_FLOATFORMAT
:
5334 gdb_printf ("%*sfloatformat ", spaces
, "");
5335 if (TYPE_FLOATFORMAT (type
) == NULL
5336 || TYPE_FLOATFORMAT (type
)->name
== NULL
)
5337 gdb_puts ("(null)");
5339 gdb_puts (TYPE_FLOATFORMAT (type
)->name
);
5343 case TYPE_SPECIFIC_FUNC
:
5344 gdb_printf ("%*scalling_convention %d\n", spaces
, "",
5345 TYPE_CALLING_CONVENTION (type
));
5346 /* tail_call_list is not printed. */
5349 case TYPE_SPECIFIC_SELF_TYPE
:
5350 gdb_printf ("%*sself_type %s\n", spaces
, "",
5351 host_address_to_string (TYPE_SELF_TYPE (type
)));
5354 case TYPE_SPECIFIC_FIXED_POINT
:
5355 gdb_printf ("%*sfixed_point_info ", spaces
, "");
5356 print_fixed_point_type_info (type
, spaces
);
5360 case TYPE_SPECIFIC_INT
:
5361 if (type
->bit_size_differs_p ())
5363 unsigned bit_size
= type
->bit_size ();
5364 unsigned bit_off
= type
->bit_offset ();
5365 gdb_printf ("%*s bit size = %u, bit offset = %u\n", spaces
, "",
5372 obstack_free (&dont_print_type_obstack
, NULL
);
5375 /* Trivial helpers for the libiberty hash table, for mapping one
5380 type_pair (struct type
*old_
, struct type
*newobj_
)
5381 : old (old_
), newobj (newobj_
)
5384 struct type
* const old
, * const newobj
;
5388 type_pair_hash (const void *item
)
5390 const struct type_pair
*pair
= (const struct type_pair
*) item
;
5392 return htab_hash_pointer (pair
->old
);
5396 type_pair_eq (const void *item_lhs
, const void *item_rhs
)
5398 const struct type_pair
*lhs
= (const struct type_pair
*) item_lhs
;
5399 const struct type_pair
*rhs
= (const struct type_pair
*) item_rhs
;
5401 return lhs
->old
== rhs
->old
;
5404 /* Allocate the hash table used by copy_type_recursive to walk
5405 types without duplicates. */
5408 create_copied_types_hash ()
5410 return htab_up (htab_create_alloc (1, type_pair_hash
, type_pair_eq
,
5411 htab_delete_entry
<type_pair
>,
5415 /* Recursively copy (deep copy) a dynamic attribute list of a type. */
5417 static struct dynamic_prop_list
*
5418 copy_dynamic_prop_list (struct obstack
*storage
,
5419 struct dynamic_prop_list
*list
)
5421 struct dynamic_prop_list
*copy
= list
;
5422 struct dynamic_prop_list
**node_ptr
= ©
;
5424 while (*node_ptr
!= NULL
)
5426 struct dynamic_prop_list
*node_copy
;
5428 node_copy
= ((struct dynamic_prop_list
*)
5429 obstack_copy (storage
, *node_ptr
,
5430 sizeof (struct dynamic_prop_list
)));
5431 node_copy
->prop
= (*node_ptr
)->prop
;
5432 *node_ptr
= node_copy
;
5434 node_ptr
= &node_copy
->next
;
5440 /* Recursively copy (deep copy) TYPE, if it is associated with
5441 OBJFILE. Return a new type owned by the gdbarch associated with the type, a
5442 saved type if we have already visited TYPE (using COPIED_TYPES), or TYPE if
5443 it is not associated with OBJFILE. */
5446 copy_type_recursive (struct type
*type
, htab_t copied_types
)
5449 struct type
*new_type
;
5451 if (!type
->is_objfile_owned ())
5454 struct type_pair
pair (type
, nullptr);
5456 slot
= htab_find_slot (copied_types
, &pair
, INSERT
);
5458 return ((struct type_pair
*) *slot
)->newobj
;
5460 new_type
= type_allocator (type
->arch ()).new_type ();
5462 /* We must add the new type to the hash table immediately, in case
5463 we encounter this type again during a recursive call below. */
5464 struct type_pair
*stored
= new type_pair (type
, new_type
);
5468 /* Copy the common fields of types. For the main type, we simply
5469 copy the entire thing and then update specific fields as needed. */
5470 *TYPE_MAIN_TYPE (new_type
) = *TYPE_MAIN_TYPE (type
);
5472 new_type
->set_owner (type
->arch ());
5475 new_type
->set_name (xstrdup (type
->name ()));
5477 new_type
->set_instance_flags (type
->instance_flags ());
5478 new_type
->set_length (type
->length ());
5480 /* Copy the fields. */
5481 if (type
->num_fields ())
5485 nfields
= type
->num_fields ();
5486 new_type
->alloc_fields (type
->num_fields ());
5488 for (i
= 0; i
< nfields
; i
++)
5490 new_type
->field (i
).set_is_artificial
5491 (type
->field (i
).is_artificial ());
5492 new_type
->field (i
).set_bitsize (type
->field (i
).bitsize ());
5493 if (type
->field (i
).type ())
5494 new_type
->field (i
).set_type
5495 (copy_type_recursive (type
->field (i
).type (), copied_types
));
5496 if (type
->field (i
).name ())
5497 new_type
->field (i
).set_name (xstrdup (type
->field (i
).name ()));
5499 switch (type
->field (i
).loc_kind ())
5501 case FIELD_LOC_KIND_BITPOS
:
5502 new_type
->field (i
).set_loc_bitpos (type
->field (i
).loc_bitpos ());
5504 case FIELD_LOC_KIND_ENUMVAL
:
5505 new_type
->field (i
).set_loc_enumval (type
->field (i
).loc_enumval ());
5507 case FIELD_LOC_KIND_PHYSADDR
:
5508 new_type
->field (i
).set_loc_physaddr
5509 (type
->field (i
).loc_physaddr ());
5511 case FIELD_LOC_KIND_PHYSNAME
:
5512 new_type
->field (i
).set_loc_physname
5513 (xstrdup (type
->field (i
).loc_physname ()));
5515 case FIELD_LOC_KIND_DWARF_BLOCK
:
5516 new_type
->field (i
).set_loc_dwarf_block
5517 (type
->field (i
).loc_dwarf_block ());
5520 internal_error (_("Unexpected type field location kind: %d"),
5521 type
->field (i
).loc_kind ());
5526 /* For range types, copy the bounds information. */
5527 if (type
->code () == TYPE_CODE_RANGE
)
5529 range_bounds
*bounds
5530 = ((struct range_bounds
*) TYPE_ALLOC
5531 (new_type
, sizeof (struct range_bounds
)));
5533 *bounds
= *type
->bounds ();
5534 new_type
->set_bounds (bounds
);
5537 if (type
->main_type
->dyn_prop_list
!= NULL
)
5538 new_type
->main_type
->dyn_prop_list
5539 = copy_dynamic_prop_list (gdbarch_obstack (new_type
->arch_owner ()),
5540 type
->main_type
->dyn_prop_list
);
5543 /* Copy pointers to other types. */
5544 if (type
->target_type ())
5545 new_type
->set_target_type
5546 (copy_type_recursive (type
->target_type (), copied_types
));
5548 /* Maybe copy the type_specific bits.
5550 NOTE drow/2005-12-09: We do not copy the C++-specific bits like
5551 base classes and methods. There's no fundamental reason why we
5552 can't, but at the moment it is not needed. */
5554 switch (TYPE_SPECIFIC_FIELD (type
))
5556 case TYPE_SPECIFIC_NONE
:
5558 case TYPE_SPECIFIC_FUNC
:
5559 INIT_FUNC_SPECIFIC (new_type
);
5560 TYPE_CALLING_CONVENTION (new_type
) = TYPE_CALLING_CONVENTION (type
);
5561 TYPE_NO_RETURN (new_type
) = TYPE_NO_RETURN (type
);
5562 TYPE_TAIL_CALL_LIST (new_type
) = NULL
;
5564 case TYPE_SPECIFIC_FLOATFORMAT
:
5565 TYPE_FLOATFORMAT (new_type
) = TYPE_FLOATFORMAT (type
);
5567 case TYPE_SPECIFIC_CPLUS_STUFF
:
5568 INIT_CPLUS_SPECIFIC (new_type
);
5570 case TYPE_SPECIFIC_GNAT_STUFF
:
5571 INIT_GNAT_SPECIFIC (new_type
);
5573 case TYPE_SPECIFIC_SELF_TYPE
:
5574 set_type_self_type (new_type
,
5575 copy_type_recursive (TYPE_SELF_TYPE (type
),
5578 case TYPE_SPECIFIC_FIXED_POINT
:
5579 INIT_FIXED_POINT_SPECIFIC (new_type
);
5580 new_type
->fixed_point_info ().scaling_factor
5581 = type
->fixed_point_info ().scaling_factor
;
5583 case TYPE_SPECIFIC_INT
:
5584 TYPE_SPECIFIC_FIELD (new_type
) = TYPE_SPECIFIC_INT
;
5585 TYPE_MAIN_TYPE (new_type
)->type_specific
.int_stuff
5586 = TYPE_MAIN_TYPE (type
)->type_specific
.int_stuff
;
5590 gdb_assert_not_reached ("bad type_specific_kind");
5596 /* Make a copy of the given TYPE, except that the pointer & reference
5597 types are not preserved. */
5600 copy_type (const struct type
*type
)
5602 struct type
*new_type
= type_allocator (type
).new_type ();
5603 new_type
->set_instance_flags (type
->instance_flags ());
5604 new_type
->set_length (type
->length ());
5605 memcpy (TYPE_MAIN_TYPE (new_type
), TYPE_MAIN_TYPE (type
),
5606 sizeof (struct main_type
));
5607 if (type
->main_type
->dyn_prop_list
!= NULL
)
5609 struct obstack
*storage
= (type
->is_objfile_owned ()
5610 ? &type
->objfile_owner ()->objfile_obstack
5611 : gdbarch_obstack (type
->arch_owner ()));
5612 new_type
->main_type
->dyn_prop_list
5613 = copy_dynamic_prop_list (storage
, type
->main_type
->dyn_prop_list
);
5619 /* Helper functions to initialize architecture-specific types. */
5621 /* Allocate a TYPE_CODE_FLAGS type structure associated with GDBARCH.
5622 NAME is the type name. BIT is the size of the flag word in bits. */
5625 arch_flags_type (struct gdbarch
*gdbarch
, const char *name
, int bit
)
5629 type
= type_allocator (gdbarch
).new_type (TYPE_CODE_FLAGS
, bit
, name
);
5630 type
->set_is_unsigned (true);
5631 /* Pre-allocate enough space assuming every field is one bit. */
5632 type
->alloc_fields (bit
);
5633 type
->set_num_fields (0);
5638 /* Add field to TYPE_CODE_FLAGS type TYPE to indicate the bit at
5639 position BITPOS is called NAME. Pass NAME as "" for fields that
5640 should not be printed. */
5643 append_flags_type_field (struct type
*type
, int start_bitpos
, int nr_bits
,
5644 struct type
*field_type
, const char *name
)
5646 int type_bitsize
= type
->length () * TARGET_CHAR_BIT
;
5647 int field_nr
= type
->num_fields ();
5649 gdb_assert (type
->code () == TYPE_CODE_FLAGS
);
5650 gdb_assert (type
->num_fields () + 1 <= type_bitsize
);
5651 gdb_assert (start_bitpos
>= 0 && start_bitpos
< type_bitsize
);
5652 gdb_assert (nr_bits
>= 1 && (start_bitpos
+ nr_bits
) <= type_bitsize
);
5653 gdb_assert (name
!= NULL
);
5655 type
->set_num_fields (type
->num_fields () + 1);
5656 type
->field (field_nr
).set_name (xstrdup (name
));
5657 type
->field (field_nr
).set_type (field_type
);
5658 type
->field (field_nr
).set_loc_bitpos (start_bitpos
);
5659 type
->field (field_nr
).set_bitsize (nr_bits
);
5662 /* Special version of append_flags_type_field to add a flag field.
5663 Add field to TYPE_CODE_FLAGS type TYPE to indicate the bit at
5664 position BITPOS is called NAME. */
5667 append_flags_type_flag (struct type
*type
, int bitpos
, const char *name
)
5669 append_flags_type_field (type
, bitpos
, 1,
5670 builtin_type (type
->arch ())->builtin_bool
,
5674 /* Allocate a TYPE_CODE_STRUCT or TYPE_CODE_UNION type structure (as
5675 specified by CODE) associated with GDBARCH. NAME is the type name. */
5678 arch_composite_type (struct gdbarch
*gdbarch
, const char *name
,
5679 enum type_code code
)
5683 gdb_assert (code
== TYPE_CODE_STRUCT
|| code
== TYPE_CODE_UNION
);
5684 t
= type_allocator (gdbarch
).new_type (code
, 0, NULL
);
5686 INIT_CPLUS_SPECIFIC (t
);
5690 /* Add new field with name NAME and type FIELD to composite type T.
5691 Do not set the field's position or adjust the type's length;
5692 the caller should do so. Return the new field. */
5695 append_composite_type_field_raw (struct type
*t
, const char *name
,
5700 t
->set_num_fields (t
->num_fields () + 1);
5701 t
->set_fields (XRESIZEVEC (struct field
, t
->fields (),
5703 f
= &t
->field (t
->num_fields () - 1);
5704 memset (f
, 0, sizeof f
[0]);
5705 f
[0].set_type (field
);
5706 f
[0].set_name (name
);
5710 /* Add new field with name NAME and type FIELD to composite type T.
5711 ALIGNMENT (if non-zero) specifies the minimum field alignment. */
5714 append_composite_type_field_aligned (struct type
*t
, const char *name
,
5715 struct type
*field
, int alignment
)
5717 struct field
*f
= append_composite_type_field_raw (t
, name
, field
);
5719 if (t
->code () == TYPE_CODE_UNION
)
5721 if (t
->length () < field
->length ())
5722 t
->set_length (field
->length ());
5724 else if (t
->code () == TYPE_CODE_STRUCT
)
5726 t
->set_length (t
->length () + field
->length ());
5727 if (t
->num_fields () > 1)
5730 (f
[-1].loc_bitpos ()
5731 + (f
[-1].type ()->length () * TARGET_CHAR_BIT
));
5737 alignment
*= TARGET_CHAR_BIT
;
5738 left
= f
[0].loc_bitpos () % alignment
;
5742 f
->set_loc_bitpos (f
[0].loc_bitpos () + (alignment
- left
));
5744 (t
->length () + (alignment
- left
) / TARGET_CHAR_BIT
);
5751 /* Add new field with name NAME and type FIELD to composite type T. */
5754 append_composite_type_field (struct type
*t
, const char *name
,
5757 append_composite_type_field_aligned (t
, name
, field
, 0);
5762 /* We manage the lifetimes of fixed_point_type_info objects by
5763 attaching them to the objfile. Currently, these objects are
5764 modified during construction, and GMP does not provide a way to
5765 hash the contents of an mpq_t; so it's a bit of a pain to hash-cons
5766 them. If we did do this, they could be moved to the per-BFD and
5767 shared across objfiles. */
5768 typedef std::vector
<std::unique_ptr
<fixed_point_type_info
>>
5769 fixed_point_type_storage
;
5771 /* Key used for managing the storage of fixed-point type info. */
5772 static const struct registry
<objfile
>::key
<fixed_point_type_storage
>
5773 fixed_point_objfile_key
;
5775 /* See gdbtypes.h. */
5778 allocate_fixed_point_type_info (struct type
*type
)
5780 auto up
= std::make_unique
<fixed_point_type_info
> ();
5781 fixed_point_type_info
*info
;
5783 if (type
->is_objfile_owned ())
5785 fixed_point_type_storage
*storage
5786 = fixed_point_objfile_key
.get (type
->objfile_owner ());
5787 if (storage
== nullptr)
5788 storage
= fixed_point_objfile_key
.emplace (type
->objfile_owner ());
5790 storage
->push_back (std::move (up
));
5794 /* We just leak the memory, because that's what we do generally
5795 for non-objfile-attached types. */
5796 info
= up
.release ();
5799 type
->set_fixed_point_info (info
);
5802 /* See gdbtypes.h. */
5805 is_fixed_point_type (struct type
*type
)
5807 while (check_typedef (type
)->code () == TYPE_CODE_RANGE
)
5808 type
= check_typedef (type
)->target_type ();
5809 type
= check_typedef (type
);
5811 return type
->code () == TYPE_CODE_FIXED_POINT
;
5814 /* See gdbtypes.h. */
5817 type::fixed_point_type_base_type ()
5819 struct type
*type
= this;
5821 while (check_typedef (type
)->code () == TYPE_CODE_RANGE
)
5822 type
= check_typedef (type
)->target_type ();
5823 type
= check_typedef (type
);
5825 gdb_assert (type
->code () == TYPE_CODE_FIXED_POINT
);
5829 /* See gdbtypes.h. */
5832 type::fixed_point_scaling_factor ()
5834 struct type
*type
= this->fixed_point_type_base_type ();
5836 return type
->fixed_point_info ().scaling_factor
;
5839 /* See gdbtypes.h. */
5842 type::alloc_fields (unsigned int nfields
, bool init
)
5844 this->set_num_fields (nfields
);
5848 this->main_type
->flds_bnds
.fields
= nullptr;
5852 size_t size
= nfields
* sizeof (*this->fields ());
5853 struct field
*fields
5854 = (struct field
*) (init
5855 ? TYPE_ZALLOC (this, size
)
5856 : TYPE_ALLOC (this, size
));
5858 this->main_type
->flds_bnds
.fields
= fields
;
5861 /* See gdbtypes.h. */
5864 type::copy_fields (struct type
*src
)
5866 unsigned int nfields
= src
->num_fields ();
5867 alloc_fields (nfields
, false);
5871 size_t size
= nfields
* sizeof (*this->fields ());
5872 memcpy (this->fields (), src
->fields (), size
);
5875 /* See gdbtypes.h. */
5878 type::copy_fields (std::vector
<struct field
> &src
)
5880 unsigned int nfields
= src
.size ();
5881 alloc_fields (nfields
, false);
5885 size_t size
= nfields
* sizeof (*this->fields ());
5886 memcpy (this->fields (), src
.data (), size
);
5889 /* See gdbtypes.h. */
5892 type::is_string_like ()
5894 const language_defn
*defn
= language_def (this->language ());
5895 return defn
->is_string_type_p (this);
5898 /* See gdbtypes.h. */
5901 type::is_array_like ()
5903 if (code () == TYPE_CODE_ARRAY
)
5905 const language_defn
*defn
= language_def (this->language ());
5906 return defn
->is_array_like (this);
5911 static const registry
<gdbarch
>::key
<struct builtin_type
> gdbtypes_data
;
5913 static struct builtin_type
*
5914 create_gdbtypes_data (struct gdbarch
*gdbarch
)
5916 struct builtin_type
*builtin_type
= new struct builtin_type
;
5918 type_allocator
alloc (gdbarch
);
5921 builtin_type
->builtin_void
5922 = alloc
.new_type (TYPE_CODE_VOID
, TARGET_CHAR_BIT
, "void");
5923 builtin_type
->builtin_char
5924 = init_integer_type (alloc
, TARGET_CHAR_BIT
,
5925 !gdbarch_char_signed (gdbarch
), "char");
5926 builtin_type
->builtin_char
->set_has_no_signedness (true);
5927 builtin_type
->builtin_signed_char
5928 = init_integer_type (alloc
, TARGET_CHAR_BIT
,
5930 builtin_type
->builtin_unsigned_char
5931 = init_integer_type (alloc
, TARGET_CHAR_BIT
,
5932 1, "unsigned char");
5933 builtin_type
->builtin_short
5934 = init_integer_type (alloc
, gdbarch_short_bit (gdbarch
),
5936 builtin_type
->builtin_unsigned_short
5937 = init_integer_type (alloc
, gdbarch_short_bit (gdbarch
),
5938 1, "unsigned short");
5939 builtin_type
->builtin_int
5940 = init_integer_type (alloc
, gdbarch_int_bit (gdbarch
),
5942 builtin_type
->builtin_unsigned_int
5943 = init_integer_type (alloc
, gdbarch_int_bit (gdbarch
),
5945 builtin_type
->builtin_long
5946 = init_integer_type (alloc
, gdbarch_long_bit (gdbarch
),
5948 builtin_type
->builtin_unsigned_long
5949 = init_integer_type (alloc
, gdbarch_long_bit (gdbarch
),
5950 1, "unsigned long");
5951 builtin_type
->builtin_long_long
5952 = init_integer_type (alloc
, gdbarch_long_long_bit (gdbarch
),
5954 builtin_type
->builtin_unsigned_long_long
5955 = init_integer_type (alloc
, gdbarch_long_long_bit (gdbarch
),
5956 1, "unsigned long long");
5957 builtin_type
->builtin_half
5958 = init_float_type (alloc
, gdbarch_half_bit (gdbarch
),
5959 "half", gdbarch_half_format (gdbarch
));
5960 builtin_type
->builtin_float
5961 = init_float_type (alloc
, gdbarch_float_bit (gdbarch
),
5962 "float", gdbarch_float_format (gdbarch
));
5963 builtin_type
->builtin_bfloat16
5964 = init_float_type (alloc
, gdbarch_bfloat16_bit (gdbarch
),
5965 "bfloat16", gdbarch_bfloat16_format (gdbarch
));
5966 builtin_type
->builtin_double
5967 = init_float_type (alloc
, gdbarch_double_bit (gdbarch
),
5968 "double", gdbarch_double_format (gdbarch
));
5969 builtin_type
->builtin_long_double
5970 = init_float_type (alloc
, gdbarch_long_double_bit (gdbarch
),
5971 "long double", gdbarch_long_double_format (gdbarch
));
5972 builtin_type
->builtin_complex
5973 = init_complex_type ("complex", builtin_type
->builtin_float
);
5974 builtin_type
->builtin_double_complex
5975 = init_complex_type ("double complex", builtin_type
->builtin_double
);
5976 builtin_type
->builtin_string
5977 = alloc
.new_type (TYPE_CODE_STRING
, TARGET_CHAR_BIT
, "string");
5978 builtin_type
->builtin_bool
5979 = init_boolean_type (alloc
, TARGET_CHAR_BIT
, 1, "bool");
5981 /* The following three are about decimal floating point types, which
5982 are 32-bits, 64-bits and 128-bits respectively. */
5983 builtin_type
->builtin_decfloat
5984 = init_decfloat_type (alloc
, 32, "_Decimal32");
5985 builtin_type
->builtin_decdouble
5986 = init_decfloat_type (alloc
, 64, "_Decimal64");
5987 builtin_type
->builtin_declong
5988 = init_decfloat_type (alloc
, 128, "_Decimal128");
5990 /* "True" character types. */
5991 builtin_type
->builtin_true_char
5992 = init_character_type (alloc
, TARGET_CHAR_BIT
, 0, "true character");
5993 builtin_type
->builtin_true_unsigned_char
5994 = init_character_type (alloc
, TARGET_CHAR_BIT
, 1, "true character");
5996 /* Fixed-size integer types. */
5997 builtin_type
->builtin_int0
5998 = init_integer_type (alloc
, 0, 0, "int0_t");
5999 builtin_type
->builtin_int8
6000 = init_integer_type (alloc
, 8, 0, "int8_t");
6001 builtin_type
->builtin_uint8
6002 = init_integer_type (alloc
, 8, 1, "uint8_t");
6003 builtin_type
->builtin_int16
6004 = init_integer_type (alloc
, 16, 0, "int16_t");
6005 builtin_type
->builtin_uint16
6006 = init_integer_type (alloc
, 16, 1, "uint16_t");
6007 builtin_type
->builtin_int24
6008 = init_integer_type (alloc
, 24, 0, "int24_t");
6009 builtin_type
->builtin_uint24
6010 = init_integer_type (alloc
, 24, 1, "uint24_t");
6011 builtin_type
->builtin_int32
6012 = init_integer_type (alloc
, 32, 0, "int32_t");
6013 builtin_type
->builtin_uint32
6014 = init_integer_type (alloc
, 32, 1, "uint32_t");
6015 builtin_type
->builtin_int64
6016 = init_integer_type (alloc
, 64, 0, "int64_t");
6017 builtin_type
->builtin_uint64
6018 = init_integer_type (alloc
, 64, 1, "uint64_t");
6019 builtin_type
->builtin_int128
6020 = init_integer_type (alloc
, 128, 0, "int128_t");
6021 builtin_type
->builtin_uint128
6022 = init_integer_type (alloc
, 128, 1, "uint128_t");
6024 builtin_type
->builtin_int8
->set_instance_flags
6025 (builtin_type
->builtin_int8
->instance_flags ()
6026 | TYPE_INSTANCE_FLAG_NOTTEXT
);
6028 builtin_type
->builtin_uint8
->set_instance_flags
6029 (builtin_type
->builtin_uint8
->instance_flags ()
6030 | TYPE_INSTANCE_FLAG_NOTTEXT
);
6032 /* Wide character types. */
6033 builtin_type
->builtin_char16
6034 = init_integer_type (alloc
, 16, 1, "char16_t");
6035 builtin_type
->builtin_char32
6036 = init_integer_type (alloc
, 32, 1, "char32_t");
6037 builtin_type
->builtin_wchar
6038 = init_integer_type (alloc
, gdbarch_wchar_bit (gdbarch
),
6039 !gdbarch_wchar_signed (gdbarch
), "wchar_t");
6041 /* Default data/code pointer types. */
6042 builtin_type
->builtin_data_ptr
6043 = lookup_pointer_type (builtin_type
->builtin_void
);
6044 builtin_type
->builtin_func_ptr
6045 = lookup_pointer_type (lookup_function_type (builtin_type
->builtin_void
));
6046 builtin_type
->builtin_func_func
6047 = lookup_function_type (builtin_type
->builtin_func_ptr
);
6049 /* This type represents a GDB internal function. */
6050 builtin_type
->internal_fn
6051 = alloc
.new_type (TYPE_CODE_INTERNAL_FUNCTION
, 0,
6052 "<internal function>");
6054 /* This type represents an xmethod. */
6055 builtin_type
->xmethod
6056 = alloc
.new_type (TYPE_CODE_XMETHOD
, 0, "<xmethod>");
6058 /* This type represents a type that was unrecognized in symbol read-in. */
6059 builtin_type
->builtin_error
6060 = alloc
.new_type (TYPE_CODE_ERROR
, 0, "<unknown type>");
6062 /* The following set of types is used for symbols with no
6063 debug information. */
6064 builtin_type
->nodebug_text_symbol
6065 = alloc
.new_type (TYPE_CODE_FUNC
, TARGET_CHAR_BIT
,
6066 "<text variable, no debug info>");
6068 builtin_type
->nodebug_text_gnu_ifunc_symbol
6069 = alloc
.new_type (TYPE_CODE_FUNC
, TARGET_CHAR_BIT
,
6070 "<text gnu-indirect-function variable, no debug info>");
6071 builtin_type
->nodebug_text_gnu_ifunc_symbol
->set_is_gnu_ifunc (true);
6073 builtin_type
->nodebug_got_plt_symbol
6074 = init_pointer_type (alloc
, gdbarch_addr_bit (gdbarch
),
6075 "<text from jump slot in .got.plt, no debug info>",
6076 builtin_type
->nodebug_text_symbol
);
6077 builtin_type
->nodebug_data_symbol
6078 = alloc
.new_type (TYPE_CODE_ERROR
, 0, "<data variable, no debug info>");
6079 builtin_type
->nodebug_unknown_symbol
6080 = alloc
.new_type (TYPE_CODE_ERROR
, 0,
6081 "<variable (not text or data), no debug info>");
6082 builtin_type
->nodebug_tls_symbol
6083 = alloc
.new_type (TYPE_CODE_ERROR
, 0,
6084 "<thread local variable, no debug info>");
6086 /* NOTE: on some targets, addresses and pointers are not necessarily
6090 - gdb's `struct type' always describes the target's
6092 - gdb's `struct value' objects should always hold values in
6094 - gdb's CORE_ADDR values are addresses in the unified virtual
6095 address space that the assembler and linker work with. Thus,
6096 since target_read_memory takes a CORE_ADDR as an argument, it
6097 can access any memory on the target, even if the processor has
6098 separate code and data address spaces.
6100 In this context, builtin_type->builtin_core_addr is a bit odd:
6101 it's a target type for a value the target will never see. It's
6102 only used to hold the values of (typeless) linker symbols, which
6103 are indeed in the unified virtual address space. */
6105 builtin_type
->builtin_core_addr
6106 = init_integer_type (alloc
, gdbarch_addr_bit (gdbarch
), 1,
6108 return builtin_type
;
6111 const struct builtin_type
*
6112 builtin_type (struct gdbarch
*gdbarch
)
6114 struct builtin_type
*result
= gdbtypes_data
.get (gdbarch
);
6115 if (result
== nullptr)
6117 result
= create_gdbtypes_data (gdbarch
);
6118 gdbtypes_data
.set (gdbarch
, result
);
6123 const struct builtin_type
*
6124 builtin_type (struct objfile
*objfile
)
6126 return builtin_type (objfile
->arch ());
6129 /* See gdbtypes.h. */
6132 call_site::pc () const
6134 return per_objfile
->relocate (m_unrelocated_pc
);
6137 void _initialize_gdbtypes ();
6139 _initialize_gdbtypes ()
6141 add_setshow_zuinteger_cmd ("overload", no_class
, &overload_debug
,
6142 _("Set debugging of C++ overloading."),
6143 _("Show debugging of C++ overloading."),
6144 _("When enabled, ranking of the "
6145 "functions is displayed."),
6147 show_overload_debug
,
6148 &setdebuglist
, &showdebuglist
);
6150 /* Add user knob for controlling resolution of opaque types. */
6151 add_setshow_boolean_cmd ("opaque-type-resolution", class_support
,
6152 &opaque_type_resolution
,
6153 _("Set resolution of opaque struct/class/union"
6154 " types (if set before loading symbols)."),
6155 _("Show resolution of opaque struct/class/union"
6156 " types (if set before loading symbols)."),
6158 show_opaque_type_resolution
,
6159 &setlist
, &showlist
);
6161 /* Add an option to permit non-strict type checking. */
6162 add_setshow_boolean_cmd ("type", class_support
,
6163 &strict_type_checking
,
6164 _("Set strict type checking."),
6165 _("Show strict type checking."),
6167 show_strict_type_checking
,
6168 &setchecklist
, &showchecklist
);