Make ddg map compilation optional (#2341)

* Make ddg map compilation optional

* undo

* undo
This commit is contained in:
Dominik Maier 2024-06-27 01:19:45 +02:00 committed by GitHub
parent ea6e440762
commit 8031111660
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 19 additions and 16 deletions

View File

@ -13,6 +13,9 @@ categories = ["development-tools::testing", "emulators", "embedded", "os", "no-s
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[features]
default = []
[build-dependencies] [build-dependencies]
cc = { version = "1.0", features = ["parallel"] } cc = { version = "1.0", features = ["parallel"] }
which = "6.0" which = "6.0"

View File

@ -152,7 +152,7 @@ fn build_pass(
src_dir: &Path, src_dir: &Path,
src_file: &str, src_file: &str,
additional_srcfiles: Option<&Vec<&str>>, additional_srcfiles: Option<&Vec<&str>>,
optional: bool, required: bool,
) { ) {
let dot_offset = src_file.rfind('.').unwrap(); let dot_offset = src_file.rfind('.').unwrap();
let src_stub = &src_file[..dot_offset]; let src_stub = &src_file[..dot_offset];
@ -164,7 +164,7 @@ fn build_pass(
}; };
println!("cargo:rerun-if-changed=src/{src_file}"); println!("cargo:rerun-if-changed=src/{src_file}");
let r = if cfg!(unix) { let command_result = if cfg!(unix) {
let r = Command::new(bindir_path.join("clang++")) let r = Command::new(bindir_path.join("clang++"))
.arg("-v") .arg("-v")
.arg(format!("--target={}", env::var("HOST").unwrap())) .arg(format!("--target={}", env::var("HOST").unwrap()))
@ -198,27 +198,27 @@ fn build_pass(
None None
}; };
match r { match command_result {
Some(r) => match r { Some(res) => match res {
Ok(s) => { Ok(s) => {
if !s.success() { if !s.success() {
if optional { if required {
println!("cargo:warning=Skipping src/{src_file} - Exit status: {s}"); panic!("Failed to compile required compiler pass src/{src_file} - Exit status: {s}");
} else { } else {
panic!("Failed to compile {src_file} - Exit status: {s}"); println!("cargo:warning=Skipping non-required compiler pass src/{src_file} - Reason: Exit status {s}");
} }
} }
} }
Err(err) => { Err(err) => {
if optional { if required {
println!("cargo:warning=Skipping src/{src_file} - {err}"); panic!("Failed to compile required compiler pass src/{src_file} - {err}");
} else { } else {
panic!("Failed to compile {src_file} - {err}"); println!("cargo:warning=Skipping non-required compiler pass src/{src_file} - Reason: {err}");
} }
} }
}, },
None => { None => {
println!("cargo:warning=Skipping src/{src_file} - Only supported on Windows or *nix."); println!("cargo:warning=Skipping compiler pass src/{src_file} - Only supported on Windows or *nix.");
} }
} }
} }
@ -427,7 +427,7 @@ pub const LIBAFL_CC_LLVM_VERSION: Option<usize> = None;
false, false,
); );
for pass in &[ for pass in [
"function-logging.cc", "function-logging.cc",
"cmplog-routines-pass.cc", "cmplog-routines-pass.cc",
"autotokens-pass.cc", "autotokens-pass.cc",
@ -443,12 +443,12 @@ pub const LIBAFL_CC_LLVM_VERSION: Option<usize> = None;
src_dir, src_dir,
pass, pass,
None, None,
false, true,
); );
} }
// Optional pass // Optional pass
for pass in &["dump-cfg-pass.cc", "profiling.cc"] { for pass in ["dump-cfg-pass.cc", "profiling.cc"] {
build_pass( build_pass(
bindir_path, bindir_path,
out_dir, out_dir,
@ -457,7 +457,7 @@ pub const LIBAFL_CC_LLVM_VERSION: Option<usize> = None;
src_dir, src_dir,
pass, pass,
None, None,
true, false,
); );
} }

View File

@ -434,7 +434,7 @@ pub fn build(
/* /*
let mut objects = vec![]; let mut objects = vec![];
for dir in &[ for dir in [
build_dir.join("libcommon.fa.p"), build_dir.join("libcommon.fa.p"),
build_dir.join(format!("libqemu-{cpu_target}-{target_suffix}.fa.p")), build_dir.join(format!("libqemu-{cpu_target}-{target_suffix}.fa.p")),
] { ] {