Package ghidra.app.util.bin.format.dwarf

# Enum Class DWARFTag

java.lang.Object
java.lang.Enum<DWARFTag>
ghidra.app.util.bin.format.dwarf.DWARFTag

All Implemented Interfaces:
  `Serializable`, `Comparable<DWARFTag>`, `Constable`

public enum DWARFTag extends Enum<DWARFTag>
Identifier/purpose of a DWARF DIE record.

Users of this enum should be tolerant of unknown tag id values. See `DWARFAbbreviation`'s tagId.

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from class java.lang.Enum

  `Enum.EnumDesc<E extends Enum<E>>`

- ## Enum Constant Summary

  Enum Constants
  Enum Constant
  Description
  `DW_TAG_access_declaration`
  `DW_TAG_APPLE_ptrauth_type`
  `DW_TAG_array_type`
  `DW_TAG_atomic_type`
  `DW_TAG_base_type`
  `DW_TAG_call_site`
  `DW_TAG_call_site_parameter`
  `DW_TAG_catch_block`
  `DW_TAG_class_template`
  `DW_TAG_class_type`
  `DW_TAG_coarray_type`
  `DW_TAG_common_block`
  `DW_TAG_common_inclusion`
  `DW_TAG_compile_unit`
  `DW_TAG_condition`
  `DW_TAG_const_type`
  `DW_TAG_constant`
  `DW_TAG_dwarf_procedure`
  `DW_TAG_dynamic_type`
  `DW_TAG_entry_point`
  `DW_TAG_enumeration_type`
  `DW_TAG_enumerator`
  `DW_TAG_file_type`
  `DW_TAG_formal_parameter`
  `DW_TAG_format_label`
  `DW_TAG_friend`
  `DW_TAG_function_template`
  `DW_TAG_generic_subrange`
  `DW_TAG_GNU_BINCL`
  `DW_TAG_gnu_call_site`
  `DW_TAG_gnu_call_site_parameter`
  `DW_TAG_GNU_EINCL`
  `DW_TAG_GNU_formal_parameter_pack`
  `DW_TAG_GNU_template_parameter_pack`
  `DW_TAG_GNU_template_template_param`
  `DW_TAG_hi_user`
  `DW_TAG_HP_array_descriptor`
  `DW_TAG_HP_Bliss_field`
  `DW_TAG_HP_Bliss_field_set`
  `DW_TAG_immutable_type`
  `DW_TAG_imported_declaration`
  `DW_TAG_imported_module`
  `DW_TAG_imported_unit`
  `DW_TAG_inheritance`
  `DW_TAG_inlined_subroutine`
  `DW_TAG_interface_type`
  `DW_TAG_label`
  `DW_TAG_lexical_block`
  `DW_TAG_lo_user`
  `DW_TAG_member`
  `DW_TAG_MIPS_loop`
  `DW_TAG_module`
  `DW_TAG_mutable_type`
  `DW_TAG_namelist`
  `DW_TAG_namelist_item`
  `DW_TAG_namespace`
  `DW_TAG_packed_type`
  `DW_TAG_partial_unit`
  `DW_TAG_pointer_type`
  `DW_TAG_ptr_to_member_type`
  `DW_TAG_reference_type`
  `DW_TAG_restrict_type`
  `DW_TAG_rvalue_reference_type`
  `DW_TAG_set_type`
  `DW_TAG_shared_type`
  `DW_TAG_skeleton_unit`
  `DW_TAG_string_type`
  `DW_TAG_structure_type`
  `DW_TAG_subprogram`
  `DW_TAG_subrange_type`
  `DW_TAG_subroutine_type`
  `DW_TAG_template_alias`
  `DW_TAG_template_type_param`
  `DW_TAG_template_value_param`
  `DW_TAG_thrown_type`
  `DW_TAG_try_block`
  `DW_TAG_type_unit`
  `DW_TAG_typedef`
  `DW_TAG_union_type`
  `DW_TAG_UNKNOWN`
  `DW_TAG_unspecified_parameters`
  `DW_TAG_unspecified_type`
  `DW_TAG_variable`
  `DW_TAG_variant`
  `DW_TAG_variant_part`
  `DW_TAG_volatile_type`
  `DW_TAG_with_stmt`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `String`
  `getContainerTypeName()`
  Returns a string that describes what kind of object is specified by the `DIEAggregate`.
  `int`
  `getId()`
  `SymbolType`
  `getSymbolType()`
  Returns the `SymbolType` that corresponds to a DWARF tag
  `boolean`
  `isFuncDefType()`
  `boolean`
  `isNamedType()`
  `boolean`
  `isNameSpaceContainer()`
  Returns true if the children of this DIE are within a new namespace.
  `boolean`
  `isStructureType()`
  Returns true if this DIE defines a structure-like element (class, struct, interface, union).
  `boolean`
  `isType()`
  `String`
  `name(int rawTagId)`
  Returns the name of this enum, falling back to the rawTagId value if this enum is the DW_TAG_UNKNOWN value.
  `static DWARFTag`
  `of(int tagId)`
  `static DWARFTag`
  `valueOf(String name)`
  Returns the enum constant of this class with the specified name.
  `static DWARFTag[]`
  `values()`
  Returns an array containing the constants of this enum class, in the order they are declared.

  ### Methods inherited from class java.lang.Enum

  `clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf`

  ### Methods inherited from class java.lang.Object

  `getClass, notify, notifyAll, wait, wait, wait`

