LIEF: Library to Instrument Executable Formats Version 0.17.0
Loading...
Searching...
No Matches
LIEF::MachO::FunctionVariants::RuntimeTableEntry Class Reference

This class exposes information about a given implementation. More...

#include <FunctionVariants.hpp>

Public Types

enum class  FLAGS : uint32_t {
  UNKNOWN = 0 , ARM64_DEFAULT = (0 | F_ARM64) , ARM64_FLAGM = (1 | F_ARM64) , ARM64_FLAGM2 = (2 | F_ARM64) ,
  ARM64_FHM = (3 | F_ARM64) , ARM64_DOTPROD = (4 | F_ARM64) , ARM64_SHA3 = (5 | F_ARM64) , ARM64_RDM = (6 | F_ARM64) ,
  ARM64_LSE = (7 | F_ARM64) , ARM64_SHA256 = (8 | F_ARM64) , ARM64_SHA512 = (9 | F_ARM64) , ARM64_SHA1 = (10 | F_ARM64) ,
  ARM64_AES = (11 | F_ARM64) , ARM64_PMULL = (12 | F_ARM64) , ARM64_SPECRES = (13 | F_ARM64) , ARM64_SB = (14 | F_ARM64) ,
  ARM64_FRINTTS = (15 | F_ARM64) , ARM64_LRCPC = (16 | F_ARM64) , ARM64_LRCPC2 = (17 | F_ARM64) , ARM64_FCMA = (18 | F_ARM64) ,
  ARM64_JSCVT = (19 | F_ARM64) , ARM64_PAUTH = (20 | F_ARM64) , ARM64_PAUTH2 = (21 | F_ARM64) , ARM64_FPAC = (22 | F_ARM64) ,
  ARM64_DPB = (23 | F_ARM64) , ARM64_DPB2 = (24 | F_ARM64) , ARM64_BF16 = (25 | F_ARM64) , ARM64_I8MM = (26 | F_ARM64) ,
  ARM64_WFXT = (27 | F_ARM64) , ARM64_RPRES = (28 | F_ARM64) , ARM64_ECV = (29 | F_ARM64) , ARM64_AFP = (30 | F_ARM64) ,
  ARM64_LSE2 = (31 | F_ARM64) , ARM64_CSV2 = (32 | F_ARM64) , ARM64_CVS3 = (33 | F_ARM64) , ARM64_DIT = (34 | F_ARM64) ,
  ARM64_FP16 = (35 | F_ARM64) , ARM64_SSBS = (36 | F_ARM64) , ARM64_BTI = (37 | F_ARM64) , ARM64_SME = (44 | F_ARM64) ,
  ARM64_SME2 = (45 | F_ARM64) , ARM64_SMEF64F64 = (46 | F_ARM64) , ARM64_SMEI16I64 = (47 | F_ARM64) , ARM64_SMEF32F32 = (48 | F_ARM64) ,
  ARM64_SMEBI32I32 = (49 | F_ARM64) , ARM64_SMEB16F32 = (50 | F_ARM64) , ARM64_SMEF16F32 = (51 | F_ARM64) , ARM64_SMEI8I32 = (52 | F_ARM64) ,
  ARM64_SMEI16I32 = (53 | F_ARM64) , ARM64_ADVSIMD = (54 | F_ARM64) , ARM64_ADVSIMDHPFP = (55 | F_ARM64) , ARM64_CRC32 = (56 | F_ARM64) ,
  X86_64_DEFAULT = (0 | F_X86_64) , X86_64_SSE41 = (1 | F_X86_64) , X86_64_FMA = (2 | F_X86_64) , X86_64_AVX = (3 | F_X86_64) ,
  X86_64_AVX2 = (4 | F_X86_64) , X86_64_AVX512F = (5 | F_X86_64) , X86_64_AVX512BW = (6 | F_X86_64) , X86_64_BMI1 = (7 | F_X86_64) ,
  X86_64_ROSETTA = (8 | F_X86_64) , X86_64_HASWELL = (9 | F_X86_64) , X86_64_IVYBRIDGE = (10 | F_X86_64) , X86_64_NEHALEM = (11 | F_X86_64) ,
  SYSTEM_WIDE_DEFAULT = (0 | F_SYSTEM_WIDE) , SYSTEM_WIDE_INTERNAL_INSTALL = (1 | F_SYSTEM_WIDE) , SYSTEM_WIDE_CUSTOMER_INSTALL = (2 | F_SYSTEM_WIDE) , SYSTEM_WIDE_LOCKDOWN = (3 | F_SYSTEM_WIDE) ,
  PER_PROCESS_DEFAULT = (0 | F_PER_PROCESS) , PER_PROCESS_TRANSLATED = (1 | F_PER_PROCESS) , PER_PROCESS_NO_OVERREAD = (3 | F_PER_PROCESS)
}
 Flags describing the target platform, environment, or architecture for a given function implementation. More...

