diff --git a/libafl_bolts/src/serdeany.rs b/libafl_bolts/src/serdeany.rs index 8f5ce021ee..82baf49dbb 100644 --- a/libafl_bolts/src/serdeany.rs +++ b/libafl_bolts/src/serdeany.rs @@ -643,12 +643,12 @@ pub use serdeany_registry::*; /// /// Do nothing for without the `serdeany_autoreg` feature, you'll have to register it manually /// in `main()` with [`RegistryBuilder::register`] or using `::register()`. +#[cfg(all(feature = "serdeany_autoreg", not(miri)))] #[macro_export] macro_rules! create_register { ($struct_type:ty) => { const _: () = { /// Automatically register this type - #[cfg(all(feature = "serdeany_autoreg", not(miri)))] #[$crate::ctor] fn register() { // # Safety @@ -661,6 +661,16 @@ macro_rules! create_register { }; } +/// Register a `SerdeAny` type in the [`RegistryBuilder`] +/// +/// Do nothing for without the `serdeany_autoreg` feature, you'll have to register it manually +/// in `main()` with [`RegistryBuilder::register`] or using `::register()`. +#[cfg(not(all(feature = "serdeany_autoreg", not(miri))))] +#[macro_export] +macro_rules! create_register { + ($struct_type:ty) => {}; +} + /// Implement a [`SerdeAny`], registering it in the [`RegistryBuilder`] when on std #[macro_export] macro_rules! impl_serdeany { diff --git a/libafl_libfuzzer/Cargo.toml b/libafl_libfuzzer/Cargo.toml index 26e099e5e4..ffbfe10b4f 100644 --- a/libafl_libfuzzer/Cargo.toml +++ b/libafl_libfuzzer/Cargo.toml @@ -25,7 +25,6 @@ rustversion = "1.0" [features] #! ## Feature Flags -document-features = ["dep:document-features"] ## Enables the derive macros for the arbitrary dependency, transparently forwarded from libfuzzer-sys arbitrary-derive = ["libfuzzer-sys/arbitrary-derive"] @@ -34,7 +33,7 @@ introspection = [] [dependencies] libfuzzer-sys = { version = "0.4.7", default-features = false } -document-features = { version = "0.2", optional = true } +document-features = { version = "0.2" } [package.metadata.docs.rs] features = ["document-features"] diff --git a/libafl_libfuzzer/build.rs b/libafl_libfuzzer/build.rs index 387479874e..962488e9c9 100644 --- a/libafl_libfuzzer/build.rs +++ b/libafl_libfuzzer/build.rs @@ -41,7 +41,7 @@ fn main() { command.arg("build"); - let mut features = vec!["serdeany_autoreg"]; + let mut features = vec![]; if cfg!(any(feature = "fork")) { features.push("fork"); @@ -50,13 +50,15 @@ fn main() { features.push("libafl/introspection"); } + if features.is_empty() { + command.arg("--features").arg(features.join(",")); + } + command .arg("--release") .arg("--no-default-features") .arg("--target-dir") .arg(&custom_lib_dir) - .arg("--features") - .arg(features.join(",")) .arg("--target") .arg(std::env::var_os("TARGET").unwrap()); diff --git a/libafl_libfuzzer/libafl_libfuzzer_runtime/Cargo.toml b/libafl_libfuzzer/libafl_libfuzzer_runtime/Cargo.toml index 49f6b576e5..979f433ec3 100644 --- a/libafl_libfuzzer/libafl_libfuzzer_runtime/Cargo.toml +++ b/libafl_libfuzzer/libafl_libfuzzer_runtime/Cargo.toml @@ -7,12 +7,10 @@ publish = false # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [features] -default = ["fork", "serdeany_autoreg"] +default = ["fork"] ## Enables forking mode for the LibAFL launcher (instead of starting new processes) fork = ["libafl/fork"] -serdeany_autoreg = [] # TODO: drop this when fixed in libafl proper - [profile.release] lto = true codegen-units = 1 diff --git a/libafl_libfuzzer/libafl_libfuzzer_runtime/src/lib.rs b/libafl_libfuzzer/libafl_libfuzzer_runtime/src/lib.rs index 0e687427d1..f150d82aa7 100644 --- a/libafl_libfuzzer/libafl_libfuzzer_runtime/src/lib.rs +++ b/libafl_libfuzzer/libafl_libfuzzer_runtime/src/lib.rs @@ -81,9 +81,6 @@ use libafl_bolts::AsSlice; use crate::options::{LibfuzzerMode, LibfuzzerOptions}; -#[cfg(not(feature = "serdeany_autoreg"))] -compile_error!("serdeany_autoreg feature must be enabled."); - mod feedbacks; mod fuzz; mod merge; diff --git a/libafl_libfuzzer/src/lib.rs b/libafl_libfuzzer/src/lib.rs index a4c496ebf6..be0df15c20 100644 --- a/libafl_libfuzzer/src/lib.rs +++ b/libafl_libfuzzer/src/lib.rs @@ -2,7 +2,7 @@ //! //! ## Usage //! -//! To use LibAFL in place of libfuzzer, change the following line in your fuzz/Cargo.toml: +//! To use `LibAFL` in place of `LibFuzzer`, change the following line in your `fuzz/Cargo.toml`: //! //! ```toml //! libfuzzer-sys = { version = "*", features = [...] } @@ -14,12 +14,15 @@ //! libfuzzer-sys = { version = "*", features = [...], package = "libafl_libfuzzer" } //! ``` //! -//! To use bleeding changes from upstream, use the following: +//! To use bleeding-edge changes from upstream, use the following: //! //! ```toml //! libfuzzer-sys = { version = "*", features = [...], package = "libafl_libfuzzer", git = "https://github.com/AFLplusplus/LibAFL" } //! ``` //! +//! You could also specify a specific git revision using `rev = "..."` in this case. +//! +//! //! ## Flags //! //! You can pass additional flags to the libfuzzer runtime in `cargo-fuzz` like so: