Module cpp_like

Source

Structs§

Split128 πŸ”’
VariantFieldInfo πŸ”’
Information about a single field of the top-level DW_TAG_union_type.

Constants§

ASSOC_CONST_DISCR128_BEGIN_HI πŸ”’
ASSOC_CONST_DISCR128_BEGIN_LO πŸ”’
ASSOC_CONST_DISCR128_END_HI πŸ”’
ASSOC_CONST_DISCR128_END_LO πŸ”’
ASSOC_CONST_DISCR128_EXACT_HI πŸ”’
ASSOC_CONST_DISCR128_EXACT_LO πŸ”’
ASSOC_CONST_DISCR_BEGIN πŸ”’
ASSOC_CONST_DISCR_END πŸ”’
ASSOC_CONST_DISCR_EXACT πŸ”’
ASSOC_CONST_DISCR_NAME πŸ”’
SINGLE_VARIANT_VIRTUAL_DISR πŸ”’
TAG_FIELD_NAME πŸ”’
TAG_FIELD_NAME_128_HI πŸ”’
TAG_FIELD_NAME_128_LO πŸ”’

Functions§

build_coroutine_di_node πŸ”’
A coroutine debuginfo node looks the same as a that of an enum type.
build_enum_type_di_node πŸ”’
In CPP-like mode, we generate a union with a field for each variant and an explicit tag field. The field of each variant has a struct type that encodes the discriminant of the variant and it’s data layout. The union also has a nested enumeration type that is only used for encoding variant names in an efficient way. Its enumerator values do not correspond to the enum’s discriminant values. It’s roughly equivalent to the following C/C++ code:
build_single_variant_union_fields πŸ”’
build_union_fields_for_direct_tag_coroutine πŸ”’
build_union_fields_for_direct_tag_enum_or_coroutine πŸ”’
This is a helper function shared between enums and coroutines that makes sure fields have the expect names.
build_union_fields_for_enum πŸ”’
build_variant_names_type_di_node πŸ”’
This function builds a DW_AT_enumeration_type that contains an entry for each variant. Note that this has nothing to do with the discriminant. The numeric value of each enumerator corresponds to the variant index. The type is only used for efficiently encoding the name of each variant in debuginfo.
build_variant_struct_wrapper_type_di_node πŸ”’
split_128 πŸ”’
variant_names_enum_base_type πŸ”’
variant_struct_wrapper_type_name πŸ”’
variant_union_field_name πŸ”’