Dump registers on freebsd x86_64 (#779)

This commit is contained in:
David CARLIER 2022-09-13 12:49:39 +01:00 committed by GitHub
parent 7aadf31246
commit 23e655d7dd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -154,8 +154,43 @@ pub fn dump_registers<W: Write>(
Ok(()) Ok(())
} }
/// Write the content of all important registers
#[cfg(all(target_os = "freebsd", target_arch = "x86_64"))]
#[allow(clippy::similar_names)]
pub fn dump_registers<W: Write>(
writer: &mut BufWriter<W>,
ucontext: &ucontext_t,
) -> Result<(), std::io::Error> {
let mcontext = &ucontext.uc_mcontext;
write!(writer, "r8 : {:#016x}, ", mcontext.mc_r8)?;
write!(writer, "r9 : {:#016x}, ", mcontext.mc_r9)?;
write!(writer, "r10 : {:#016x}, ", mcontext.mc_r10)?;
write!(writer, "r11 : {:#016x}, ", mcontext.mc_r11)?;
write!(writer, "r12 : {:#016x}, ", mcontext.mc_r12)?;
write!(writer, "r13 : {:#016x}, ", mcontext.mc_r13)?;
write!(writer, "r14 : {:#016x}, ", mcontext.mc_r14)?;
write!(writer, "r15 : {:#016x}, ", mcontext.mc_r15)?;
write!(writer, "rdi : {:#016x}, ", mcontext.mc_rdi)?;
write!(writer, "rsi : {:#016x}, ", mcontext.mc_rsi)?;
write!(writer, "rbp : {:#016x}, ", mcontext.mc_rbp)?;
write!(writer, "rbx : {:#016x}, ", mcontext.mc_rbx)?;
write!(writer, "rdx : {:#016x}, ", mcontext.mc_rdx)?;
write!(writer, "rax : {:#016x}, ", mcontext.mc_rax)?;
write!(writer, "rcx : {:#016x}, ", mcontext.mc_rcx)?;
write!(writer, "rsp : {:#016x}, ", mcontext.mc_rsp)?;
write!(writer, "rflags : {:#016x}, ", mcontext.mc_rflags)?;
write!(writer, "cs : {:#016x}, ", mcontext.mc_cs)?;
Ok(())
}
#[allow(clippy::unnecessary_wraps)] #[allow(clippy::unnecessary_wraps)]
#[cfg(not(any(target_vendor = "apple", target_os = "linux", target_os = "android")))] #[cfg(not(any(
target_vendor = "apple",
target_os = "linux",
target_os = "android",
target_os = "freebsd"
)))]
fn dump_registers<W: Write>( fn dump_registers<W: Write>(
writer: &mut BufWriter<W>, writer: &mut BufWriter<W>,
_ucontext: &ucontext_t, _ucontext: &ucontext_t,