diff --git a/libafl_qemu/libqasan/libqasan.c b/libafl_qemu/libqasan/libqasan.c index b91dd0f212..6005765f86 100644 --- a/libafl_qemu/libqasan/libqasan.c +++ b/libafl_qemu/libqasan/libqasan.c @@ -84,6 +84,12 @@ static void __libqasan_map_shadow(void *addr, void *limit) { addr, limit + 1, errno); abort(); } + + if (madvise(addr, size, MADV_DONTDUMP) != 0) { + QASAN_LOG("Failed to madvise (MADV_DONTDUMP) shadow: %p-%p, errno: %d", + addr, limit + 1, errno); + abort(); + } } #endif diff --git a/libafl_qemu/src/modules/usermode/asan_guest.rs b/libafl_qemu/src/modules/usermode/asan_guest.rs index f1dfcfa5c5..0d3f0589eb 100644 --- a/libafl_qemu/src/modules/usermode/asan_guest.rs +++ b/libafl_qemu/src/modules/usermode/asan_guest.rs @@ -269,9 +269,21 @@ where self.asan_lib = Some(asan_lib); } - fn post_qemu_init(&mut self, qemu: Qemu, _emulator_modules: &mut EmulatorModules) + fn post_qemu_init(&mut self, _qemu: Qemu, _emulator_modules: &mut EmulatorModules) where ET: EmulatorModuleTuple, + { + } + + fn first_exec( + &mut self, + qemu: Qemu, + emulator_modules: &mut EmulatorModules, + _state: &mut S, + ) where + ET: EmulatorModuleTuple, + I: Unpin, + S: Unpin, { for mapping in qemu.mappings() { println!("mapping: {mapping:#?}"); @@ -305,18 +317,7 @@ where for mapping in &mappings { println!("asan mapping: {mapping:#?}"); } - } - fn first_exec( - &mut self, - _qemu: Qemu, - emulator_modules: &mut EmulatorModules, - _state: &mut S, - ) where - ET: EmulatorModuleTuple, - I: Unpin, - S: Unpin, - { emulator_modules.reads( Hook::Function(gen_readwrite_guest_asan::), Hook::Function(guest_trace_error_asan::),