libafl_qemu: fix systemmode with slirp dependency

libslirp will be dropped from future QEMU releases (see https://wiki.qemu.org/ChangeLog/7.0).
This change adds the "slirp" feature,
which links with the host-systems libslirp.
This commit is contained in:
Alwin Berger 2022-11-07 10:10:21 +01:00
parent 18f288e2d3
commit 7fac8f9540
2 changed files with 5 additions and 4 deletions

View File

@ -26,6 +26,8 @@ be = []
usermode = [] usermode = []
systemmode = [] systemmode = []
slirp = [ "systemmode" ] # build qemu with host libslirp (for user networking)
clippy = [] # special feature for clippy, don't use in normal projects§ clippy = [] # special feature for clippy, don't use in normal projects§
[dependencies] [dependencies]

View File

@ -44,8 +44,6 @@ pub fn build() {
println!("cargo:rustc-cfg=emulation_mode=\"{emulation_mode}\""); println!("cargo:rustc-cfg=emulation_mode=\"{emulation_mode}\"");
println!("cargo:rerun-if-changed=build.rs"); println!("cargo:rerun-if-changed=build.rs");
println!("cargo:rerun-if-changed=src/asan-giovese.c");
println!("cargo:rerun-if-changed=src/asan-giovese.h");
println!("cargo:rerun-if-env-changed=CROSS_CC"); println!("cargo:rerun-if-env-changed=CROSS_CC");
// Make sure we have at most one architecutre feature set // Make sure we have at most one architecutre feature set
@ -215,7 +213,7 @@ pub fn build() {
//.arg("--as-static-lib") //.arg("--as-static-lib")
.arg("--as-shared-lib") .arg("--as-shared-lib")
.arg(&format!("--target-list={cpu_target}-{target_suffix}")) .arg(&format!("--target-list={cpu_target}-{target_suffix}"))
.arg("--enable-slirp=internal") .arg(if cfg!(feature = "slirp") {"--enable-slirp"} else {"--disable-slirp"})
.arg("--enable-fdt=internal") .arg("--enable-fdt=internal")
.arg("--audio-drv-list=") .arg("--audio-drv-list=")
.arg("--disable-alsa") .arg("--disable-alsa")
@ -422,7 +420,6 @@ pub fn build() {
build_dir.display() build_dir.display()
)) ))
.arg(format!("{}/libfdt.a", build_dir.display())) .arg(format!("{}/libfdt.a", build_dir.display()))
.arg(format!("{}/libslirp.a", build_dir.display()))
.arg(format!("{}/libmigration.fa", build_dir.display())) .arg(format!("{}/libmigration.fa", build_dir.display()))
.arg(format!("{}/libhwcore.fa", build_dir.display())) .arg(format!("{}/libhwcore.fa", build_dir.display()))
.arg(format!("{}/libqom.fa", build_dir.display())) .arg(format!("{}/libqom.fa", build_dir.display()))
@ -457,6 +454,8 @@ pub fn build() {
println!("cargo:rustc-link-lib=glib-2.0"); println!("cargo:rustc-link-lib=glib-2.0");
println!("cargo:rustc-link-lib=stdc++"); println!("cargo:rustc-link-lib=stdc++");
println!("cargo:rustc-link-lib=z"); println!("cargo:rustc-link-lib=z");
#[cfg(all(feature = "slirp", feature = "systemmode"))]
println!("cargo:rustc-link-lib=slirp");
if emulation_mode == "systemmode" { if emulation_mode == "systemmode" {
println!("cargo:rustc-link-lib=pixman-1"); println!("cargo:rustc-link-lib=pixman-1");