LIEF: Library to Instrument Executable Formats Version 0.17.0
Loading...
Searching...
No Matches
LIEF::PE::CHPEMetadataARM64 Class Reference

This class represents ARM64-specific metadata used in CHPE (Compatible Hybrid PE) binaries, particularly for hybrid architectures like ARM64EC and ARM64X. More...

#include <MetadataARM64.hpp>

Inheritance diagram for LIEF::PE::CHPEMetadataARM64:
Collaboration diagram for LIEF::PE::CHPEMetadataARM64:

Classes

struct  range_entry_t
 Structure that describes architecture-specific ranges. More...
struct  redirection_entry_t
 Structure that describes a redirection. More...
struct  code_range_entry_point_t
 Mirror of IMAGE_ARM64EC_CODE_RANGE_ENTRY_POINT: Represents a mapping between code range and its entry point. More...

Public Types

using range_entries_t = std::vector<range_entry_t>
using it_range_entries = ref_iterator<range_entries_t&>
using it_const_range_entries = const_ref_iterator<const range_entries_t&>
using redirection_entries_t = std::vector<redirection_entry_t>
using it_redirection_entries = ref_iterator<redirection_entries_t&>
using it_const_redirection_entries = const_ref_iterator<const redirection_entries_t&>
using code_range_entry_point_entries = std::vector<code_range_entry_point_t>
using it_code_range_entry_point = ref_iterator<code_range_entry_point_entries&>
using it_const_code_range_entry_point = const_ref_iterator<const code_range_entry_point_entries&>
 Discriminator for the subclasses. More...

Public Member Functions

 CHPEMetadataARM64 (uint32_t version)
 CHPEMetadataARM64 (const CHPEMetadataARM64 &)=default
CHPEMetadataARM64operator= (const CHPEMetadataARM64 &)=default
 CHPEMetadataARM64 (CHPEMetadataARM64 &&)=default
CHPEMetadataARM64operator= (CHPEMetadataARM64 &&)=default
std::unique_ptr< CHPEMetadataclone () const override
uint32_t code_map () const
 RVA to the array that describes architecture-specific ranges.
uint32_t code_map_count () const
 Number of entries in the code map.
uint32_t code_ranges_to_entrypoints () const
uint32_t redirection_metadata () const
uint32_t os_arm64x_dispatch_call_no_redirect () const
uint32_t os_arm64x_dispatch_ret () const
uint32_t os_arm64x_dispatch_call () const
uint32_t os_arm64x_dispatch_icall () const
uint32_t os_arm64x_dispatch_icall_cfg () const
uint32_t alternate_entry_point () const
uint32_t auxiliary_iat () const
uint32_t code_ranges_to_entry_points_count () const
uint32_t redirection_metadata_count () const
uint32_t get_x64_information_function_pointer () const
uint32_t set_x64_information_function_pointer () const
uint32_t extra_rfe_table () const
 RVA to this architecture-specific exception table.
uint32_t extra_rfe_table_size () const
 architecture-specific exception table size
uint32_t os_arm64x_dispatch_fptr () const
uint32_t auxiliary_iat_copy () const
uint32_t auxiliary_delay_import () const
uint32_t auxiliary_delay_import_copy () const
uint32_t bitfield_info () const
it_range_entries code_ranges ()
it_const_range_entries code_ranges () const
it_redirection_entries redirections ()
it_const_redirection_entries redirections () const
it_code_range_entry_point code_range_entry_point ()
it_const_code_range_entry_point code_range_entry_point () const
CHPEMetadataARM64code_map (uint32_t value)
CHPEMetadataARM64code_map_count (uint32_t value)
CHPEMetadataARM64code_ranges_to_entrypoints (uint32_t value)
CHPEMetadataARM64redirection_metadata (uint32_t value)
CHPEMetadataARM64os_arm64x_dispatch_call_no_redirect (uint32_t value)
CHPEMetadataARM64os_arm64x_dispatch_ret (uint32_t value)
CHPEMetadataARM64os_arm64x_dispatch_call (uint32_t value)
CHPEMetadataARM64os_arm64x_dispatch_icall (uint32_t value)
CHPEMetadataARM64os_arm64x_dispatch_icall_cfg (uint32_t value)
CHPEMetadataARM64alternate_entry_point (uint32_t value)
CHPEMetadataARM64auxiliary_iat (uint32_t value)
CHPEMetadataARM64code_ranges_to_entry_points_count (uint32_t value)
CHPEMetadataARM64redirection_metadata_count (uint32_t value)
CHPEMetadataARM64get_x64_information_function_pointer (uint32_t value)
CHPEMetadataARM64set_x64_information_function_pointer (uint32_t value)
CHPEMetadataARM64extra_rfe_table (uint32_t value)
CHPEMetadataARM64extra_rfe_table_size (uint32_t value)
CHPEMetadataARM64os_arm64x_dispatch_fptr (uint32_t value)
CHPEMetadataARM64auxiliary_iat_copy (uint32_t value)
CHPEMetadataARM64auxiliary_delay_import (uint32_t value)
CHPEMetadataARM64auxiliary_delay_import_copy (uint32_t value)
CHPEMetadataARM64bitfield_info (uint32_t value)
std::string to_string () const override
 ~CHPEMetadataARM64 () override=default

