diff --git a/fuzzers/FRET/benchmark/Snakefile b/fuzzers/FRET/benchmark/Snakefile index 6f3b07390c..fdca4c280a 100644 --- a/fuzzers/FRET/benchmark/Snakefile +++ b/fuzzers/FRET/benchmark/Snakefile @@ -170,10 +170,10 @@ rule run_showmap: run: with open('target_symbols.csv') as csvfile: reader = csv.DictReader(csvfile) - line = next((x for x in reader if x['kernel']==wildcards.target), None) + line = next((x for x in reader if x['\ufeffkernel']==wildcards.target), None) if line == None: return False - kernel=line['kernel'] + kernel=line['\ufeffkernel'] fuzz_main=line['main_function'] fuzz_input=line['input_symbol'] fuzz_len=line['input_size'] @@ -196,19 +196,21 @@ rule run_showmap: rule tarnsform_trace: input: - "{remote}timedump/{fuzzer}/{target}.{num}.trace.ron" + "{remote}timedump/{fuzzer}/{target}#{num}_case.trace.ron", output: - "{remote}timedump/{fuzzer}/{target}.{num}.trace.csv" + "{remote}timedump/{fuzzer}/{target}#{num}_case.jobs.csv", + "{remote}timedump/{fuzzer}/{target}#{num}_case.resp.csv" shell: - "$(pwd)/../../../../state2gantt/target/debug/state2gantt {input} {output[0]} {output[0]}2" + "$(pwd)/../../../../state2gantt/target/debug/state2gantt {input} {output[0]} {output[1]}" rule trace2gantt: input: - "{remote}timedump/{fuzzer}/{target}.{num}.trace.csv" + "{remote}timedump/{fuzzer}/{target}#{num}_case.jobs.csv", + "{remote}timedump/{fuzzer}/{target}#{num}_case.resp.csv" output: - "{remote}timedump/{fuzzer}/{target}.{num}.trace.csv.png" + "{remote}timedump/{fuzzer}/{target}#{num}_case.jobs.html", shell: - "Rscript --vanilla $(pwd)/../../../../state2gantt/gantt.R {input}" + "Rscript $(pwd)/../../../../state2gantt/plot_response.r {input[0]} {input[1]} html" rule all_main: input: diff --git a/fuzzers/FRET/benchmark/build_all_demos.sh b/fuzzers/FRET/benchmark/build_all_demos.sh index 7a79349f90..ae018b6382 100644 --- a/fuzzers/FRET/benchmark/build_all_demos.sh +++ b/fuzzers/FRET/benchmark/build_all_demos.sh @@ -4,12 +4,24 @@ cp ../../../../FreeRTOS/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC/build/RTOSDemo.axf make -C ../../../../FreeRTOS/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC clean && make -C ../../../../FreeRTOS/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC WATERS_DEMO=1 INTERRUPT_ACTIVATION=0 cp ../../../../FreeRTOS/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC/build/RTOSDemo.axf build/waters.elf +make -C ../../../../FreeRTOS/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC clean && make -C ../../../../FreeRTOS/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC WATERSPART_DEMO=1 INTERRUPT_ACTIVATION=1 +cp ../../../../FreeRTOS/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC/build/RTOSDemo.axf build/waterspart_int.elf + +make -C ../../../../FreeRTOS/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC clean && make -C ../../../../FreeRTOS/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC WATERSPART_DEMO=1 INTERRUPT_ACTIVATION=0 +cp ../../../../FreeRTOS/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC/build/RTOSDemo.axf build/waterspart.elf + make -C ../../../../FreeRTOS/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC clean && make -C ../../../../FreeRTOS/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC WATERSV2_DEMO=1 INTERRUPT_ACTIVATION=1 cp ../../../../FreeRTOS/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC/build/RTOSDemo.axf build/watersv2_int.elf make -C ../../../../FreeRTOS/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC clean && make -C ../../../../FreeRTOS/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC WATERSV2_DEMO=1 INTERRUPT_ACTIVATION=0 cp ../../../../FreeRTOS/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC/build/RTOSDemo.axf build/watersv2.elf +make -C ../../../../FreeRTOS/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC clean && make -C ../../../../FreeRTOS/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC WATERSPARTV2_DEMO=1 INTERRUPT_ACTIVATION=1 +cp ../../../../FreeRTOS/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC/build/RTOSDemo.axf build/waterspartv2_int.elf + +make -C ../../../../FreeRTOS/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC clean && make -C ../../../../FreeRTOS/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC WATERSPARTV2_DEMO=1 INTERRUPT_ACTIVATION=0 +cp ../../../../FreeRTOS/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC/build/RTOSDemo.axf build/waterspartv2.elf + make -C ../../../../FreeRTOS/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC clean && make -C ../../../../FreeRTOS/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC INTERACT_DEMO=1 INTERRUPT_ACTIVATION=1 cp ../../../../FreeRTOS/FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC/build/RTOSDemo.axf build/interact_int.elf diff --git a/fuzzers/FRET/benchmark/plot_all_benchmarks.sh b/fuzzers/FRET/benchmark/plot_all_benchmarks.sh index e5ffadd510..a12e872625 100644 --- a/fuzzers/FRET/benchmark/plot_all_benchmarks.sh +++ b/fuzzers/FRET/benchmark/plot_all_benchmarks.sh @@ -2,6 +2,10 @@ Rscript plot_multi.r remote waters ~/code/FRET/LibAFL/fuzzers/FRET/benchmark/rem Rscript plot_multi.r remote waters_int ~/code/FRET/LibAFL/fuzzers/FRET/benchmark/remote & Rscript plot_multi.r remote watersv2 ~/code/FRET/LibAFL/fuzzers/FRET/benchmark/remote & Rscript plot_multi.r remote watersv2_int ~/code/FRET/LibAFL/fuzzers/FRET/benchmark/remote & +Rscript plot_multi.r remote waterspart ~/code/FRET/LibAFL/fuzzers/FRET/benchmark/remote & +Rscript plot_multi.r remote waterspart_int ~/code/FRET/LibAFL/fuzzers/FRET/benchmark/remote & +Rscript plot_multi.r remote waterspartv2 ~/code/FRET/LibAFL/fuzzers/FRET/benchmark/remote & +Rscript plot_multi.r remote waterspartv2_int ~/code/FRET/LibAFL/fuzzers/FRET/benchmark/remote & Rscript plot_multi.r remote interact ~/code/FRET/LibAFL/fuzzers/FRET/benchmark/remote & Rscript plot_multi.r remote interact_int ~/code/FRET/LibAFL/fuzzers/FRET/benchmark/remote & wait \ No newline at end of file diff --git a/fuzzers/FRET/benchmark/plot_all_traces.sh b/fuzzers/FRET/benchmark/plot_all_traces.sh index 001451e833..a07b7e7e30 100644 --- a/fuzzers/FRET/benchmark/plot_all_traces.sh +++ b/fuzzers/FRET/benchmark/plot_all_traces.sh @@ -1,14 +1,28 @@ #!/usr/bin/env bash -find ./remote/timedump -type 'f' -iregex '.*case' | while IFS="" read -r p || [ -n "$p" ] +declare -a PLOTS +COUNT=0 +while IFS="" read -r p || [ -n "$p" ]; do - N=$(dirname "$p")/$(basename -s .case "$p") + if [[ -z "$p" ]]; then + continue + fi + N="$(dirname "$p")/$(basename -s .case "$p")" T="${N}_case.trace.ron" P="${N}_case" - echo $N - if [ ! -f "$T" ]; then - snakemake -c1 "$T" - fi - if [ ! -f "$P.html" ]; then - ~/code/FRET/state2gantt/driver.sh "$T" - fi -done + H="${N}_case.jobs.html" + echo "$COUNT $p -> $H" + IFS=" " + # PLOTS+=("$H") + PLOTS[$COUNT]="$H" + COUNT=$((COUNT+1)) + + # if [ ! -f "$T" ]; then + # snakemake -c1 "$T" + # fi + # if [ ! -f "$P.html" ]; then + # ~/code/FRET/state2gantt/driver.sh "$T" + # fi +done < <(find ./remote/timedump -maxdepth 2 -type 'f' -iregex '.*\.case') + +# echo "${PLOTS[@]}" +snakemake -c 6 "${PLOTS[@]}" \ No newline at end of file