Fixes for serdeany_autoreg (#1479)
* fixes for serdeany_autoreg * fmt * yet more docs --------- Co-authored-by: Dominik Maier <dmnk@google.com>
This commit is contained in:
parent
5710c8b28a
commit
9149d69699
@ -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 `<T>::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 `<T>::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 {
|
||||
|
@ -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"]
|
||||
|
@ -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());
|
||||
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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:
|
||||
|
Loading…
x
Reference in New Issue
Block a user