# Path: cle/backends/symbol.py
# class SymbolType(Enum):
#     """
#     ABI-agnostic symbol types
#     """
#     TYPE_OTHER = 0
#     TYPE_NONE = 1
#     TYPE_FUNCTION = 2
#     TYPE_OBJECT = 3
#     TYPE_SECTION = 4
#     TYPE_TLS_OBJECT = 5
# 
# class SymbolSubType(Enum):
#     """
#     Abstract base class for ABI-specific symbol types
#     """
#     def to_base_type(self) -> SymbolType:  # pylint: disable=no-self-use
#         """
#         A subclass' ABI-specific mapping to :SymbolType:
#         """
#         raise ValueError("Abstract base class SymbolSubType has no base_type")


import logging
from ..symbol import SymbolType, SymbolSubType
        return not (self == other)

    @property
    def elf_value(self):
        return self.value[0]  # pylint: disable=unsubscriptable-object

    @property
    def os_proc(self):
        return self.value[1]  # pylint: disable=unsubscriptable-object

    @property
    def is_custom_os_proc(self):
        if self.elf_value in range(self.STT_LOOS.elf_value, self.STT_HIPROC.elf_value + 1):  # pylint: disable=no-member
            return self.os_proc is not None
        return False

    def to_base_type(self):
        if self is ELFSymbolType.STT_NOTYPE:
            return SymbolType.TYPE_NONE

        elif self in [ELFSymbolType.STT_FUNC, ELFSymbolType.STT_GNU_IFUNC]:
            return SymbolType.TYPE_FUNCTION

        elif self in [ELFSymbolType.STT_OBJECT, ELFSymbolType.STT_COMMON]:
            return SymbolType.TYPE_OBJECT

        elif self is ELFSymbolType.STT_SECTION:
            return SymbolType.TYPE_SECTION

        elif self is ELFSymbolType.STT_TLS:

# Path: cle/backends/symbol.py
# class SymbolType(Enum):
#     """
#     ABI-agnostic symbol types
#     """
#     TYPE_OTHER = 0
#     TYPE_NONE = 1
#     TYPE_FUNCTION = 2
#     TYPE_OBJECT = 3
#     TYPE_SECTION = 4
#     TYPE_TLS_OBJECT = 5
# 
# class SymbolSubType(Enum):
#     """
#     Abstract base class for ABI-specific symbol types
#     """
#     def to_base_type(self) -> SymbolType:  # pylint: disable=no-self-use
#         """
#         A subclass' ABI-specific mapping to :SymbolType:
#         """
#         raise ValueError("Abstract base class SymbolSubType has no base_type")


# Path: cle/backends/elf/symbol_type.py
import logging
from ..symbol import SymbolType, SymbolSubType

        return not (self == other)

    @property
    def elf_value(self):
        return self.value[0]  # pylint: disable=unsubscriptable-object

    @property
    def os_proc(self):
        return self.value[1]  # pylint: disable=unsubscriptable-object

    @property
    def is_custom_os_proc(self):
        if self.elf_value in range(self.STT_LOOS.elf_value, self.STT_HIPROC.elf_value + 1):  # pylint: disable=no-member
            return self.os_proc is not None
        return False

    def to_base_type(self):
        if self is ELFSymbolType.STT_NOTYPE:
            return SymbolType.TYPE_NONE

        elif self in [ELFSymbolType.STT_FUNC, ELFSymbolType.STT_GNU_IFUNC]:
            return SymbolType.TYPE_FUNCTION

        elif self in [ELFSymbolType.STT_OBJECT, ELFSymbolType.STT_COMMON]:
            return SymbolType.TYPE_OBJECT

        elif self is ELFSymbolType.STT_SECTION:
            return SymbolType.TYPE_SECTION

        elif self is ELFSymbolType.STT_TLS:

            return SymbolType.TYPE_TLS_OBJECT