diff --git a/fuzzers/FRET/Cargo.toml b/fuzzers/FRET/Cargo.toml index a3549f3419..bb1f7cb8d4 100644 --- a/fuzzers/FRET/Cargo.toml +++ b/fuzzers/FRET/Cargo.toml @@ -35,6 +35,7 @@ feed_genetic = [] gensize_1 = [ ] gensize_10 = [ ] gensize_100 = [ ] +gensize_1000 = [ ] # schedulers sched_genetic = [] sched_afl = [] diff --git a/fuzzers/FRET/benchmark/Snakefile b/fuzzers/FRET/benchmark/Snakefile index 7d80342676..6c80f4eb30 100644 --- a/fuzzers/FRET/benchmark/Snakefile +++ b/fuzzers/FRET/benchmark/Snakefile @@ -66,6 +66,24 @@ rule build_feedgeneration100: shell: "cargo build --target-dir {output} {def_flags},config_genetic,gensize_100" +rule build_genetic100: + output: + directory("bins/target_genetic100") + shell: + "cargo build --target-dir {output} {def_flags},config_genetic,mutate_stg,gensize_100" + +rule build_feedgeneration1000: + output: + directory("bins/target_feedgeneration100") + shell: + "cargo build --target-dir {output} {def_flags},config_genetic,gensize_1000" + +rule build_genetic1000: + output: + directory("bins/target_genetic100") + shell: + "cargo build --target-dir {output} {def_flags},config_genetic,mutate_stg,gensize_1000" + rule run_bench: input: "build/{target}.elf", @@ -169,68 +187,12 @@ rule trace2gantt: shell: "Rscript $(pwd)/../../../../state2gantt/plot_response.r {input[0]} {input[1]} html" -rule all_main: - input: - expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['random','afl','feedgeneration10','state'], target=['waters','watersv2'],num=range(0,3)) - -rule all_main_int: - input: - expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['random','afl','feedgeneration10','state'], target=['waters_int','watersv2_int'],num=range(0,4)) - -rule all_compare_feedgeneration: - input: - expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['feedgeneration1','feedgeneration10','feedgeneration100'], target=['waters_int','watersv2'],num=range(0,10)) - -rule all_compare_feedgeneration_int: - input: - expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['feedgeneration1','feedgeneration10','feedgeneration100'], target=['waters_int','watersv2_int'],num=range(0,10)) - -rule all_compare_afl: - input: - expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['afl','frafl','feedlongest'], target=['waters','watersv2'],num=range(0,10)) - -rule all_compare_afl_int: - input: - expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['afl','frafl','feedlongest'], target=['waters_int','watersv2_int'],num=range(0,10)) - -rule all_images: - input: - expand("{remote}timedump/{fuzzer}/{target}.{num}.trace.csv.png",remote=remote, fuzzer=['frafl','feedgeneration10','state'], target=['waters'],num=range(0,3)) - -rule all_images_int: - input: - expand("{remote}timedump/{fuzzer}/{target}.{num}.trace.csv.png",remote=remote, fuzzer=['frafl','feedgeneration10','state'], target=['waters_int'],num=range(0,3)) - -rule clusterfuzz: - input: - expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['random','afl','feedgeneration10','state'], target=['waters','watersv2'],num=MY_RANGE_A), - expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['random','afl','feedgeneration10','state'], target=['waters_int','watersv2_int'],num=MY_RANGE_A), - expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['feedgeneration1','feedgeneration10','feedgeneration100'], target=['waters_int','watersv2'],num=MY_RANGE_B), - expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['feedgeneration1','feedgeneration10','feedgeneration100'], target=['waters_int','watersv2_int'],num=MY_RANGE_B), - expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['afl','frafl','feedlongest'], target=['waters','watersv2'],num=MY_RANGE_B), - expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['afl','frafl','feedlongest'], target=['waters_int','watersv2_int'],num=MY_RANGE_B), - -rule all_new: - input: - expand("timedump/{fuzzer}/{target}#{num}.time", fuzzer=['feedgeneration100', 'frafl', 'stg'], target=['waters_seq', 'watersv2_seq', 'waters_par', 'watersv2_par'],num=range(0,2)), - expand("timedump/{fuzzer}/{target}#{num}.time", fuzzer=['feedgeneration100', 'frafl', 'stg'], target=['waters_seq_int', 'watersv2_seq_int', 'waters_par_int', 'watersv2_par_int'],num=range(0,2)), - # expand("timedump/{fuzzer}/{target}#{num}.time", fuzzer=['random', 'stgpath'], target=['waters', 'watersv2'],num=range(0,3)), - # expand("timedump/{fuzzer}/{target}#{num}.time", fuzzer=['random_int', 'stgpath_int'], target=['waters_int', 'watersv2_int'],num=range(0,3)) - -rule all_showmap: - input: - expand("{remote}timedump/{fuzzer}/{target}#{num}_case.trace.ron",remote=remote, fuzzer=['frafl', 'stg'], target=['watersv2'],num=range(2,3)), - expand("{remote}timedump/{fuzzer}/{target}#{num}_case.trace.ron",remote=remote, fuzzer=['frafl', 'stg'], target=['watersv2_int'],num=range(0,3)), - expand("{remote}timedump/{fuzzer}/{target}#{num}_case.trace.ron",remote=remote, fuzzer=['random', 'stgpath'], target=['watersv2'],num=range(0,1)), - expand("{remote}timedump/{fuzzer}/{target}#{num}_case.trace.ron",remote=remote, fuzzer=['random', 'stgpath'], target=['watersv2_int'],num=range(0,1)) - rule quicktest: input: - expand("timedump/{fuzzer}/{target}#{num}.time", fuzzer=['feedgeneration100', 'frafl', 'stg'], target=['release'],num=range(0,1)), - expand("timedump/{fuzzer}/{target}#{num}.time", fuzzer=['random', 'stgpath'], target=['release'],num=range(0,1)) - + expand("timedump/{fuzzer}/{target}#{num}.time", fuzzer=['random', 'feedgeneration100', 'feedgeneration1000', 'frafl', 'stg'], target=['waters_seq', 'watersv2_seq', 'waters_par', 'watersv2_par'],num=range(0,1)), + expand("timedump/{fuzzer}/{target}#{num}.time", fuzzer=['random', 'feedgeneration100', 'feedgeneration1000', 'genetic100', 'genetic1000', 'frafl', 'stg'], target=['waters_seq_int', 'watersv2_seq_int', 'waters_par_int', 'watersv2_par_int', 'release'],num=range(0,1)), rule all_bins: input: - expand("bins/target_{target}",target=['random','frafl','stg','stgpath','feedgeneration100']) + expand("bins/target_{target}",target=['random','frafl','stg','stgpath','feedgeneration100', 'feedgeneration1000', 'genetic100', 'genetic1000']) diff --git a/fuzzers/FRET/benchmark/build_all_bins.sh b/fuzzers/FRET/benchmark/build_all_bins.sh index 97348af343..d09f95e574 100644 --- a/fuzzers/FRET/benchmark/build_all_bins.sh +++ b/fuzzers/FRET/benchmark/build_all_bins.sh @@ -9,4 +9,7 @@ cargo build --target-dir ./bins/target_stgpath ${def_flags},feed_stg_abbhash,sch cargo build --target-dir ./bins/target_feedgeneration1 ${def_flags},feed_genetic,gensize_1 cargo build --target-dir ./bins/target_feedgeneration10 ${def_flags},feed_genetic,gensize_10 cargo build --target-dir ./bins/target_feedgeneration100 ${def_flags},feed_genetic,gensize_100 +cargo build --target-dir ./bins/target_feedgeneration1000 ${def_flags},feed_genetic,gensize_1000 +cargo build --target-dir ./bins/target_genetic100 ${def_flags},feed_genetic,mutate_stg,gensize_100 +cargo build --target-dir ./bins/target_genetic1000 ${def_flags},feed_genetic,mutate_stg,gensize_1000 diff --git a/fuzzers/FRET/src/systemstate/schedulers.rs b/fuzzers/FRET/src/systemstate/schedulers.rs index f0a6932789..f735bf9d2a 100644 --- a/fuzzers/FRET/src/systemstate/schedulers.rs +++ b/fuzzers/FRET/src/systemstate/schedulers.rs @@ -269,9 +269,18 @@ impl GenerationScheduler { #[allow(unused)] pub fn new() -> Self { + let gen_size = 100; + #[cfg(feature = "gensize_1")] + let gen_size= 1; + #[cfg(feature = "gensize_10")] + let gen_size= 10; + #[cfg(feature = "gensize_100")] + let gen_size= 100; + #[cfg(feature = "gensize_1000")] + let gen_size= 1000; Self { phantom: PhantomData, - gen_size: 100, + gen_size } } }