Compare commits
10 Commits
Author | SHA1 | Date | |
---|---|---|---|
a3d99d79a2 | |||
0217d9ab78 | |||
a3707931ba | |||
979202b7c8 | |||
9531dc1ac0 | |||
892d4f85ce | |||
2454f8d316 | |||
77b94213a9 | |||
4314103038 | |||
009469766c |
6
.gitmodules
vendored
6
.gitmodules
vendored
@ -1,10 +1,10 @@
|
|||||||
[submodule "LibAFL"]
|
[submodule "LibAFL"]
|
||||||
path = LibAFL
|
path = LibAFL
|
||||||
url = ssh://git@git.cs.tu-dortmund.de:2222/alwin.berger/FRET-LibAFL.git
|
url = https://git.cs.tu-dortmund.de/SYS-OSS/FRET-LibAFL.git
|
||||||
[submodule "qemu-libafl-bridge"]
|
[submodule "qemu-libafl-bridge"]
|
||||||
path = qemu-libafl-bridge
|
path = qemu-libafl-bridge
|
||||||
url = ssh://git@git.cs.tu-dortmund.de:2222/alwin.berger/FRET-qemu.git
|
url = https://git.cs.tu-dortmund.de/SYS-OSS/FRET-qemu.git
|
||||||
[submodule "FreeRTOS"]
|
[submodule "FreeRTOS"]
|
||||||
path = FreeRTOS
|
path = FreeRTOS
|
||||||
url = ssh://git@git.cs.tu-dortmund.de:2222/alwin.berger/FRET-FreeRTOS.git
|
url = https://git.cs.tu-dortmund.de/SYS-OSS/FRET-FreeRTOS.git
|
||||||
branch = wcet-demo
|
branch = wcet-demo
|
||||||
|
2
FreeRTOS
2
FreeRTOS
@ -1 +1 @@
|
|||||||
Subproject commit 24bba6bde09c45f037c72e8804d5f6867b8d0531
|
Subproject commit e1179c292dfb5612c8cb7c52f98aac4c8f0371e2
|
2
LibAFL
2
LibAFL
@ -1 +1 @@
|
|||||||
Subproject commit 36bd06cb99e6fb825519774e6d6db4d40f747bb6
|
Subproject commit 8e1863847fb5ceb857a770f8cb30253a623a9161
|
@ -63,8 +63,8 @@ export BENCHDIR="eval_$(date -I)"
|
|||||||
# Reproduce the evals in the paper e.g.
|
# Reproduce the evals in the paper e.g.
|
||||||
snakemake --cores 64 eval_bytes eval_int eval_full waters_multi
|
snakemake --cores 64 eval_bytes eval_int eval_full waters_multi
|
||||||
# plot the resutls
|
# plot the resutls
|
||||||
sh plot_all_benchmarks.sh
|
snakemake -c20 plot_benchmarks
|
||||||
# See images in $BENCHDIR
|
# See images in $BENCHDIR
|
||||||
sh plot_all_traces.sh
|
snakemake -c20 plot_traces
|
||||||
# See HTML files in $BENCHDIR/timedump/*/ for traces of the worst cases
|
# See HTML files in $BENCHDIR/timedump/*/ for traces of the worst cases
|
||||||
```
|
```
|
8
artifact-evaluation/ae.bib
Normal file
8
artifact-evaluation/ae.bib
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
@inproceedings{
|
||||||
|
berger2025dynamic,
|
||||||
|
title={Dynamic Fuzzing-Based Whole-System Timing Analysis},
|
||||||
|
author={Alwin Berger and Simon Schuster and Peter W{\"a}gemann and Peter Ulbrich},
|
||||||
|
booktitle={The 46th IEEE Real-Time Systems Symposium, Artifact Evaluation},
|
||||||
|
year={2025},
|
||||||
|
url={https://openreview.net/forum?id=LlBXyI12R8}
|
||||||
|
}
|
@ -34,7 +34,7 @@ Download our ready-made VM image from [https://sys-sideshow.cs.tu-dortmund.de/do
|
|||||||
|
|
||||||
1. Clone the repository:
|
1. Clone the repository:
|
||||||
```bash
|
```bash
|
||||||
git clone https://git.cs.tu-dortmund.de/alwin.berger/FRET
|
git clone https://git.cs.tu-dortmund.de/SYS-OSS/FRET
|
||||||
cd FRET
|
cd FRET
|
||||||
git checkout RTSS25-AE
|
git checkout RTSS25-AE
|
||||||
git submodule update --init
|
git submodule update --init
|
||||||
@ -55,8 +55,10 @@ nix develop # or nix-shell for older Nix versions
|
|||||||
|
|
||||||
1. Clone the repository:
|
1. Clone the repository:
|
||||||
```bash
|
```bash
|
||||||
git clone --recursive https://git.cs.tu-dortmund.de/alwin.berger/FRET
|
git clone --recursive https://git.cs.tu-dortmund.de/SYS-OSS/FRET
|
||||||
cd FRET
|
cd FRET
|
||||||
|
git checkout RTSS25-AE
|
||||||
|
git submodule update --init
|
||||||
```
|
```
|
||||||
|
|
||||||
2. See [Docker/README.md](Docker/README.md)
|
2. See [Docker/README.md](Docker/README.md)
|
||||||
@ -116,9 +118,13 @@ mkdir -p $TMPDIR
|
|||||||
export DUMP=$(mktemp -d)
|
export DUMP=$(mktemp -d)
|
||||||
dd if=/dev/random of=$DUMP/input bs=8K count=1
|
dd if=/dev/random of=$DUMP/input bs=8K count=1
|
||||||
# fuzz for 10 seconds
|
# fuzz for 10 seconds
|
||||||
cargo run -- -k benchmark/build/waters_seq_full.elf -c benchmark/target_symbols.csv -n $DUMP/output -ta fuzz -t 10 --seed 123456
|
cargo run -- -k benchmark/build/waters_seq_full.elf \
|
||||||
|
-c benchmark/target_symbols.csv \
|
||||||
|
-n $DUMP/output -ta fuzz -t 10 --seed 123456
|
||||||
# Produce a trace for the worst case found
|
# Produce a trace for the worst case found
|
||||||
cargo run -- -k benchmark/build/waters_seq_full.elf -c benchmark/target_symbols.csv -n $DUMP/show -trg showmap -i $DUMP/output.case
|
cargo run -- -k benchmark/build/waters_seq_full.elf \
|
||||||
|
-c benchmark/target_symbols.csv \
|
||||||
|
-n $DUMP/show -trg showmap -i $DUMP/output.case
|
||||||
# plot the result
|
# plot the result
|
||||||
gantt_driver $DUMP/show.trace.ron
|
gantt_driver $DUMP/show.trace.ron
|
||||||
# view the gantt chart
|
# view the gantt chart
|
||||||
@ -230,4 +236,4 @@ For questions about the artifact or issues during evaluation, please contact:
|
|||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
This artifact is provided under Apache License Version 2.0.
|
This artifact is provided under Apache License Version 2.0.
|
BIN
artifact-evaluation/artifact-eval.pdf
Normal file
BIN
artifact-evaluation/artifact-eval.pdf
Normal file
Binary file not shown.
15
run_eval.sh
15
run_eval.sh
@ -1,13 +1,13 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Configuration
|
# Configuration
|
||||||
export CORES=64 # Number of physical cores
|
export CORES=${CORES:-64} # Number of physical cores
|
||||||
export RUNTIME=86400 # 24 hours in seconds
|
export RUNTIME=${RUNTIME:-86400} # 24 hours in seconds
|
||||||
export TARGET_REPLICA_NUMBER=12
|
export TARGET_REPLICA_NUMBER=${TARGET_REPLICA_NUMBER:-12}
|
||||||
export RANDOM_REPLICA_NUMBER=3
|
export RANDOM_REPLICA_NUMBER=${RANDOM_REPLICA_NUMBER:-3}
|
||||||
export MULTIJOB_REPLICA_NUMBER=3
|
export MULTIJOB_REPLICA_NUMBER=${MULTIJOB_REPLICA_NUMBER:-3}
|
||||||
|
|
||||||
if [[ -z "$INSIDE_DEVSHELL" ]]; then
|
if [[ -z "$INSIDE_DEVSHELL" ]]; then
|
||||||
echo "This script should be run inside a nix-shell. Run 'nix develop' or 'nix-shell' first."
|
echo "This script should be run inside a nix-shell. Run 'nix develop' or 'nix-shell' first."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@ -17,12 +17,13 @@ cd "$SCRIPT_DIR"
|
|||||||
|
|
||||||
cd LibAFL/fuzzers/FRET/benchmark
|
cd LibAFL/fuzzers/FRET/benchmark
|
||||||
|
|
||||||
export BENCHDIR="eval_$(date -I)"
|
export BENCHDIR="${BENCHDIR:-eval_$(date -I)}"
|
||||||
# prepare all fuzzer configurations
|
# prepare all fuzzer configurations
|
||||||
snakemake --keep-incomplete --cores $CORES all_bins
|
snakemake --keep-incomplete --cores $CORES all_bins
|
||||||
# Run the eval examples from the paper (eval_bytes = Fig. 3, eval_int = Fig. 4, eval_full = Fig. 5, waters_multi = Fig. 6)
|
# Run the eval examples from the paper (eval_bytes = Fig. 3, eval_int = Fig. 4, eval_full = Fig. 5, waters_multi = Fig. 6)
|
||||||
snakemake --keep-incomplete --cores $CORES eval_bytes eval_int eval_full waters_multi
|
snakemake --keep-incomplete --cores $CORES eval_bytes eval_int eval_full waters_multi
|
||||||
# plot the resutls
|
# plot the resutls
|
||||||
|
rm -f $BENCHDIR/bench.sqlite
|
||||||
snakemake --keep-incomplete --cores $CORES plot_benchmarks
|
snakemake --keep-incomplete --cores $CORES plot_benchmarks
|
||||||
# See images in $BENCHDIR
|
# See images in $BENCHDIR
|
||||||
snakemake --keep-incomplete --cores $CORES plot_traces
|
snakemake --keep-incomplete --cores $CORES plot_traces
|
||||||
|
Loading…
x
Reference in New Issue
Block a user