From 8f03d202000756f51f4187ec248f8d3148e3cd25 Mon Sep 17 00:00:00 2001 From: David CARLIER Date: Sat, 21 Aug 2021 13:47:55 +0100 Subject: [PATCH] process crash handler, dump registers on apple arm64 (#271) --- libafl/src/executors/inprocess.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/libafl/src/executors/inprocess.rs b/libafl/src/executors/inprocess.rs index a71721adbb..b2d65f3fa3 100644 --- a/libafl/src/executors/inprocess.rs +++ b/libafl/src/executors/inprocess.rs @@ -523,6 +523,32 @@ mod unix_signal_handler { //println!("{:?}", backtrace::Backtrace::new()) } + #[allow(clippy::non_ascii_literal)] + #[cfg(all( + feature = "std", + any(target_os = "macos", target_os = "ios"), + target_arch = "aarch64" + ))] + { + let mcontext = *_context.uc_mcontext; + println!("{:━^100}", " CRASH "); + println!( + "Received signal {} at 0x{:016x}, fault address: 0x{:016x}", + _signal, mcontext.__ss.__pc, mcontext.__es.__far + ); + + println!("{:━^100}", " REGISTERS "); + for reg in 0..29 { + print!("x{:02}: 0x{:016x} ", reg, mcontext.__ss.__x[reg as usize]); + if reg % 4 == 3 { + println!(); + } + } + print!("fp: 0x{:016x} ", mcontext.__ss.__fp); + print!("lr: 0x{:016x} ", mcontext.__ss.__lr); + print!("pc: 0x{:016x} ", mcontext.__ss.__pc); + } + #[cfg(feature = "std")] let _res = stdout().flush();