Static Public Member Functions

static std::unique_ptr< CHPEMetadataARM64parse (Parser &ctx, BinaryStream &stream, uint32_t version)
static ok_error_t parse_code_map (Parser &ctx, CHPEMetadataARM64 &metadata)
static ok_error_t parse_redirections (Parser &ctx, CHPEMetadataARM64 &metadata)
static ok_error_t parse_code_ranges_to_entry_points (Parser &ctx, CHPEMetadataARM64 &metadata)
static bool classof (const CHPEMetadata *meta)

Detailed Description

This class represents ARM64-specific metadata used in CHPE (Compatible Hybrid PE) binaries, particularly for hybrid architectures like ARM64EC and ARM64X.

It extends the CHPEMetadata base class and provides access to metadata describing code ranges, redirections, entry points, and other hybrid-specific information relevant for binary analysis or instrumentation.

Member Typedef Documentation

◆ code_range_entry_point_entries

◆ it_code_range_entry_point

◆ it_const_code_range_entry_point

◆ it_const_range_entries

◆ it_const_redirection_entries

◆ it_range_entries

◆ it_redirection_entries

◆ range_entries_t

◆ redirection_entries_t

Constructor & Destructor Documentation

◆ CHPEMetadataARM64() [1/3]

◆ CHPEMetadataARM64() [2/3]

LIEF::PE::CHPEMetadataARM64::CHPEMetadataARM64 ( const CHPEMetadataARM64 & )
default

References CHPEMetadataARM64().

◆ CHPEMetadataARM64() [3/3]

LIEF::PE::CHPEMetadataARM64::CHPEMetadataARM64 ( CHPEMetadataARM64 && )
default

References CHPEMetadataARM64().

◆ ~CHPEMetadataARM64()

LIEF::PE::CHPEMetadataARM64::~CHPEMetadataARM64 ( )
overridedefault

Member Function Documentation

◆ alternate_entry_point() [1/2]

uint32_t LIEF::PE::CHPEMetadataARM64::alternate_entry_point ( ) const
inline

◆ alternate_entry_point() [2/2]

CHPEMetadataARM64 & LIEF::PE::CHPEMetadataARM64::alternate_entry_point ( uint32_t value)
inline

References CHPEMetadataARM64().

◆ auxiliary_delay_import() [1/2]

uint32_t LIEF::PE::CHPEMetadataARM64::auxiliary_delay_import ( ) const
inline

◆ auxiliary_delay_import() [2/2]

CHPEMetadataARM64 & LIEF::PE::CHPEMetadataARM64::auxiliary_delay_import ( uint32_t value)
inline

References CHPEMetadataARM64().

◆ auxiliary_delay_import_copy() [1/2]

uint32_t LIEF::PE::CHPEMetadataARM64::auxiliary_delay_import_copy ( ) const
inline

◆ auxiliary_delay_import_copy() [2/2]

CHPEMetadataARM64 & LIEF::PE::CHPEMetadataARM64::auxiliary_delay_import_copy ( uint32_t value)
inline

References CHPEMetadataARM64().

◆ auxiliary_iat() [1/2]

uint32_t LIEF::PE::CHPEMetadataARM64::auxiliary_iat ( ) const
inline

◆ auxiliary_iat() [2/2]

CHPEMetadataARM64 & LIEF::PE::CHPEMetadataARM64::auxiliary_iat ( uint32_t value)
inline

References CHPEMetadataARM64().

◆ auxiliary_iat_copy() [1/2]

uint32_t LIEF::PE::CHPEMetadataARM64::auxiliary_iat_copy ( ) const
inline

◆ auxiliary_iat_copy() [2/2]

CHPEMetadataARM64 & LIEF::PE::CHPEMetadataARM64::auxiliary_iat_copy ( uint32_t value)
inline

References CHPEMetadataARM64().

◆ bitfield_info() [1/2]

uint32_t LIEF::PE::CHPEMetadataARM64::bitfield_info ( ) const
inline

◆ bitfield_info() [2/2]

CHPEMetadataARM64 & LIEF::PE::CHPEMetadataARM64::bitfield_info ( uint32_t value)
inline

