fuzz: add threads flag
This commit is contained in:
parent
9c433919fc
commit
fd94a6c493
|
@ -300,6 +300,7 @@ dependencies = [
|
|||
name = "ppc750cl-fuzz"
|
||||
version = "0.2.0"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"num_cpus",
|
||||
"ppc750cl",
|
||||
]
|
||||
|
|
|
@ -8,5 +8,6 @@ description = "Complete fuzzer for ppc750cl"
|
|||
repository = "https://github.com/terorie/ppc750cl"
|
||||
|
||||
[dependencies]
|
||||
clap = "3"
|
||||
num_cpus = "1.13"
|
||||
ppc750cl = { path = "../disasm", version = "0.2.0" }
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
use std::io::Write;
|
||||
use std::ops::Range;
|
||||
use std::str::FromStr;
|
||||
use std::sync::atomic::{AtomicU32, Ordering};
|
||||
use std::sync::Arc;
|
||||
use std::time::{Duration, Instant};
|
||||
|
@ -8,8 +9,24 @@ use ppc750cl::formatter::FormattedIns;
|
|||
use ppc750cl::Ins;
|
||||
|
||||
fn main() {
|
||||
let matches = clap::Command::new("ppc750cl-fuzz")
|
||||
.version("0.2.0")
|
||||
.about("Complete \"fuzzer\" for ppc750cl disassembler")
|
||||
.arg(
|
||||
clap::Arg::new("threads")
|
||||
.short('t')
|
||||
.long("--threads")
|
||||
.takes_value(true)
|
||||
.help("Number of threads to use (default num CPUs)"),
|
||||
)
|
||||
.get_matches();
|
||||
|
||||
let threads = match matches.value_of("threads") {
|
||||
Some(t) => u32::from_str(t).expect("invalid threads flag"),
|
||||
None => num_cpus::get() as u32,
|
||||
};
|
||||
let start = Instant::now();
|
||||
let fuzzer = MultiFuzzer::new(num_cpus::get() as u32);
|
||||
let fuzzer = MultiFuzzer::new(threads);
|
||||
fuzzer.run();
|
||||
println!("Finished in {:.2}s", start.elapsed().as_secs_f32());
|
||||
}
|
||||
|
|
|
@ -534,18 +534,13 @@ impl Isa {
|
|||
let use_match_arms = token_stream!(use_match_arms);
|
||||
let suffix_match_arms = token_stream!(suffix_match_arms);
|
||||
let simplified_ins_match_arms = token_stream!(simplified_ins_match_arms);
|
||||
let field_accessors = self
|
||||
.fields
|
||||
.iter()
|
||||
.map(|field| field.construct_accessor())
|
||||
.collect::<Vec<_>>();
|
||||
let field_accessors = token_stream!(field_accessors);
|
||||
let modifier_accessors = self
|
||||
.modifiers
|
||||
.iter()
|
||||
.map(|modifier| modifier.construct_accessor())
|
||||
.collect::<Vec<_>>();
|
||||
let modifier_accessors = token_stream!(modifier_accessors);
|
||||
let field_accessors =
|
||||
TokenStream::from_iter(self.fields.iter().map(|field| field.construct_accessor()));
|
||||
let modifier_accessors = TokenStream::from_iter(
|
||||
self.modifiers
|
||||
.iter()
|
||||
.map(|modifier| modifier.construct_accessor()),
|
||||
);
|
||||
// Generate final fields function.
|
||||
let ins_impl = quote! {
|
||||
#[allow(clippy::all, unused_mut)]
|
||||
|
|
Loading…
Reference in New Issue