Arion 1.0.2-alpha
A high-performance C++ framework for emulating executable binaries.
 
Loading...
Searching...
No Matches
arion_lnx_arm64 Namespace Reference

Classes

class  ArchManagerLinuxARM64
 Linux AArch64 architecture manager class for Arion. More...
 
struct  elf_prstatus
 Structure for a process status ELF note (NT_PRSTATUS) for AArch64, containing general registers. More...
 
struct  frame_record
 Structure representing a frame record in the AArch64 stack unwind mechanism. More...
 
struct  frame_record_meta
 Structure combining a frame record with additional metadata. More...
 
struct  pt_regs
 Structure representing the full kernel-internal AArch64 register state. More...
 
struct  user_fpsimd_state
 Structure representing the AArch64 Floating-Point and SIMD (FPSIMD) state. More...
 
struct  user_pt_regs
 Structure representing the user-space view of AArch64 general registers saved by the kernel. More...
 

Typedefs

typedef arion_lnx_type::elf_greg_t elf_gregset_t[ELF_NGREG]
 Definition of the general-purpose register set type for ELF notes (NT_PRSTATUS).
 
typedef struct user_fpsimd_state elf_fpregset_t
 Definition of the floating-point register set type for ELF notes (NT_FPREGSET).
 

Variables

std::vector< arion::REGuc_user_pt_regs
 A vector mapping the user_pt_regs fields to ARION's universal register enumeration (arion::REG).
 
const size_t ELF_NGREG = (sizeof(struct user_pt_regs) / sizeof(arion_lnx_type::elf_greg_t))
 The number of 64-bit words (general registers) in the user-visible user_pt_regs structure, used for ELF notes.
 
std::vector< arion::REGuc_fpsimd_regs
 A vector mapping the FPSIMD vector registers to ARION's universal register enumeration (arion::REG).
 

Typedef Documentation

◆ elf_fpregset_t

Definition of the floating-point register set type for ELF notes (NT_FPREGSET).

◆ elf_gregset_t

typedef arion_lnx_type::elf_greg_t arion_lnx_arm64::elf_gregset_t[ELF_NGREG]

Definition of the general-purpose register set type for ELF notes (NT_PRSTATUS).

Variable Documentation

◆ ELF_NGREG

const size_t arion_lnx_arm64::ELF_NGREG = (sizeof(struct user_pt_regs) / sizeof(arion_lnx_type::elf_greg_t))

The number of 64-bit words (general registers) in the user-visible user_pt_regs structure, used for ELF notes.

◆ uc_fpsimd_regs

std::vector<arion::REG> arion_lnx_arm64::uc_fpsimd_regs
inline
Initial value:
= {
UC_ARM64_REG_V0, UC_ARM64_REG_V1, UC_ARM64_REG_V2, UC_ARM64_REG_V3, UC_ARM64_REG_V4, UC_ARM64_REG_V5,
UC_ARM64_REG_V6, UC_ARM64_REG_V7, UC_ARM64_REG_V8, UC_ARM64_REG_V9, UC_ARM64_REG_V10, UC_ARM64_REG_V11,
UC_ARM64_REG_V12, UC_ARM64_REG_V13, UC_ARM64_REG_V14, UC_ARM64_REG_V15, UC_ARM64_REG_V16, UC_ARM64_REG_V17,
UC_ARM64_REG_V18, UC_ARM64_REG_V19, UC_ARM64_REG_V20, UC_ARM64_REG_V21, UC_ARM64_REG_V22, UC_ARM64_REG_V23,
UC_ARM64_REG_V24, UC_ARM64_REG_V25, UC_ARM64_REG_V26, UC_ARM64_REG_V27, UC_ARM64_REG_V28, UC_ARM64_REG_V29,
UC_ARM64_REG_V30, UC_ARM64_REG_V31}

A vector mapping the FPSIMD vector registers to ARION's universal register enumeration (arion::REG).

◆ uc_user_pt_regs

std::vector<arion::REG> arion_lnx_arm64::uc_user_pt_regs
inline
Initial value:
= {
UC_ARM64_REG_X0, UC_ARM64_REG_X1, UC_ARM64_REG_X2, UC_ARM64_REG_X3, UC_ARM64_REG_X4, UC_ARM64_REG_X5,
UC_ARM64_REG_X6, UC_ARM64_REG_X7, UC_ARM64_REG_X8, UC_ARM64_REG_X9, UC_ARM64_REG_X10, UC_ARM64_REG_X11,
UC_ARM64_REG_X12, UC_ARM64_REG_X13, UC_ARM64_REG_X14, UC_ARM64_REG_X15, UC_ARM64_REG_X16, UC_ARM64_REG_X17,
UC_ARM64_REG_X18, UC_ARM64_REG_X19, UC_ARM64_REG_X20, UC_ARM64_REG_X21, UC_ARM64_REG_X22, UC_ARM64_REG_X23,
UC_ARM64_REG_X24, UC_ARM64_REG_X25, UC_ARM64_REG_X26, UC_ARM64_REG_X27, UC_ARM64_REG_X28, UC_ARM64_REG_X29,
UC_ARM64_REG_X30, UC_ARM64_REG_SP, UC_ARM64_REG_PC, UC_ARM64_REG_PSTATE}

A vector mapping the user_pt_regs fields to ARION's universal register enumeration (arion::REG).