References CHPEMetadataARM64().

◆ classof()

bool LIEF::PE::CHPEMetadataARM64::classof ( const CHPEMetadata * meta)
inlinestatic

◆ clone()

std::unique_ptr< CHPEMetadata > LIEF::PE::CHPEMetadataARM64::clone ( ) const
inlineoverridevirtual

Reimplemented from LIEF::PE::CHPEMetadata.

References CHPEMetadataARM64().

◆ code_map() [1/2]

uint32_t LIEF::PE::CHPEMetadataARM64::code_map ( ) const
inline

RVA to the array that describes architecture-specific ranges.

◆ code_map() [2/2]

CHPEMetadataARM64 & LIEF::PE::CHPEMetadataARM64::code_map ( uint32_t value)
inline

References CHPEMetadataARM64().

◆ code_map_count() [1/2]

uint32_t LIEF::PE::CHPEMetadataARM64::code_map_count ( ) const
inline

Number of entries in the code map.

◆ code_map_count() [2/2]

CHPEMetadataARM64 & LIEF::PE::CHPEMetadataARM64::code_map_count ( uint32_t value)
inline

References CHPEMetadataARM64().

◆ code_range_entry_point() [1/2]

it_code_range_entry_point LIEF::PE::CHPEMetadataARM64::code_range_entry_point ( )
inline

◆ code_range_entry_point() [2/2]

it_const_code_range_entry_point LIEF::PE::CHPEMetadataARM64::code_range_entry_point ( ) const
inline

◆ code_ranges() [1/2]

it_range_entries LIEF::PE::CHPEMetadataARM64::code_ranges ( )
inline

◆ code_ranges() [2/2]

it_const_range_entries LIEF::PE::CHPEMetadataARM64::code_ranges ( ) const
inline

◆ code_ranges_to_entry_points_count() [1/2]

uint32_t LIEF::PE::CHPEMetadataARM64::code_ranges_to_entry_points_count ( ) const
inline

◆ code_ranges_to_entry_points_count() [2/2]

CHPEMetadataARM64 & LIEF::PE::CHPEMetadataARM64::code_ranges_to_entry_points_count ( uint32_t value)
inline

References CHPEMetadataARM64().

◆ code_ranges_to_entrypoints() [1/2]

uint32_t LIEF::PE::CHPEMetadataARM64::code_ranges_to_entrypoints ( ) const
inline

◆ code_ranges_to_entrypoints() [2/2]

CHPEMetadataARM64 & LIEF::PE::CHPEMetadataARM64::code_ranges_to_entrypoints ( uint32_t value)
inline

References CHPEMetadataARM64().

◆ extra_rfe_table() [1/2]

uint32_t LIEF::PE::CHPEMetadataARM64::extra_rfe_table ( ) const
inline

RVA to this architecture-specific exception table.

◆ extra_rfe_table() [2/2]

CHPEMetadataARM64 & LIEF::PE::CHPEMetadataARM64::extra_rfe_table ( uint32_t value)
inline

References CHPEMetadataARM64().

◆ extra_rfe_table_size() [1/2]

uint32_t LIEF::PE::CHPEMetadataARM64::extra_rfe_table_size ( ) const
inline

architecture-specific exception table size

◆ extra_rfe_table_size() [2/2]

CHPEMetadataARM64 & LIEF::PE::CHPEMetadataARM64::extra_rfe_table_size ( uint32_t value)
inline

References CHPEMetadataARM64().

◆ get_x64_information_function_pointer() [1/2]

uint32_t LIEF::PE::CHPEMetadataARM64::get_x64_information_function_pointer ( ) const
inline

◆ get_x64_information_function_pointer() [2/2]

CHPEMetadataARM64 & LIEF::PE::CHPEMetadataARM64::get_x64_information_function_pointer ( uint32_t value)
inline

References CHPEMetadataARM64().

◆ operator=() [1/2]

CHPEMetadataARM64 & LIEF::PE::CHPEMetadataARM64::operator= ( CHPEMetadataARM64 && )
default

References CHPEMetadataARM64().

◆ operator=() [2/2]

CHPEMetadataARM64 & LIEF::PE::CHPEMetadataARM64::operator= ( const CHPEMetadataARM64 & )
default

References CHPEMetadataARM64().

◆ os_arm64x_dispatch_call() [1/2]

uint32_t LIEF::PE::CHPEMetadataARM64::os_arm64x_dispatch_call ( ) const
inline

◆ os_arm64x_dispatch_call() [2/2]

CHPEMetadataARM64 & LIEF::PE::CHPEMetadataARM64::os_arm64x_dispatch_call ( uint32_t value)
inline

References CHPEMetadataARM64().

◆ os_arm64x_dispatch_call_no_redirect() [1/2]

uint32_t LIEF::PE::CHPEMetadataARM64::os_arm64x_dispatch_call_no_redirect ( ) const
inline

◆ os_arm64x_dispatch_call_no_redirect() [2/2]

CHPEMetadataARM64 & LIEF::PE::CHPEMetadataARM64::os_arm64x_dispatch_call_no_redirect ( uint32_t value)
inline

References CHPEMetadataARM64().

◆ os_arm64x_dispatch_fptr() [1/2]

uint32_t LIEF::PE::CHPEMetadataARM64::os_arm64x_dispatch_fptr ( ) const
inline

◆ os_arm64x_dispatch_fptr() [2/2]

CHPEMetadataARM64 & LIEF::PE::CHPEMetadataARM64::os_arm64x_dispatch_fptr ( uint32_t value)
inline

References CHPEMetadataARM64().

◆ os_arm64x_dispatch_icall() [1/2]

uint32_t LIEF::PE::CHPEMetadataARM64::os_arm64x_dispatch_icall ( ) const
inline

◆ os_arm64x_dispatch_icall() [2/2]

CHPEMetadataARM64 & LIEF::PE::CHPEMetadataARM64::os_arm64x_dispatch_icall ( uint32_t value)
inline

References CHPEMetadataARM64().

◆ os_arm64x_dispatch_icall_cfg() [1/2]

uint32_t LIEF::PE::CHPEMetadataARM64::os_arm64x_dispatch_icall_cfg ( ) const
inline

◆ os_arm64x_dispatch_icall_cfg() [2/2]

CHPEMetadataARM64 & LIEF::PE::CHPEMetadataARM64::os_arm64x_dispatch_icall_cfg ( uint32_t value)
inline

References CHPEMetadataARM64().

◆ os_arm64x_dispatch_ret() [1/2]

uint32_t LIEF::PE::CHPEMetadataARM64::os_arm64x_dispatch_ret ( ) const
inline

◆ os_arm64x_dispatch_ret() [2/2]

CHPEMetadataARM64 & LIEF::PE::CHPEMetadataARM64::os_arm64x_dispatch_ret ( uint32_t value)
inline

References CHPEMetadataARM64().

◆ parse()

std::unique_ptr< CHPEMetadataARM64 > LIEF::PE::CHPEMetadataARM64::parse ( Parser & ctx,
BinaryStream & stream,
uint32_t version )
static

◆ parse_code_map()

ok_error_t LIEF::PE::CHPEMetadataARM64::parse_code_map ( Parser & ctx,
CHPEMetadataARM64 & metadata )
static

References CHPEMetadataARM64().

◆ parse_code_ranges_to_entry_points()

ok_error_t LIEF::PE::CHPEMetadataARM64::parse_code_ranges_to_entry_points ( Parser & ctx,
CHPEMetadataARM64 & metadata )
static

References CHPEMetadataARM64().

◆ parse_redirections()

ok_error_t LIEF::PE::CHPEMetadataARM64::parse_redirections ( Parser & ctx,
CHPEMetadataARM64 & metadata )
static

References CHPEMetadataARM64().

◆ redirection_metadata() [1/2]

uint32_t LIEF::PE::CHPEMetadataARM64::redirection_metadata ( ) const
inline

◆ redirection_metadata() [2/2]

CHPEMetadataARM64 & LIEF::PE::CHPEMetadataARM64::redirection_metadata ( uint32_t value)
inline

References CHPEMetadataARM64().

◆ redirection_metadata_count() [1/2]

uint32_t LIEF::PE::CHPEMetadataARM64::redirection_metadata_count ( ) const
inline

◆ redirection_metadata_count() [2/2]

CHPEMetadataARM64 & LIEF::PE::CHPEMetadataARM64::redirection_metadata_count ( uint32_t value)
inline

References CHPEMetadataARM64().

◆ redirections() [1/2]

it_redirection_entries LIEF::PE::CHPEMetadataARM64::redirections ( )
inline

◆ redirections() [2/2]

it_const_redirection_entries LIEF::PE::CHPEMetadataARM64::redirections ( ) const
inline

◆ set_x64_information_function_pointer() [1/2]

uint32_t LIEF::PE::CHPEMetadataARM64::set_x64_information_function_pointer ( ) const
inline

◆ set_x64_information_function_pointer() [2/2]

CHPEMetadataARM64 & LIEF::PE::CHPEMetadataARM64::set_x64_information_function_pointer ( uint32_t value)
inline

References CHPEMetadataARM64().

◆ to_string()

std::string LIEF::PE::CHPEMetadataARM64::to_string ( ) const
overridevirtual

Reimplemented from LIEF::PE::CHPEMetadata.


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