diff --git a/fuzzers/FRET/benchmark/Snakefile b/fuzzers/FRET/benchmark/Snakefile index cf8141c864..a9ccedd957 100644 --- a/fuzzers/FRET/benchmark/Snakefile +++ b/fuzzers/FRET/benchmark/Snakefile @@ -1,6 +1,6 @@ import csv import os -def_flags="--no-default-features --features std,snapshot_fast,restarting,do_hash_notify_state,trace_job_response_times,fuzz_int,shortcut" +def_flags="--release --no-default-features --features std,snapshot_fast,restarting,do_hash_notify_state,trace_job_response_times,fuzz_int,shortcut" remote="remote/" RUNTIME=1800 TARGET_REPS_A=2 @@ -12,77 +12,110 @@ NODE_ID= 0 if os.getenv('NODE_ID') == None else int(os.environ['NODE_ID']) MY_RANGE_A=range(NODE_ID*REP_PER_NODE_A,(NODE_ID+1)*REP_PER_NODE_A) MY_RANGE_B=range(NODE_ID*REP_PER_NODE_B,(NODE_ID+1)*REP_PER_NODE_B) +rule build_default: + input: + "../Cargo.toml", + "../src" + output: + directory("bins/target_default") + shell: + "cargo build --target-dir {output} {def_flags}" + rule build_showmap: + input: + "bins/target_default" output: directory("bins/target_showmap") shell: - "cargo build --target-dir {output} {def_flags},config_stg" + "cp -r -a --reflink=auto {input} {output} && cargo build --target-dir {output} {def_flags},config_stg" rule build_random: + input: + "bins/target_default" output: directory("bins/target_random") shell: - "cargo build --target-dir {output} {def_flags},feed_longest" + "cp -r -a --reflink=auto {input} {output} && cargo build --target-dir {output} {def_flags},feed_longest" rule build_frafl: + input: + "bins/target_default" output: directory("bins/target_frafl") shell: - "cargo build --target-dir {output} {def_flags},config_frafl,feed_longest" + "cp -r -a --reflink=auto {input} {output} && cargo build --target-dir {output} {def_flags},config_frafl,feed_longest" rule build_afl: + input: + "bins/target_default" output: directory("bins/target_afl") shell: - "cargo build --target-dir {output} {def_flags},config_afl,observer_hitcounts" + "cp -r -a --reflink=auto {input} {output} && cargo build --target-dir {output} {def_flags},config_afl,observer_hitcounts" rule build_stg: + input: + "bins/target_default" output: directory("bins/target_stg") shell: - "cargo build --target-dir {output} {def_flags},config_stg" + "cp -r -a --reflink=auto {input} {output} && cargo build --target-dir {output} {def_flags},config_stg" rule build_stgpath: + input: + "bins/target_default" output: directory("bins/target_stgpath") shell: - "cargo build --target-dir {output} {def_flags},feed_stg_abbhash,sched_stg_abbhash,mutate_stg" + "cp -r -a --reflink=auto {input} {output} && cargo build --target-dir {output} {def_flags},feed_stg_abbhash,sched_stg_abbhash,mutate_stg" rule build_feedgeneration1: + input: + "bins/target_default" output: directory("bins/target_feedgeneration1") shell: - "cargo build --target-dir {output} {def_flags},feed_genetic,gensize_1" + "cp -r -a --reflink=auto {input} {output} && cargo build --target-dir {output} {def_flags},feed_genetic,gensize_1" rule build_feedgeneration10: + input: + "bins/target_default" output: directory("bins/target_feedgeneration10") shell: - "cargo build --target-dir {output} {def_flags},feed_genetic,gensize_10" + "cp -r -a --reflink=auto {input} {output} && cargo build --target-dir {output} {def_flags},feed_genetic,gensize_10" rule build_feedgeneration100: + input: + "bins/target_default" output: directory("bins/target_feedgeneration100") shell: - "cargo build --target-dir {output} {def_flags},config_genetic,gensize_100" + "cp -r -a --reflink=auto {input} {output} && cargo build --target-dir {output} {def_flags},config_genetic,gensize_100" rule build_genetic100: + input: + "bins/target_default" output: directory("bins/target_genetic100") shell: - "cargo build --target-dir {output} {def_flags},config_genetic,mutate_stg,gensize_100" + "cp -r -a --reflink=auto {input} {output} && cargo build --target-dir {output} {def_flags},config_genetic,mutate_stg,gensize_100" rule build_feedgeneration1000: + input: + "bins/target_default" output: directory("bins/target_feedgeneration1000") shell: - "cargo build --target-dir {output} {def_flags},config_genetic,gensize_1000" + "cp -r -a --reflink=auto {input} {output} && cargo build --target-dir {output} {def_flags},config_genetic,gensize_1000" rule build_genetic1000: + input: + "bins/target_default" output: directory("bins/target_genetic1000") shell: - "cargo build --target-dir {output} {def_flags},config_genetic,mutate_stg,gensize_1000" + "cp -r -a --reflink=auto {input} {output} && cargo build --target-dir {output} {def_flags},config_genetic,mutate_stg,gensize_1000" rule run_bench: input: @@ -107,8 +140,8 @@ rule run_bench: export RUST_BACKTRACE=1 mkdir -p $(dirname {output[0]}) set +e - echo $(pwd)/{input[1]}/debug/fret -n $(pwd)/timedump/{wildcards.fuzzer}/{wildcards.target}#{wildcards.num} -s {select_task} -t -a -g -k {input[0]} -c ./target_symbols.csv fuzz --random -t {RUNTIME} -s {wildcards.num} - $(pwd)/{input[1]}/debug/fret -n $(pwd)/timedump/{wildcards.fuzzer}/{wildcards.target}#{wildcards.num} -s {select_task} -t -a -g -k {input[0]} -c ./target_symbols.csv fuzz --random -t {RUNTIME} -s {wildcards.num} > {output[1]} 2>&1 + echo $(pwd)/{input[1]}/release/fret -n $(pwd)/timedump/{wildcards.fuzzer}/{wildcards.target}#{wildcards.num} -s {select_task} -t -a -g -k {input[0]} -c ./target_symbols.csv fuzz --random -t {RUNTIME} -s {wildcards.num} + $(pwd)/{input[1]}/release/fret -n $(pwd)/timedump/{wildcards.fuzzer}/{wildcards.target}#{wildcards.num} -s {select_task} -t -a -g -k {input[0]} -c ./target_symbols.csv fuzz --random -t {RUNTIME} -s {wildcards.num} > {output[1]} 2>&1 exit 0 """ else: @@ -116,8 +149,8 @@ rule run_bench: export RUST_BACKTRACE=1 mkdir -p $(dirname {output[0]}) set +e - echo $(pwd)/{input[1]}/debug/fret -n $(pwd)/timedump/{wildcards.fuzzer}/{wildcards.target}#{wildcards.num} -s {select_task} -t -a -g -k {input[0]} -c ./target_symbols.csv fuzz -t {RUNTIME} -s {wildcards.num} - $(pwd)/{input[1]}/debug/fret -n $(pwd)/timedump/{wildcards.fuzzer}/{wildcards.target}#{wildcards.num} -s {select_task} -t -a -g -k {input[0]} -c ./target_symbols.csv fuzz -t {RUNTIME} -s {wildcards.num} > {output[1]} 2>&1 + echo $(pwd)/{input[1]}/release/fret -n $(pwd)/timedump/{wildcards.fuzzer}/{wildcards.target}#{wildcards.num} -s {select_task} -t -a -g -k {input[0]} -c ./target_symbols.csv fuzz -t {RUNTIME} -s {wildcards.num} + $(pwd)/{input[1]}/release/fret -n $(pwd)/timedump/{wildcards.fuzzer}/{wildcards.target}#{wildcards.num} -s {select_task} -t -a -g -k {input[0]} -c ./target_symbols.csv fuzz -t {RUNTIME} -s {wildcards.num} > {output[1]} 2>&1 exit 0 """ shell(script) @@ -143,7 +176,7 @@ rule run_showmap: bkp=line['return_function'] select_task=line['select_task'] script=""" - export FUZZER=$(pwd)/{input[1]}/debug/fret + export FUZZER=$(pwd)/{input[1]}/release/fret mkdir -p $(dirname {output}) set +e echo $FUZZER -n $(pwd)/{remote}/timedump/{wildcards.fuzzer}/{wildcards.target}#{wildcards.num}_case -s {select_task} -t -a -r -g -k {input[0]} -c ./target_symbols.csv showmap -i {input[2]}