Arion 1.0.2-alpha
A high-performance C++ framework for emulating executable binaries.
 
Loading...
Searching...
No Matches
arch_manager.hpp File Reference
#include <arion/capstone/capstone.h>
#include <arion/common/global_defs.hpp>
#include <arion/common/global_excepts.hpp>
#include <arion/keystone/keystone.h>
#include <arion/unicorn/unicorn.h>
#include <arion/unicorn/x86.h>
#include <cstdint>
#include <map>
#include <memory>
#include <string>
#include <vector>

Go to the source code of this file.

Classes

struct  arion::ABI_REGISTERS
 Unicorn PC and SP registers for genericity. More...
 
struct  arion::ABI_CALLING_CONVENTION
 Unicorn registers involved in calling convention. More...
 
struct  arion::ABI_SYSCALLING_CONVENTION
 Unicorn registers involved in syscalling convention. More...
 
struct  arion::ARCH_ATTRIBUTES
 Multiple architecture specific attributes, grouped in a structure for genericity purpose. More...
 
class  arion::ArchManager
 

Namespaces

namespace  arion
 

Macros

#define ARION_VVAR_PRESENT   (1 << 0)
 If this flag is set, the loader will map the VVAR segment.
 
#define ARION_VDSO_PRESENT   (1 << 1)
 If this flag is set, the loader will map the VDSO segment.
 
#define ARION_VSYSCALL_PRESENT   (1 << 2)
 If this flag is set, the loader will map the VSYSCALL segment.
 
#define ARION_ARM_TRAPS_PRESENT   (1 << 3)
 If this flag is set, the loader will map the ARM_TRAPS segment.
 
#define ARION_VSYSCALL_ENTRY_SZ   1024
 Size of an entry in the VSYSCALL segment.
 

Typedefs

using arion::KERNEL_SEG_FLAGS = uint8_t
 Flags telling the loader which architecture specific segments should stand in memory.
 

Enumerations

enum  arion::CPU_INTR {
  arion::DIVIDE_ERROR , arion::DEBUG_EXCEPTION , arion::NON_MASKABLE_INTR , arion::BREAKPOINT ,
  arion::OVERFLOW , arion::BOUND_RANGE_EXCEEDED , arion::INVALID_OPCODE , arion::DEVICE_NOT_AVAILABLE ,
  arion::DOUBLE_FAULT , arion::COPROCESSOR_SEGMENT_OVERRUN , arion::INVALID_TSS , arion::SEGMENT_NOT_PRESENT ,
  arion::STACK_SEGMENT_FAULT , arion::GENERAL_PROTECTION_FAULT , arion::PAGE_FAULT , arion::RESERVED ,
  arion::X87_FLOATING_POINT_EXCEPTION , arion::ALIGNMENT_CHECK , arion::MACHINE_CHECK , arion::SIMD_FLOATING_POINT_ERROR ,
  arion::UDEF , arion::PREFETCH_ABORT , arion::DATA_ABORT , arion::IRQ ,
  arion::FIQ , arion::BKPT , arion::EXCEPTION_EXIT , arion::KERNEL_TRAP ,
  arion::HVC , arion::HYP_TRAP , arion::SMC , arion::VIRQ ,
  arion::VFIQ , arion::SEMIHOST , arion::NOCP , arion::INVSTATE ,
  arion::STKOF , arion::LAZYFP , arion::LSERR , arion::UNALIGNED
}
 Fields for Interrupt Descriptor Tables. More...
 

Macro Definition Documentation

◆ ARION_ARM_TRAPS_PRESENT

#define ARION_ARM_TRAPS_PRESENT   (1 << 3)

If this flag is set, the loader will map the ARM_TRAPS segment.

◆ ARION_VDSO_PRESENT

#define ARION_VDSO_PRESENT   (1 << 1)

If this flag is set, the loader will map the VDSO segment.

◆ ARION_VSYSCALL_ENTRY_SZ

#define ARION_VSYSCALL_ENTRY_SZ   1024

Size of an entry in the VSYSCALL segment.

◆ ARION_VSYSCALL_PRESENT

#define ARION_VSYSCALL_PRESENT   (1 << 2)

If this flag is set, the loader will map the VSYSCALL segment.

◆ ARION_VVAR_PRESENT

#define ARION_VVAR_PRESENT   (1 << 0)

If this flag is set, the loader will map the VVAR segment.