Add build option for FuzzerInterceptors (#3049)
* Add build option for FuzzerInterceptors * Add removed whole_archive feature --------- Co-authored-by: Rowan Hart <rowanhart@microsoft.com>
This commit is contained in:
parent
620500e295
commit
b8387daa0f
@ -103,6 +103,11 @@ fn main() {
|
|||||||
common.define("DEFAULT_SANITIZERS_OPTIONS", "1");
|
common.define("DEFAULT_SANITIZERS_OPTIONS", "1");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "whole_archive")]
|
||||||
|
{
|
||||||
|
common.link_lib_modifier("+whole-archive");
|
||||||
|
}
|
||||||
|
|
||||||
common.file(src_dir.join("common.c")).compile("common");
|
common.file(src_dir.join("common.c")).compile("common");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,6 +137,11 @@ fn main() {
|
|||||||
println!("cargo:rustc-link-arg=-Wl,--undefined=__sanitizer_weak_hook_strcasecmp");
|
println!("cargo:rustc-link-arg=-Wl,--undefined=__sanitizer_weak_hook_strcasecmp");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "whole_archive")]
|
||||||
|
{
|
||||||
|
sancov_cmp.link_lib_modifier("+whole-archive");
|
||||||
|
}
|
||||||
|
|
||||||
sancov_cmp
|
sancov_cmp
|
||||||
.define("CMP_MAP_SIZE", Some(&*format!("{cmp_map_size}")))
|
.define("CMP_MAP_SIZE", Some(&*format!("{cmp_map_size}")))
|
||||||
.define("CMPLOG_MAP_W", Some(&*format!("{cmplog_map_w}")))
|
.define("CMPLOG_MAP_W", Some(&*format!("{cmplog_map_w}")))
|
||||||
@ -164,14 +174,27 @@ fn main() {
|
|||||||
#[cfg(feature = "libfuzzer_define_run_driver")]
|
#[cfg(feature = "libfuzzer_define_run_driver")]
|
||||||
libfuzzer.define("FUZZER_DEFINE_RUN_DRIVER", "1");
|
libfuzzer.define("FUZZER_DEFINE_RUN_DRIVER", "1");
|
||||||
|
|
||||||
|
#[cfg(feature = "whole_archive")]
|
||||||
|
{
|
||||||
|
libfuzzer.link_lib_modifier("+whole-archive");
|
||||||
|
}
|
||||||
|
|
||||||
libfuzzer.compile("libfuzzer");
|
libfuzzer.compile("libfuzzer");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "coverage")]
|
#[cfg(feature = "coverage")]
|
||||||
{
|
{
|
||||||
println!("cargo:rerun-if-changed=src/coverage.c");
|
println!("cargo:rerun-if-changed=src/coverage.c");
|
||||||
|
|
||||||
cc::Build::new()
|
let mut coverage = cc::Build::new();
|
||||||
|
|
||||||
|
#[cfg(feature = "whole_archive")]
|
||||||
|
{
|
||||||
|
coverage.link_lib_modifier("+whole-archive");
|
||||||
|
}
|
||||||
|
|
||||||
|
coverage
|
||||||
.file(src_dir.join("coverage.c"))
|
.file(src_dir.join("coverage.c"))
|
||||||
.define(
|
.define(
|
||||||
"EDGES_MAP_ALLOCATED_SIZE",
|
"EDGES_MAP_ALLOCATED_SIZE",
|
||||||
@ -189,12 +212,17 @@ fn main() {
|
|||||||
|
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
{
|
{
|
||||||
let mut cc = cc::Build::new();
|
let mut cmplog = cc::Build::new();
|
||||||
|
|
||||||
#[cfg(feature = "cmplog_extended_instrumentation")]
|
#[cfg(feature = "cmplog_extended_instrumentation")]
|
||||||
cc.define("CMPLOG_EXTENDED", Some("1"));
|
cmplog.define("CMPLOG_EXTENDED", Some("1"));
|
||||||
|
|
||||||
cc.flag("-Wno-pointer-sign") // UNIX ONLY FLAGS
|
#[cfg(feature = "whole_archive")]
|
||||||
|
{
|
||||||
|
cmplog.link_lib_modifier("+whole-archive");
|
||||||
|
}
|
||||||
|
|
||||||
|
cmplog.flag("-Wno-pointer-sign") // UNIX ONLY FLAGS
|
||||||
.flag("-Wno-sign-compare")
|
.flag("-Wno-sign-compare")
|
||||||
.define("CMP_MAP_SIZE", Some(&*format!("{cmp_map_size}")))
|
.define("CMP_MAP_SIZE", Some(&*format!("{cmp_map_size}")))
|
||||||
.define("CMPLOG_MAP_W", Some(&*format!("{cmplog_map_w}")))
|
.define("CMPLOG_MAP_W", Some(&*format!("{cmplog_map_w}")))
|
||||||
@ -205,7 +233,14 @@ fn main() {
|
|||||||
|
|
||||||
#[cfg(not(unix))]
|
#[cfg(not(unix))]
|
||||||
{
|
{
|
||||||
cc::Build::new()
|
let mut cmplog = cc::Build::new();
|
||||||
|
|
||||||
|
#[cfg(feature = "whole_archive")]
|
||||||
|
{
|
||||||
|
cmplog.link_lib_modifier("+whole-archive");
|
||||||
|
}
|
||||||
|
|
||||||
|
cmplog
|
||||||
.define("CMP_MAP_SIZE", Some(&*format!("{cmp_map_size}")))
|
.define("CMP_MAP_SIZE", Some(&*format!("{cmp_map_size}")))
|
||||||
.define("CMPLOG_MAP_W", Some(&*format!("{cmplog_map_w}")))
|
.define("CMPLOG_MAP_W", Some(&*format!("{cmplog_map_w}")))
|
||||||
.define("CMPLOG_MAP_H", Some(&*format!("{cmplog_map_h}")))
|
.define("CMPLOG_MAP_H", Some(&*format!("{cmplog_map_h}")))
|
||||||
@ -222,7 +257,14 @@ fn main() {
|
|||||||
if target_family == "unix" {
|
if target_family == "unix" {
|
||||||
println!("cargo:rerun-if-changed=src/forkserver.c");
|
println!("cargo:rerun-if-changed=src/forkserver.c");
|
||||||
|
|
||||||
cc::Build::new()
|
let mut forkserver = cc::Build::new();
|
||||||
|
|
||||||
|
#[cfg(feature = "whole_archive")]
|
||||||
|
{
|
||||||
|
forkserver.link_lib_modifier("+whole-archive");
|
||||||
|
}
|
||||||
|
|
||||||
|
forkserver
|
||||||
.file(src_dir.join("forkserver.c"))
|
.file(src_dir.join("forkserver.c"))
|
||||||
.compile("forkserver");
|
.compile("forkserver");
|
||||||
}
|
}
|
||||||
@ -232,7 +274,14 @@ fn main() {
|
|||||||
if target_family == "windows" {
|
if target_family == "windows" {
|
||||||
println!("cargo:rerun-if-changed=src/windows_asan.c");
|
println!("cargo:rerun-if-changed=src/windows_asan.c");
|
||||||
|
|
||||||
cc::Build::new()
|
let mut windows_asan = cc::Build::new();
|
||||||
|
|
||||||
|
#[cfg(feature = "whole_archive")]
|
||||||
|
{
|
||||||
|
windows_asan.link_lib_modifier("+whole-archive");
|
||||||
|
}
|
||||||
|
|
||||||
|
windows_asan
|
||||||
.file(src_dir.join("windows_asan.c"))
|
.file(src_dir.join("windows_asan.c"))
|
||||||
.compile("windows_asan");
|
.compile("windows_asan");
|
||||||
}
|
}
|
||||||
@ -259,6 +308,21 @@ fn main() {
|
|||||||
write!(file, "").unwrap();
|
write!(file, "").unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "libfuzzer_interceptors")]
|
||||||
|
{
|
||||||
|
println!("cargo:rerun-if-changed=src/libfuzzer/FuzzerInterceptors.cpp");
|
||||||
|
|
||||||
|
let mut libfuzzer_interceptors = cc::Build::new();
|
||||||
|
libfuzzer_interceptors.file(src_dir.join("libfuzzer/FuzzerInterceptors.cpp"));
|
||||||
|
|
||||||
|
#[cfg(feature = "whole_archive")]
|
||||||
|
{
|
||||||
|
libfuzzer_interceptors.link_lib_modifier("+whole-archive");
|
||||||
|
}
|
||||||
|
|
||||||
|
libfuzzer_interceptors.cpp(true).compile("interceptors");
|
||||||
|
}
|
||||||
|
|
||||||
println!("cargo:rustc-link-search=native={}", &out_dir);
|
println!("cargo:rustc-link-search=native={}", &out_dir);
|
||||||
|
|
||||||
println!("cargo:rerun-if-changed=build.rs");
|
println!("cargo:rerun-if-changed=build.rs");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user