32 bit arm regs (#315)

* aarch and arm regs

* fix arm, remove aarch64

* remove aarch64 mod
This commit is contained in:
Dominik Maier 2021-10-11 22:20:19 +02:00 committed by GitHub
parent 7930d42948
commit 44d844e1e2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 62 additions and 0 deletions

View File

@ -27,6 +27,13 @@ pub enum Amd64Regs {
Rflags = 17,
}
/// alias registers
#[allow(non_upper_case_globals)]
impl Amd64Regs {
pub const Sp: Amd64Regs = Amd64Regs::Rsp;
pub const Pc: Amd64Regs = Amd64Regs::Rip;
}
#[cfg(feature = "python")]
impl IntoPy<PyObject> for Amd64Regs {
fn into_py(self, py: Python) -> PyObject {

47
libafl_qemu/src/arm.rs Normal file
View File

@ -0,0 +1,47 @@
use num_enum::{IntoPrimitive, TryFromPrimitive};
use strum_macros::EnumIter;
#[cfg(feature = "python")]
use pyo3::prelude::*;
/// Registers for the ARM instruction set.
#[derive(IntoPrimitive, TryFromPrimitive, Debug, Clone, Copy, EnumIter)]
#[repr(i32)]
pub enum ArmRegs {
R0 = 0,
R1 = 1,
R2 = 2,
R3 = 3,
R4 = 4,
R5 = 5,
R6 = 6,
R7 = 7,
R8 = 8,
R9 = 9,
R10 = 10,
R11 = 11,
R12 = 12,
R13 = 13,
R14 = 14,
R15 = 15,
}
/// alias registers
#[allow(non_upper_case_globals)]
impl ArmRegs {
pub const Sp: ArmRegs = ArmRegs::R13;
pub const Lr: ArmRegs = ArmRegs::R14;
pub const Pc: ArmRegs = ArmRegs::R15;
pub const Sb: ArmRegs = ArmRegs::R9;
pub const Sl: ArmRegs = ArmRegs::R10;
pub const Fp: ArmRegs = ArmRegs::R11;
pub const Ip: ArmRegs = ArmRegs::R12;
}
#[cfg(feature = "python")]
impl IntoPy<PyObject> for ArmRegs {
fn into_py(self, py: Python) -> PyObject {
let n: i32 = self.into();
n.into_py(py)
}
}

View File

@ -1,6 +1,7 @@
use std::env;
pub mod amd64;
pub mod arm;
pub mod x86;
pub mod elf;

View File

@ -19,6 +19,13 @@ pub enum X86Regs {
Eflags = 9,
}
/// alias registers
#[allow(non_upper_case_globals)]
impl X86Regs {
pub const Sp: X86Regs = X86Regs::Esp;
pub const Pc: X86Regs = X86Regs::Eip;
}
#[cfg(feature = "python")]
impl IntoPy<PyObject> for X86Regs {
fn into_py(self, py: Python) -> PyObject {