Move win32 libs in libafl_cc and improve static lib linking (#176)
* Move win32 libs in libafl_cc and improve static lib linking * fmt
This commit is contained in:
parent
8202548648
commit
1faadec106
@ -1,4 +1,4 @@
|
|||||||
use libafl_cc::{ClangWrapper, CompilerWrapper, LIB_EXT, LIB_PREFIX};
|
use libafl_cc::{ClangWrapper, CompilerWrapper};
|
||||||
use std::env;
|
use std::env;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
@ -8,28 +8,13 @@ fn main() {
|
|||||||
dir.pop();
|
dir.pop();
|
||||||
|
|
||||||
let mut cc = ClangWrapper::new("clang", "clang++");
|
let mut cc = ClangWrapper::new("clang", "clang++");
|
||||||
cc.from_args(&args)
|
cc.is_cpp(false)
|
||||||
|
.from_args(&args)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.add_link_arg("-Wl,--whole-archive".into())
|
.link_staticlib(&dir, "generic_inmemory".into())
|
||||||
.unwrap()
|
|
||||||
.add_link_arg(
|
|
||||||
dir.join(format!("{}generic_inmemory.{}", LIB_PREFIX, LIB_EXT))
|
|
||||||
.display()
|
|
||||||
.to_string(),
|
|
||||||
)
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-Wl,-no-whole-archive".into())
|
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.add_arg("-fsanitize-coverage=trace-pc-guard,trace-cmp".into())
|
.add_arg("-fsanitize-coverage=trace-pc-guard,trace-cmp".into())
|
||||||
.unwrap();
|
.unwrap();
|
||||||
// Libraries needed by libafl on Windows
|
|
||||||
#[cfg(windows)]
|
|
||||||
cc.add_link_arg("-lws2_32".into())
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-lBcrypt".into())
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-lAdvapi32".into())
|
|
||||||
.unwrap();
|
|
||||||
cc.run().unwrap();
|
cc.run().unwrap();
|
||||||
} else {
|
} else {
|
||||||
panic!("LibAFL CC: No Arguments given");
|
panic!("LibAFL CC: No Arguments given");
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use libafl_cc::{ClangWrapper, CompilerWrapper, LIB_EXT, LIB_PREFIX};
|
use libafl_cc::{ClangWrapper, CompilerWrapper};
|
||||||
use std::env;
|
use std::env;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
@ -8,29 +8,13 @@ fn main() {
|
|||||||
dir.pop();
|
dir.pop();
|
||||||
|
|
||||||
let mut cc = ClangWrapper::new("clang", "clang++");
|
let mut cc = ClangWrapper::new("clang", "clang++");
|
||||||
cc.is_cpp()
|
cc.is_cpp(true)
|
||||||
.from_args(&args)
|
.from_args(&args)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.add_link_arg("-Wl,--whole-archive".into())
|
.link_staticlib(&dir, "generic_inmemory".into())
|
||||||
.unwrap()
|
|
||||||
.add_link_arg(
|
|
||||||
dir.join(format!("{}generic_inmemory.{}", LIB_PREFIX, LIB_EXT))
|
|
||||||
.display()
|
|
||||||
.to_string(),
|
|
||||||
)
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-Wl,-no-whole-archive".into())
|
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.add_arg("-fsanitize-coverage=trace-pc-guard,trace-cmp".into())
|
.add_arg("-fsanitize-coverage=trace-pc-guard,trace-cmp".into())
|
||||||
.unwrap();
|
.unwrap();
|
||||||
// Libraries needed by libafl on Windows
|
|
||||||
#[cfg(windows)]
|
|
||||||
cc.add_link_arg("-lws2_32".into())
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-lBcrypt".into())
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-lAdvapi32".into())
|
|
||||||
.unwrap();
|
|
||||||
cc.run().unwrap();
|
cc.run().unwrap();
|
||||||
} else {
|
} else {
|
||||||
panic!("LibAFL CC: No Arguments given");
|
panic!("LibAFL CC: No Arguments given");
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use libafl_cc::{ClangWrapper, CompilerWrapper, LIB_EXT, LIB_PREFIX};
|
use libafl_cc::{ClangWrapper, CompilerWrapper};
|
||||||
use std::env;
|
use std::env;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
@ -8,27 +8,15 @@ fn main() {
|
|||||||
dir.pop();
|
dir.pop();
|
||||||
|
|
||||||
let mut cc = ClangWrapper::new("clang", "clang++");
|
let mut cc = ClangWrapper::new("clang", "clang++");
|
||||||
cc.from_args(&args)
|
cc.is_cpp(false)
|
||||||
|
.from_args(&args)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.add_link_arg("-Wl,--whole-archive".into())
|
.link_staticlib(&dir, "libfuzzer_libmozjpeg".into())
|
||||||
.unwrap()
|
|
||||||
.add_link_arg(
|
|
||||||
dir.join(format!("{}libfuzzer_libmozjpeg.{}", LIB_PREFIX, LIB_EXT))
|
|
||||||
.display()
|
|
||||||
.to_string(),
|
|
||||||
)
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-Wl,-no-whole-archive".into())
|
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.add_arg("-fsanitize-coverage=trace-pc-guard,trace-cmp".into())
|
.add_arg("-fsanitize-coverage=trace-pc-guard,trace-cmp".into())
|
||||||
.unwrap();
|
.unwrap();
|
||||||
#[cfg(windows)]
|
|
||||||
cc.add_link_arg("-lws2_32".into())
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-lBcrypt".into())
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-lAdvapi32".into())
|
|
||||||
.unwrap();
|
|
||||||
cc.run().unwrap();
|
cc.run().unwrap();
|
||||||
|
} else {
|
||||||
|
panic!("LibAFL CC: No Arguments given");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use libafl_cc::{ClangWrapper, CompilerWrapper, LIB_EXT, LIB_PREFIX};
|
use libafl_cc::{ClangWrapper, CompilerWrapper};
|
||||||
use std::env;
|
use std::env;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
@ -8,29 +8,15 @@ fn main() {
|
|||||||
dir.pop();
|
dir.pop();
|
||||||
|
|
||||||
let mut cc = ClangWrapper::new("clang", "clang++");
|
let mut cc = ClangWrapper::new("clang", "clang++");
|
||||||
cc.is_cpp()
|
cc.is_cpp(true)
|
||||||
.from_args(&args)
|
.from_args(&args)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.add_link_arg("-Wl,--whole-archive".into())
|
.link_staticlib(&dir, "libfuzzer_libmozjpeg".into())
|
||||||
.unwrap()
|
|
||||||
.add_link_arg(
|
|
||||||
dir.join(format!("{}libfuzzer_libmozjpeg.{}", LIB_PREFIX, LIB_EXT))
|
|
||||||
.display()
|
|
||||||
.to_string(),
|
|
||||||
)
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-Wl,-no-whole-archive".into())
|
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.add_arg("-fsanitize-coverage=trace-pc-guard,trace-cmp".into())
|
.add_arg("-fsanitize-coverage=trace-pc-guard,trace-cmp".into())
|
||||||
.unwrap();
|
.unwrap();
|
||||||
// Libraries needed by libafl on Windows
|
|
||||||
#[cfg(windows)]
|
|
||||||
cc.add_link_arg("-lws2_32".into())
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-lBcrypt".into())
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-lAdvapi32".into())
|
|
||||||
.unwrap();
|
|
||||||
cc.run().unwrap();
|
cc.run().unwrap();
|
||||||
|
} else {
|
||||||
|
panic!("LibAFL CC: No Arguments given");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use libafl_cc::{ClangWrapper, CompilerWrapper, LIB_EXT, LIB_PREFIX};
|
use libafl_cc::{ClangWrapper, CompilerWrapper};
|
||||||
use std::env;
|
use std::env;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
@ -8,28 +8,13 @@ fn main() {
|
|||||||
dir.pop();
|
dir.pop();
|
||||||
|
|
||||||
let mut cc = ClangWrapper::new("clang", "clang++");
|
let mut cc = ClangWrapper::new("clang", "clang++");
|
||||||
cc.from_args(&args)
|
cc.is_cpp(false)
|
||||||
|
.from_args(&args)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.add_link_arg("-Wl,--whole-archive".into())
|
.link_staticlib(&dir, "libfuzzer_libpng".into())
|
||||||
.unwrap()
|
|
||||||
.add_link_arg(
|
|
||||||
dir.join(format!("{}libfuzzer_libpng.{}", LIB_PREFIX, LIB_EXT))
|
|
||||||
.display()
|
|
||||||
.to_string(),
|
|
||||||
)
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-Wl,-no-whole-archive".into())
|
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.add_arg("-fsanitize-coverage=trace-pc-guard,trace-cmp".into())
|
.add_arg("-fsanitize-coverage=trace-pc-guard,trace-cmp".into())
|
||||||
.unwrap();
|
.unwrap();
|
||||||
// Libraries needed by libafl on Windows
|
|
||||||
#[cfg(windows)]
|
|
||||||
cc.add_link_arg("-lws2_32".into())
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-lBcrypt".into())
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-lAdvapi32".into())
|
|
||||||
.unwrap();
|
|
||||||
cc.run().unwrap();
|
cc.run().unwrap();
|
||||||
} else {
|
} else {
|
||||||
panic!("LibAFL CC: No Arguments given");
|
panic!("LibAFL CC: No Arguments given");
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use libafl_cc::{ClangWrapper, CompilerWrapper, LIB_EXT, LIB_PREFIX};
|
use libafl_cc::{ClangWrapper, CompilerWrapper};
|
||||||
use std::env;
|
use std::env;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
@ -8,29 +8,13 @@ fn main() {
|
|||||||
dir.pop();
|
dir.pop();
|
||||||
|
|
||||||
let mut cc = ClangWrapper::new("clang", "clang++");
|
let mut cc = ClangWrapper::new("clang", "clang++");
|
||||||
cc.is_cpp()
|
cc.is_cpp(true)
|
||||||
.from_args(&args)
|
.from_args(&args)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.add_link_arg("-Wl,--whole-archive".into())
|
.link_staticlib(&dir, "libfuzzer_libpng".into())
|
||||||
.unwrap()
|
|
||||||
.add_link_arg(
|
|
||||||
dir.join(format!("{}libfuzzer_libpng.{}", LIB_PREFIX, LIB_EXT))
|
|
||||||
.display()
|
|
||||||
.to_string(),
|
|
||||||
)
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-Wl,-no-whole-archive".into())
|
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.add_arg("-fsanitize-coverage=trace-pc-guard,trace-cmp".into())
|
.add_arg("-fsanitize-coverage=trace-pc-guard,trace-cmp".into())
|
||||||
.unwrap();
|
.unwrap();
|
||||||
// Libraries needed by libafl on Windows
|
|
||||||
#[cfg(windows)]
|
|
||||||
cc.add_link_arg("-lws2_32".into())
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-lBcrypt".into())
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-lAdvapi32".into())
|
|
||||||
.unwrap();
|
|
||||||
cc.run().unwrap();
|
cc.run().unwrap();
|
||||||
} else {
|
} else {
|
||||||
panic!("LibAFL CC: No Arguments given");
|
panic!("LibAFL CC: No Arguments given");
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use libafl_cc::{ClangWrapper, CompilerWrapper, LIB_EXT, LIB_PREFIX};
|
use libafl_cc::{ClangWrapper, CompilerWrapper};
|
||||||
use std::env;
|
use std::env;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
@ -8,28 +8,13 @@ fn main() {
|
|||||||
dir.pop();
|
dir.pop();
|
||||||
|
|
||||||
let mut cc = ClangWrapper::new("clang", "clang++");
|
let mut cc = ClangWrapper::new("clang", "clang++");
|
||||||
cc.from_args(&args)
|
cc.is_cpp(false)
|
||||||
|
.from_args(&args)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.add_link_arg("-Wl,--whole-archive".into())
|
.link_staticlib(&dir, "libfuzzer_libpng".into())
|
||||||
.unwrap()
|
|
||||||
.add_link_arg(
|
|
||||||
dir.join(format!("{}libfuzzer_libpng.{}", LIB_PREFIX, LIB_EXT))
|
|
||||||
.display()
|
|
||||||
.to_string(),
|
|
||||||
)
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-Wl,-no-whole-archive".into())
|
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.add_arg("-fsanitize-coverage=trace-pc-guard,trace-cmp".into())
|
.add_arg("-fsanitize-coverage=trace-pc-guard,trace-cmp".into())
|
||||||
.unwrap();
|
.unwrap();
|
||||||
// Libraries needed by libafl on Windows
|
|
||||||
#[cfg(windows)]
|
|
||||||
cc.add_link_arg("-lws2_32".into())
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-lBcrypt".into())
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-lAdvapi32".into())
|
|
||||||
.unwrap();
|
|
||||||
cc.run().unwrap();
|
cc.run().unwrap();
|
||||||
} else {
|
} else {
|
||||||
panic!("LibAFL CC: No Arguments given");
|
panic!("LibAFL CC: No Arguments given");
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use libafl_cc::{ClangWrapper, CompilerWrapper, LIB_EXT, LIB_PREFIX};
|
use libafl_cc::{ClangWrapper, CompilerWrapper};
|
||||||
use std::env;
|
use std::env;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
@ -8,29 +8,13 @@ fn main() {
|
|||||||
dir.pop();
|
dir.pop();
|
||||||
|
|
||||||
let mut cc = ClangWrapper::new("clang", "clang++");
|
let mut cc = ClangWrapper::new("clang", "clang++");
|
||||||
cc.is_cpp()
|
cc.is_cpp(true)
|
||||||
.from_args(&args)
|
.from_args(&args)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.add_link_arg("-Wl,--whole-archive".into())
|
.link_staticlib(&dir, "libfuzzer_libpng".into())
|
||||||
.unwrap()
|
|
||||||
.add_link_arg(
|
|
||||||
dir.join(format!("{}libfuzzer_libpng.{}", LIB_PREFIX, LIB_EXT))
|
|
||||||
.display()
|
|
||||||
.to_string(),
|
|
||||||
)
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-Wl,-no-whole-archive".into())
|
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.add_arg("-fsanitize-coverage=trace-pc-guard,trace-cmp".into())
|
.add_arg("-fsanitize-coverage=trace-pc-guard,trace-cmp".into())
|
||||||
.unwrap();
|
.unwrap();
|
||||||
// Libraries needed by libafl on Windows
|
|
||||||
#[cfg(windows)]
|
|
||||||
cc.add_link_arg("-lws2_32".into())
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-lBcrypt".into())
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-lAdvapi32".into())
|
|
||||||
.unwrap();
|
|
||||||
cc.run().unwrap();
|
cc.run().unwrap();
|
||||||
} else {
|
} else {
|
||||||
panic!("LibAFL CC: No Arguments given");
|
panic!("LibAFL CC: No Arguments given");
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use libafl_cc::{ClangWrapper, CompilerWrapper, LIB_EXT, LIB_PREFIX};
|
use libafl_cc::{ClangWrapper, CompilerWrapper};
|
||||||
use std::env;
|
use std::env;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
@ -8,28 +8,13 @@ fn main() {
|
|||||||
dir.pop();
|
dir.pop();
|
||||||
|
|
||||||
let mut cc = ClangWrapper::new("clang", "clang++");
|
let mut cc = ClangWrapper::new("clang", "clang++");
|
||||||
cc.from_args(&args)
|
cc.is_cpp(false)
|
||||||
|
.from_args(&args)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.add_link_arg("-Wl,--whole-archive".into())
|
.link_staticlib(&dir, "libfuzzer_libpng".into())
|
||||||
.unwrap()
|
|
||||||
.add_link_arg(
|
|
||||||
dir.join(format!("{}libfuzzer_libpng.{}", LIB_PREFIX, LIB_EXT))
|
|
||||||
.display()
|
|
||||||
.to_string(),
|
|
||||||
)
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-Wl,-no-whole-archive".into())
|
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.add_arg("-fsanitize-coverage=trace-pc-guard,trace-cmp".into())
|
.add_arg("-fsanitize-coverage=trace-pc-guard,trace-cmp".into())
|
||||||
.unwrap();
|
.unwrap();
|
||||||
// Libraries needed by libafl on Windows
|
|
||||||
#[cfg(windows)]
|
|
||||||
cc.add_link_arg("-lws2_32".into())
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-lBcrypt".into())
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-lAdvapi32".into())
|
|
||||||
.unwrap();
|
|
||||||
cc.run().unwrap();
|
cc.run().unwrap();
|
||||||
} else {
|
} else {
|
||||||
panic!("LibAFL CC: No Arguments given");
|
panic!("LibAFL CC: No Arguments given");
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use libafl_cc::{ClangWrapper, CompilerWrapper, LIB_EXT, LIB_PREFIX};
|
use libafl_cc::{ClangWrapper, CompilerWrapper};
|
||||||
use std::env;
|
use std::env;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
@ -8,29 +8,13 @@ fn main() {
|
|||||||
dir.pop();
|
dir.pop();
|
||||||
|
|
||||||
let mut cc = ClangWrapper::new("clang", "clang++");
|
let mut cc = ClangWrapper::new("clang", "clang++");
|
||||||
cc.is_cpp()
|
cc.is_cpp(true)
|
||||||
.from_args(&args)
|
.from_args(&args)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.add_link_arg("-Wl,--whole-archive".into())
|
.link_staticlib(&dir, "libfuzzer_libpng".into())
|
||||||
.unwrap()
|
|
||||||
.add_link_arg(
|
|
||||||
dir.join(format!("{}libfuzzer_libpng.{}", LIB_PREFIX, LIB_EXT))
|
|
||||||
.display()
|
|
||||||
.to_string(),
|
|
||||||
)
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-Wl,-no-whole-archive".into())
|
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.add_arg("-fsanitize-coverage=trace-pc-guard,trace-cmp".into())
|
.add_arg("-fsanitize-coverage=trace-pc-guard,trace-cmp".into())
|
||||||
.unwrap();
|
.unwrap();
|
||||||
// Libraries needed by libafl on Windows
|
|
||||||
#[cfg(windows)]
|
|
||||||
cc.add_link_arg("-lws2_32".into())
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-lBcrypt".into())
|
|
||||||
.unwrap()
|
|
||||||
.add_link_arg("-lAdvapi32".into())
|
|
||||||
.unwrap();
|
|
||||||
cc.run().unwrap();
|
cc.run().unwrap();
|
||||||
} else {
|
} else {
|
||||||
panic!("LibAFL CC: No Arguments given");
|
panic!("LibAFL CC: No Arguments given");
|
||||||
|
@ -20,9 +20,6 @@ pub mod pipes;
|
|||||||
#[cfg(all(unix, feature = "std"))]
|
#[cfg(all(unix, feature = "std"))]
|
||||||
use std::ffi::CString;
|
use std::ffi::CString;
|
||||||
|
|
||||||
#[cfg(all(feature = "std", any(target_os = "linux", target_os = "android")))]
|
|
||||||
use std::fs::File;
|
|
||||||
|
|
||||||
#[cfg(all(windows, feature = "std"))]
|
#[cfg(all(windows, feature = "std"))]
|
||||||
pub mod windows_exceptions;
|
pub mod windows_exceptions;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
//! Compiler Wrapper from `LibAFL`
|
//! Compiler Wrapper from `LibAFL`
|
||||||
|
|
||||||
use std::{process::Command, string::String, vec::Vec};
|
use std::{path::Path, process::Command, string::String, vec::Vec};
|
||||||
|
|
||||||
/// `LibAFL` CC Error Type
|
/// `LibAFL` CC Error Type
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
@ -42,6 +42,9 @@ pub trait CompilerWrapper {
|
|||||||
/// Add a compiler argument only when linking
|
/// Add a compiler argument only when linking
|
||||||
fn add_link_arg(&mut self, arg: String) -> Result<&'_ mut Self, Error>;
|
fn add_link_arg(&mut self, arg: String) -> Result<&'_ mut Self, Error>;
|
||||||
|
|
||||||
|
/// Link static C lib
|
||||||
|
fn link_staticlib(&mut self, dir: &Path, name: String) -> Result<&'_ mut Self, Error>;
|
||||||
|
|
||||||
/// Command to run the compiler
|
/// Command to run the compiler
|
||||||
fn command(&mut self) -> Result<Vec<String>, Error>;
|
fn command(&mut self) -> Result<Vec<String>, Error>;
|
||||||
|
|
||||||
@ -136,6 +139,14 @@ impl CompilerWrapper for ClangWrapper {
|
|||||||
// Fuzzing define common among tools
|
// Fuzzing define common among tools
|
||||||
new_args.push("-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION=1".into());
|
new_args.push("-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION=1".into());
|
||||||
|
|
||||||
|
// Libraries needed by libafl on Windows
|
||||||
|
#[cfg(windows)]
|
||||||
|
if linking {
|
||||||
|
new_args.push("-lws2_32".into());
|
||||||
|
new_args.push("-lBcrypt".into());
|
||||||
|
new_args.push("-lAdvapi32".into());
|
||||||
|
}
|
||||||
|
|
||||||
self.base_args = new_args;
|
self.base_args = new_args;
|
||||||
Ok(self)
|
Ok(self)
|
||||||
}
|
}
|
||||||
@ -155,6 +166,16 @@ impl CompilerWrapper for ClangWrapper {
|
|||||||
Ok(self)
|
Ok(self)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn link_staticlib(&mut self, dir: &Path, name: String) -> Result<&'_ mut Self, Error> {
|
||||||
|
self.add_link_arg("-Wl,--whole-archive".into())?
|
||||||
|
.add_link_arg(
|
||||||
|
dir.join(format!("{}{}.{}", LIB_PREFIX, name, LIB_EXT))
|
||||||
|
.display()
|
||||||
|
.to_string(),
|
||||||
|
)?
|
||||||
|
.add_link_arg("-Wl,-no-whole-archive".into())
|
||||||
|
}
|
||||||
|
|
||||||
fn command(&mut self) -> Result<Vec<String>, Error> {
|
fn command(&mut self) -> Result<Vec<String>, Error> {
|
||||||
let mut args = vec![];
|
let mut args = vec![];
|
||||||
if self.is_cpp {
|
if self.is_cpp {
|
||||||
@ -207,9 +228,9 @@ impl ClangWrapper {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
/// set cpp mode
|
/// Set cpp mode
|
||||||
pub fn is_cpp(&mut self) -> &'_ mut Self {
|
pub fn is_cpp(&mut self, value: bool) -> &'_ mut Self {
|
||||||
self.is_cpp = true;
|
self.is_cpp = value;
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user