Public Member Functions

 RuntimeTableEntry ()=default
 RuntimeTableEntry (const details::runtime_table_entry_t &entry)
 RuntimeTableEntry (const RuntimeTableEntry &)=default
RuntimeTableEntryoperator= (const RuntimeTableEntry &)=default
 RuntimeTableEntry (RuntimeTableEntry &&) noexcept=default
RuntimeTableEntryoperator= (RuntimeTableEntry &&) noexcept=default
 ~RuntimeTableEntry ()=default
uint32_t impl () const
 The relative address of the implementation or an index if another_table() is set.
bool another_table () const
 Indicates whether impl() refers to an entry in another runtime table, rather than a direct function implementation address.
span< const uint8_t > flag_bit_nums () const
 The flagBitNums value as a slice of bytes.
const std::vector< FLAGS > & flags () const
 Return the interpreted flag_bit_nums().
std::string to_string () const

Static Public Member Functions

static uint8_t get_raw (FLAGS f)

Static Public Attributes

static constexpr uint32_t F_BIT = 20
static constexpr uint32_t F_MASK = (uint32_t(1) << F_BIT) - 1
static constexpr uint32_t F_PER_PROCESS = uint32_t(1) << F_BIT
static constexpr uint32_t F_SYSTEM_WIDE = uint32_t(2) << F_BIT
static constexpr uint32_t F_ARM64 = uint32_t(3) << F_BIT
static constexpr uint32_t F_X86_64 = uint32_t(4) << F_BIT

Detailed Description

This class exposes information about a given implementation.

Member Enumeration Documentation

◆ FLAGS

Flags describing the target platform, environment, or architecture for a given function implementation.

These are encoded as a uint32_t, where high bits determine the namespace (KIND), and the lower bits encode the specific capability.

Enumerator
UNKNOWN 
ARM64_DEFAULT 
ARM64_FLAGM 
ARM64_FLAGM2 
ARM64_FHM 
ARM64_DOTPROD 
ARM64_SHA3 
ARM64_RDM 
ARM64_LSE 
ARM64_SHA256 
ARM64_SHA512 
ARM64_SHA1 
ARM64_AES 
ARM64_PMULL 
ARM64_SPECRES 
ARM64_SB 
ARM64_FRINTTS 
ARM64_LRCPC 
ARM64_LRCPC2 
ARM64_FCMA 
ARM64_JSCVT 
ARM64_PAUTH 
ARM64_PAUTH2 
ARM64_FPAC 
ARM64_DPB 
ARM64_DPB2 
ARM64_BF16 
ARM64_I8MM 
ARM64_WFXT 
ARM64_RPRES 
ARM64_ECV 
ARM64_AFP 
ARM64_LSE2 
ARM64_CSV2 
ARM64_CVS3 
ARM64_DIT 
ARM64_FP16 
ARM64_SSBS 
ARM64_BTI 
ARM64_SME 
ARM64_SME2 
ARM64_SMEF64F64 
ARM64_SMEI16I64 
ARM64_SMEF32F32 
ARM64_SMEBI32I32 
ARM64_SMEB16F32 
ARM64_SMEF16F32 
ARM64_SMEI8I32 
ARM64_SMEI16I32 
ARM64_ADVSIMD 
ARM64_ADVSIMDHPFP 
ARM64_CRC32 
X86_64_DEFAULT 
X86_64_SSE41 
X86_64_FMA 
X86_64_AVX 
X86_64_AVX2 
X86_64_AVX512F 
X86_64_AVX512BW 
X86_64_BMI1 
X86_64_ROSETTA 
X86_64_HASWELL 
X86_64_IVYBRIDGE 
X86_64_NEHALEM 
SYSTEM_WIDE_DEFAULT 
SYSTEM_WIDE_INTERNAL_INSTALL 
SYSTEM_WIDE_CUSTOMER_INSTALL 
SYSTEM_WIDE_LOCKDOWN 
PER_PROCESS_DEFAULT 
PER_PROCESS_TRANSLATED 
PER_PROCESS_NO_OVERREAD 