- ## Enum Constant Details

  - ### DW_TAG_array_type

    public static final DWARFTag DW_TAG_array_type

  - ### DW_TAG_class_type

    public static final DWARFTag DW_TAG_class_type

  - ### DW_TAG_entry_point

    public static final DWARFTag DW_TAG_entry_point

  - ### DW_TAG_enumeration_type

    public static final DWARFTag DW_TAG_enumeration_type

  - ### DW_TAG_formal_parameter

    public static final DWARFTag DW_TAG_formal_parameter

  - ### DW_TAG_imported_declaration

    public static final DWARFTag DW_TAG_imported_declaration

  - ### DW_TAG_label

    public static final DWARFTag DW_TAG_label

  - ### DW_TAG_lexical_block

    public static final DWARFTag DW_TAG_lexical_block

  - ### DW_TAG_member

    public static final DWARFTag DW_TAG_member

  - ### DW_TAG_pointer_type

    public static final DWARFTag DW_TAG_pointer_type

  - ### DW_TAG_reference_type

    public static final DWARFTag DW_TAG_reference_type

  - ### DW_TAG_compile_unit

    public static final DWARFTag DW_TAG_compile_unit

  - ### DW_TAG_string_type

    public static final DWARFTag DW_TAG_string_type

  - ### DW_TAG_structure_type

    public static final DWARFTag DW_TAG_structure_type

  - ### DW_TAG_subroutine_type

    public static final DWARFTag DW_TAG_subroutine_type

  - ### DW_TAG_typedef

    public static final DWARFTag DW_TAG_typedef

  - ### DW_TAG_union_type

    public static final DWARFTag DW_TAG_union_type

  - ### DW_TAG_unspecified_parameters

    public static final DWARFTag DW_TAG_unspecified_parameters

  - ### DW_TAG_variant

    public static final DWARFTag DW_TAG_variant

  - ### DW_TAG_common_block

    public static final DWARFTag DW_TAG_common_block

  - ### DW_TAG_common_inclusion

    public static final DWARFTag DW_TAG_common_inclusion

  - ### DW_TAG_inheritance

    public static final DWARFTag DW_TAG_inheritance

  - ### DW_TAG_inlined_subroutine

    public static final DWARFTag DW_TAG_inlined_subroutine

  - ### DW_TAG_module

    public static final DWARFTag DW_TAG_module

  - ### DW_TAG_ptr_to_member_type

    public static final DWARFTag DW_TAG_ptr_to_member_type

  - ### DW_TAG_set_type

    public static final DWARFTag DW_TAG_set_type

  - ### DW_TAG_subrange_type

    public static final DWARFTag DW_TAG_subrange_type

  - ### DW_TAG_with_stmt

    public static final DWARFTag DW_TAG_with_stmt

  - ### DW_TAG_access_declaration

    public static final DWARFTag DW_TAG_access_declaration

  - ### DW_TAG_base_type

    public static final DWARFTag DW_TAG_base_type

  - ### DW_TAG_catch_block

    public static final DWARFTag DW_TAG_catch_block

  - ### DW_TAG_const_type

    public static final DWARFTag DW_TAG_const_type

  - ### DW_TAG_constant

    public static final DWARFTag DW_TAG_constant

  - ### DW_TAG_enumerator

    public static final DWARFTag DW_TAG_enumerator

  - ### DW_TAG_file_type

    public static final DWARFTag DW_TAG_file_type

  - ### DW_TAG_friend

    public static final DWARFTag DW_TAG_friend

  - ### DW_TAG_namelist

    public static final DWARFTag DW_TAG_namelist

  - ### DW_TAG_namelist_item

    public static final DWARFTag DW_TAG_namelist_item

  - ### DW_TAG_packed_type

    public static final DWARFTag DW_TAG_packed_type

  - ### DW_TAG_subprogram

    public static final DWARFTag DW_TAG_subprogram

  - ### DW_TAG_template_type_param

    public static final DWARFTag DW_TAG_template_type_param

  - ### DW_TAG_template_value_param

    public static final DWARFTag DW_TAG_template_value_param

  - ### DW_TAG_thrown_type

    public static final DWARFTag DW_TAG_thrown_type

  - ### DW_TAG_try_block

    public static final DWARFTag DW_TAG_try_block

  - ### DW_TAG_variant_part

    public static final DWARFTag DW_TAG_variant_part

  - ### DW_TAG_variable

    public static final DWARFTag DW_TAG_variable

  - ### DW_TAG_volatile_type

    public static final DWARFTag DW_TAG_volatile_type

  - ### DW_TAG_dwarf_procedure

    public static final DWARFTag DW_TAG_dwarf_procedure

  - ### DW_TAG_restrict_type

    public static final DWARFTag DW_TAG_restrict_type

  - ### DW_TAG_interface_type

    public static final DWARFTag DW_TAG_interface_type

  - ### DW_TAG_namespace

    public static final DWARFTag DW_TAG_namespace

  - ### DW_TAG_imported_module

    public static final DWARFTag DW_TAG_imported_module

  - ### DW_TAG_unspecified_type

    public static final DWARFTag DW_TAG_unspecified_type

  - ### DW_TAG_partial_unit

    public static final DWARFTag DW_TAG_partial_unit

  - ### DW_TAG_imported_unit

    public static final DWARFTag DW_TAG_imported_unit

  - ### DW_TAG_mutable_type

    public static final DWARFTag DW_TAG_mutable_type

  - ### DW_TAG_condition

    public static final DWARFTag DW_TAG_condition

  - ### DW_TAG_shared_type

    public static final DWARFTag DW_TAG_shared_type

  - ### DW_TAG_type_unit

    public static final DWARFTag DW_TAG_type_unit

  - ### DW_TAG_rvalue_reference_type

    public static final DWARFTag DW_TAG_rvalue_reference_type

  - ### DW_TAG_template_alias

    public static final DWARFTag DW_TAG_template_alias

  - ### DW_TAG_coarray_type

    public static final DWARFTag DW_TAG_coarray_type

  - ### DW_TAG_generic_subrange

    public static final DWARFTag DW_TAG_generic_subrange

  - ### DW_TAG_dynamic_type

    public static final DWARFTag DW_TAG_dynamic_type

  - ### DW_TAG_atomic_type

    public static final DWARFTag DW_TAG_atomic_type

  - ### DW_TAG_call_site

    public static final DWARFTag DW_TAG_call_site

  - ### DW_TAG_call_site_parameter

    public static final DWARFTag DW_TAG_call_site_parameter

  - ### DW_TAG_skeleton_unit

    public static final DWARFTag DW_TAG_skeleton_unit

  - ### DW_TAG_immutable_type

    public static final DWARFTag DW_TAG_immutable_type

  - ### DW_TAG_lo_user

    public static final DWARFTag DW_TAG_lo_user

  - ### DW_TAG_MIPS_loop

    public static final DWARFTag DW_TAG_MIPS_loop

  - ### DW_TAG_HP_array_descriptor

    public static final DWARFTag DW_TAG_HP_array_descriptor

  - ### DW_TAG_HP_Bliss_field

    public static final DWARFTag DW_TAG_HP_Bliss_field

  - ### DW_TAG_HP_Bliss_field_set

    public static final DWARFTag DW_TAG_HP_Bliss_field_set

  - ### DW_TAG_format_label

    public static final DWARFTag DW_TAG_format_label

  - ### DW_TAG_function_template

    public static final DWARFTag DW_TAG_function_template

  - ### DW_TAG_class_template

    public static final DWARFTag DW_TAG_class_template

  - ### DW_TAG_GNU_BINCL

    public static final DWARFTag DW_TAG_GNU_BINCL

  - ### DW_TAG_GNU_EINCL

    public static final DWARFTag DW_TAG_GNU_EINCL

  - ### DW_TAG_GNU_template_template_param

    public static final DWARFTag DW_TAG_GNU_template_template_param

  - ### DW_TAG_GNU_template_parameter_pack

    public static final DWARFTag DW_TAG_GNU_template_parameter_pack

  - ### DW_TAG_GNU_formal_parameter_pack

    public static final DWARFTag DW_TAG_GNU_formal_parameter_pack

  - ### DW_TAG_gnu_call_site

    public static final DWARFTag DW_TAG_gnu_call_site

  - ### DW_TAG_gnu_call_site_parameter

    public static final DWARFTag DW_TAG_gnu_call_site_parameter

  - ### DW_TAG_APPLE_ptrauth_type

    public static final DWARFTag DW_TAG_APPLE_ptrauth_type

  - ### DW_TAG_hi_user

    public static final DWARFTag DW_TAG_hi_user

  - ### DW_TAG_UNKNOWN

    public static final DWARFTag DW_TAG_UNKNOWN

- ## Method Details

  - ### values

    public static DWARFTag[] values()
    Returns an array containing the constants of this enum class, in the order they are declared.
    Returns:
      an array containing the constants of this enum class, in the order they are declared

  - ### valueOf

    public static DWARFTag valueOf(String name)
    Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)
    Parameters:
      `name` - the name of the enum constant to be returned.
    Returns:
      the enum constant with the specified name
    Throws:
      `IllegalArgumentException` - if this enum class has no constant with the specified name
      `NullPointerException` - if the argument is null

  - ### name

    public String name(int rawTagId)
    Returns the name of this enum, falling back to the rawTagId value if this enum is the DW_TAG_UNKNOWN value.
    Parameters:
      `rawTagId` - tag id that corresponds to actual tag id found in the DWARF data
    Returns:
      string name of this enum

  - ### getId

    public int getId()

  - ### isType

    public boolean isType()

  - ### isNamedType

    public boolean isNamedType()

  - ### isNameSpaceContainer

    public boolean isNameSpaceContainer()
    Returns true if the children of this DIE are within a new namespace.

    Ie. Namespaces, subprogram, class, interface, struct, union, enum

    Returns:
      true if the children of this DIE are within a new namespace

  - ### isStructureType

    public boolean isStructureType()
    Returns true if this DIE defines a structure-like element (class, struct, interface, union).
    Returns:
      true if this DIE defines a structure-like element (class, struct, interface, union)

  - ### isFuncDefType

    public boolean isFuncDefType()

  - ### getContainerTypeName

    public String getContainerTypeName()
    Returns a string that describes what kind of object is specified by the `DIEAggregate`.

    Used to create a name for anonymous types.

    Returns:
      String describing the type of the DIEA.

  - ### getSymbolType

    public SymbolType getSymbolType()
    Returns the `SymbolType` that corresponds to a DWARF tag

    The mapping between tag type and SymbolType is not exact. There is no matching SymbolType for a DWARF static variable, so "LOCAL_VAR" is used currently.

    This mainly is used in constructing a NamespacePath, and the only critical usage there is Namespace vs. Class vs. everything else.

    Returns:
      `SymbolType`

  - ### of

    public static DWARFTag of(int tagId)