From f067a04e7ca7cfd255cdc611ef9774e28e9bbac3 Mon Sep 17 00:00:00 2001 From: Alwin Berger Date: Wed, 9 Nov 2022 12:49:24 +0100 Subject: [PATCH] libafl_qemu: allow synchronous snapshotting Add a flag to take snapshots synchronosly. This should be used to take or load snapshots while the emulator is not running. --- libafl_qemu/src/emu.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libafl_qemu/src/emu.rs b/libafl_qemu/src/emu.rs index 2a51c6c570..9532f174f6 100644 --- a/libafl_qemu/src/emu.rs +++ b/libafl_qemu/src/emu.rs @@ -245,9 +245,9 @@ extern "C" { static mut libafl_start_vcpu: extern "C" fn(cpu: CPUStatePtr); - fn libafl_save_qemu_snapshot(name: *const u8); + fn libafl_save_qemu_snapshot(name: *const u8, sync: bool); #[allow(unused)] - fn libafl_load_qemu_snapshot(name: *const u8); + fn libafl_load_qemu_snapshot(name: *const u8, sync: bool); } #[cfg(emulation_mode = "systemmode")] @@ -913,15 +913,15 @@ impl Emulator { } #[cfg(emulation_mode = "systemmode")] - pub fn save_snapshot(&self, name: &str) { + pub fn save_snapshot(&self, name: &str, sync : bool) { let s = CString::new(name).expect("Invalid snapshot name"); - unsafe { libafl_save_qemu_snapshot(s.as_ptr() as *const _) }; + unsafe { libafl_save_qemu_snapshot(s.as_ptr() as *const _, sync) }; } #[cfg(emulation_mode = "systemmode")] - pub fn load_snapshot(&self, name: &str) { + pub fn load_snapshot(&self, name: &str, sync : bool) { let s = CString::new(name).expect("Invalid snapshot name"); - unsafe { libafl_load_qemu_snapshot(s.as_ptr() as *const _) }; + unsafe { libafl_load_qemu_snapshot(s.as_ptr() as *const _, sync) }; } #[cfg(emulation_mode = "usermode")]