Constructor & Destructor Documentation

◆ RuntimeTableEntry() [1/4]

LIEF::MachO::FunctionVariants::RuntimeTableEntry::RuntimeTableEntry ( )
default

◆ RuntimeTableEntry() [2/4]

LIEF::MachO::FunctionVariants::RuntimeTableEntry::RuntimeTableEntry ( const details::runtime_table_entry_t & entry)

◆ RuntimeTableEntry() [3/4]

LIEF::MachO::FunctionVariants::RuntimeTableEntry::RuntimeTableEntry ( const RuntimeTableEntry & )
default

◆ RuntimeTableEntry() [4/4]

LIEF::MachO::FunctionVariants::RuntimeTableEntry::RuntimeTableEntry ( RuntimeTableEntry && )
defaultnoexcept

◆ ~RuntimeTableEntry()

LIEF::MachO::FunctionVariants::RuntimeTableEntry::~RuntimeTableEntry ( )
default

Member Function Documentation

◆ another_table()

bool LIEF::MachO::FunctionVariants::RuntimeTableEntry::another_table ( ) const
inline

Indicates whether impl() refers to an entry in another runtime table, rather than a direct function implementation address.

◆ flag_bit_nums()

span< const uint8_t > LIEF::MachO::FunctionVariants::RuntimeTableEntry::flag_bit_nums ( ) const
inline

The flagBitNums value as a slice of bytes.

◆ flags()

const std::vector< FLAGS > & LIEF::MachO::FunctionVariants::RuntimeTableEntry::flags ( ) const
inline

Return the interpreted flag_bit_nums().

◆ get_raw()

uint8_t LIEF::MachO::FunctionVariants::RuntimeTableEntry::get_raw ( FLAGS f)
inlinestatic

◆ impl()

uint32_t LIEF::MachO::FunctionVariants::RuntimeTableEntry::impl ( ) const
inline

The relative address of the implementation or an index if another_table() is set.

◆ operator=() [1/2]

RuntimeTableEntry & LIEF::MachO::FunctionVariants::RuntimeTableEntry::operator= ( const RuntimeTableEntry & )
default

◆ operator=() [2/2]

RuntimeTableEntry & LIEF::MachO::FunctionVariants::RuntimeTableEntry::operator= ( RuntimeTableEntry && )
defaultnoexcept

◆ to_string()

std::string LIEF::MachO::FunctionVariants::RuntimeTableEntry::to_string ( ) const

Member Data Documentation

◆ F_ARM64

uint32_t LIEF::MachO::FunctionVariants::RuntimeTableEntry::F_ARM64 = uint32_t(3) << F_BIT
staticconstexpr

◆ F_BIT

uint32_t LIEF::MachO::FunctionVariants::RuntimeTableEntry::F_BIT = 20
staticconstexpr

◆ F_MASK

uint32_t LIEF::MachO::FunctionVariants::RuntimeTableEntry::F_MASK = (uint32_t(1) << F_BIT) - 1
staticconstexpr

◆ F_PER_PROCESS

uint32_t LIEF::MachO::FunctionVariants::RuntimeTableEntry::F_PER_PROCESS = uint32_t(1) << F_BIT
staticconstexpr

◆ F_SYSTEM_WIDE

uint32_t LIEF::MachO::FunctionVariants::RuntimeTableEntry::F_SYSTEM_WIDE = uint32_t(2) << F_BIT
staticconstexpr

◆ F_X86_64

uint32_t LIEF::MachO::FunctionVariants::RuntimeTableEntry::F_X86_64 = uint32_t(4) << F_BIT
staticconstexpr

The documentation for this class was generated from the following file: