diff --git a/libafl_qemu/libafl_qemu_build/src/bindings.rs b/libafl_qemu/libafl_qemu_build/src/bindings.rs index 250fef06f4..fe10f7638c 100644 --- a/libafl_qemu/libafl_qemu_build/src/bindings.rs +++ b/libafl_qemu/libafl_qemu_build/src/bindings.rs @@ -25,6 +25,7 @@ const WRAPPER_HEADER: &str = r#" #include "qapi/error.h" #include "exec/target_page.h" +#include "exec/cpu-defs.h" #include "hw/qdev-core.h" #include "hw/qdev-properties.h" #include "qemu/error-report.h" @@ -44,6 +45,7 @@ const WRAPPER_HEADER: &str = r#" #else #include "migration/vmstate.h" +#include "migration/savevm.h" #include "hw/core/sysemu-cpu-ops.h" #include "exec/address-spaces.h" #include "sysemu/tcg.h" diff --git a/libafl_qemu/libafl_qemu_build/src/build.rs b/libafl_qemu/libafl_qemu_build/src/build.rs index 9540fa0817..86e4ed110e 100644 --- a/libafl_qemu/libafl_qemu_build/src/build.rs +++ b/libafl_qemu/libafl_qemu_build/src/build.rs @@ -8,7 +8,7 @@ use which::which; const QEMU_URL: &str = "https://github.com/AFLplusplus/qemu-libafl-bridge"; const QEMU_DIRNAME: &str = "qemu-libafl-bridge"; -const QEMU_REVISION: &str = "6ae8b5bfb0bc4ac7a0b2ec463cf1000363836c0c"; +const QEMU_REVISION: &str = "9302a3a8174a45a14c77be316126f2673248be51"; fn build_dep_check(tools: &[&str]) { for tool in tools { @@ -321,10 +321,12 @@ pub fn build( .arg(format!("{}/libhwcore.fa", build_dir.display())) .arg(format!("{}/libqom.fa", build_dir.display())) .arg(format!("{}/libevent-loop-base.a", build_dir.display())) + .arg(format!("{}/gdbstub/libgdb_user.fa", build_dir.display())) .arg("--no-whole-archive") .arg(format!("{}/libqemuutil.a", build_dir.display())) .arg(format!("{}/libhwcore.fa", build_dir.display())) .arg(format!("{}/libqom.fa", build_dir.display())) + .arg(format!("{}/gdbstub/libgdb_user.fa", build_dir.display())) .arg(format!( "--dynamic-list={}/plugins/qemu-plugins.symbols", qemu_path.display() @@ -344,6 +346,7 @@ pub fn build( .arg(format!("{}/libhwcore.fa", build_dir.display())) .arg(format!("{}/libqom.fa", build_dir.display())) .arg(format!("{}/libevent-loop-base.a", build_dir.display())) + .arg(format!("{}/gdbstub/libgdb_softmmu.fa", build_dir.display())) .arg(format!("{}/libio.fa", build_dir.display())) .arg(format!("{}/libcrypto.fa", build_dir.display())) .arg(format!("{}/libauthz.fa", build_dir.display())) @@ -353,6 +356,10 @@ pub fn build( .arg(format!("{}/libqmp.fa", build_dir.display())) .arg("--no-whole-archive") .arg(format!("{}/libqemuutil.a", build_dir.display())) + .arg(format!( + "{}/subprojects/dtc/libfdt/libfdt.a", + build_dir.display() + )) .arg(format!( "{}/subprojects/libvhost-user/libvhost-user-glib.a", build_dir.display() @@ -365,10 +372,10 @@ pub fn build( "{}/subprojects/libvduse/libvduse.a", build_dir.display() )) - .arg(format!("{}/libfdt.a", build_dir.display())) .arg(format!("{}/libmigration.fa", build_dir.display())) .arg(format!("{}/libhwcore.fa", build_dir.display())) .arg(format!("{}/libqom.fa", build_dir.display())) + .arg(format!("{}/gdbstub/libgdb_softmmu.fa", build_dir.display())) .arg(format!("{}/libio.fa", build_dir.display())) .arg(format!("{}/libcrypto.fa", build_dir.display())) .arg(format!("{}/libauthz.fa", build_dir.display()))