split justfile into nixos.just + mars.just
This commit is contained in:
107
fail.just
Normal file
107
fail.just
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
[doc("Trace a golden run using FAIL*")]
|
||||||
|
[group("fail")]
|
||||||
|
trace module:
|
||||||
|
{{ BOCHS_RUNNER }} \
|
||||||
|
-V {{ FAIL_SHARE }}/vgabios.bin \
|
||||||
|
-b {{ FAIL_SHARE }}/BIOS-bochs-latest \
|
||||||
|
-1 \
|
||||||
|
-f {{ FAIL_TRACE }} \
|
||||||
|
-e {{ BUILD_DIR }}-{{ module }}/system.elf \
|
||||||
|
-i {{ BUILD_DIR }}-{{ module }}/system.iso \
|
||||||
|
-- \
|
||||||
|
-Wf,--start-symbol=start_trace \
|
||||||
|
-Wf,--save-symbol=start_trace \
|
||||||
|
-Wf,--end-symbol=stop_trace \
|
||||||
|
-Wf,--state-file={{ BUILD_DIR }}-{{ module }}/state \
|
||||||
|
-Wf,--trace-file={{ BUILD_DIR }}-{{ module }}/trace.pb \
|
||||||
|
-Wf,--elf-file={{ BUILD_DIR }}-{{ module }}/system.elf
|
||||||
|
@echo "Next step: \"just import {{ module }}\""
|
||||||
|
|
||||||
|
# [doc("Dump a FAIL* golden run trace")]
|
||||||
|
# [group("fail")]
|
||||||
|
# dump module:
|
||||||
|
# {{ FAIL_DUMP }} {{ BUILD_DIR }}-{{ module }}/trace.pb
|
||||||
|
|
||||||
|
[doc("Import a FAIL* golden run trace")]
|
||||||
|
[group("fail")]
|
||||||
|
import module:
|
||||||
|
{{ FAIL_IMPORT }} --database-option-file ./db.conf -t {{ BUILD_DIR }}-{{ module }}/trace.pb \
|
||||||
|
-i MemoryImporter \
|
||||||
|
-e {{ BUILD_DIR }}-{{ module }}/system.elf -v {{ module }} -b mem
|
||||||
|
{{ FAIL_IMPORT }} --database-option-file ./db.conf -t {{ BUILD_DIR }}-{{ module }}/trace.pb \
|
||||||
|
-i RegisterImporter \
|
||||||
|
-e {{ BUILD_DIR }}-{{ module }}/system.elf -v {{ module }} -b regs --flags
|
||||||
|
{{ FAIL_IMPORT }} --database-option-file ./db.conf -t {{ BUILD_DIR }}-{{ module }}/trace.pb \
|
||||||
|
-i RegisterImporter \
|
||||||
|
-e {{ BUILD_DIR }}-{{ module }}/system.elf -v {{ module }} -b ip --no-gp --ip
|
||||||
|
|
||||||
|
{{ FAIL_IMPORT }} --database-option-file ./db.conf -t {{ BUILD_DIR }}-{{ module }}/trace.pb \
|
||||||
|
-i ElfImporter --objdump objdump \
|
||||||
|
-e {{ BUILD_DIR }}-{{ module }}/system.elf -v {{ module }} -b ip
|
||||||
|
{{ FAIL_IMPORT }} --database-option-file ./db.conf -t {{ BUILD_DIR }}-{{ module }}/trace.pb \
|
||||||
|
-i ElfImporter --objdump objdump \
|
||||||
|
-e {{ BUILD_DIR }}-{{ module }}/system.elf -v {{ module }} -b mem
|
||||||
|
{{ FAIL_IMPORT }} --database-option-file ./db.conf -t {{ BUILD_DIR }}-{{ module }}/trace.pb \
|
||||||
|
-i ElfImporter --objdump objdump \
|
||||||
|
-e {{ BUILD_DIR }}-{{ module }}/system.elf -v {{ module }} -b regs
|
||||||
|
|
||||||
|
{{ FAIL_IMPORT }} --database-option-file ./db.conf -t {{ BUILD_DIR }}-{{ module }}/trace.pb \
|
||||||
|
-i ElfImporter --objdump objdump \
|
||||||
|
-e {{ BUILD_DIR }}-{{ module }}/system.elf -v {{ module }} -b ip --sources
|
||||||
|
{{ FAIL_IMPORT }} --database-option-file ./db.conf -t {{ BUILD_DIR }}-{{ module }}/trace.pb \
|
||||||
|
-i ElfImporter --objdump objdump \
|
||||||
|
-e {{ BUILD_DIR }}-{{ module }}/system.elf -v {{ module }} -b mem --sources
|
||||||
|
{{ FAIL_IMPORT }} --database-option-file ./db.conf -t {{ BUILD_DIR }}-{{ module }}/trace.pb \
|
||||||
|
-i ElfImporter --objdump objdump \
|
||||||
|
-e {{ BUILD_DIR }}-{{ module }}/system.elf -v {{ module }} -b regs --sources
|
||||||
|
|
||||||
|
{{ FAIL_PRUNE }} --database-option-file ./db.conf -v {{ module }} -b %% --overwrite
|
||||||
|
@echo "Next step: \"just server {{ module }}\""
|
||||||
|
|
||||||
|
[doc("Start the FAIL* campaign server")]
|
||||||
|
[group("fail")]
|
||||||
|
server module:
|
||||||
|
{{ FAIL_SERVER }} --database-option-file ./db.conf -v {{ module }} -b % --inject-single-bit --inject-registers &
|
||||||
|
@echo "Next step: \"just client {{ module }}\""
|
||||||
|
|
||||||
|
[doc("Stop the FAIL* campaign server")]
|
||||||
|
[group("fail")]
|
||||||
|
stop-server:
|
||||||
|
pkill -f {{ FAIL_SERVER }}
|
||||||
|
|
||||||
|
[doc("Start a FAIL* campaign client")]
|
||||||
|
[group("fail")]
|
||||||
|
client module:
|
||||||
|
{{ BOCHS_RUNNER }} \
|
||||||
|
-V {{ FAIL_SHARE }}/vgabios.bin \
|
||||||
|
-b {{ FAIL_SHARE }}/BIOS-bochs-latest \
|
||||||
|
-f {{ FAIL_INJECT }} \
|
||||||
|
-e {{ BUILD_DIR }}-{{ module }}/system.elf \
|
||||||
|
-i {{ BUILD_DIR }}-{{ module }}/system.iso \
|
||||||
|
-j {{ num_cpus() }} \
|
||||||
|
-- \
|
||||||
|
-Wf,--state-dir={{ BUILD_DIR }}-{{ module }}/state \
|
||||||
|
-Wf,--trap \
|
||||||
|
-Wf,--timeout=500000 \
|
||||||
|
-Wf,--ok-marker=ok_marker \
|
||||||
|
-Wf,--fail-marker=fail_marker \
|
||||||
|
> /dev/null
|
||||||
|
@echo "Next step: \"just result {{ module }}\" or \"just resultbrowser\""
|
||||||
|
|
||||||
|
[doc("Query FAIL* marker statistics from the database")]
|
||||||
|
[group("fail")]
|
||||||
|
result module:
|
||||||
|
@echo "select variant, benchmark, resulttype, sum(t.time2 - t.time1 + 1) as faults \
|
||||||
|
FROM variant v \
|
||||||
|
JOIN trace t ON v.id = t.variant_id \
|
||||||
|
JOIN fspgroup g ON g.variant_id = t.variant_id AND g.instr2 = t.instr2 AND g.data_address = t.data_address \
|
||||||
|
JOIN result_GenericExperimentMessage r ON r.pilot_id = g.pilot_id \
|
||||||
|
JOIN fsppilot p ON r.pilot_id = p.id \
|
||||||
|
WHERE v.variant = \"{{ module }}\" \
|
||||||
|
GROUP BY v.id, resulttype \
|
||||||
|
ORDER BY variant, benchmark, resulttype;" | mariadb --defaults-file=./db.conf -t
|
||||||
|
|
||||||
|
[doc("Start the FAIL* resultbrowser")]
|
||||||
|
[group("fail")]
|
||||||
|
resultbrowser:
|
||||||
|
{{ RESULT_BROWSER }} -c ./db.conf --host=0.0.0.0 --port=5000
|
||||||
@ -459,6 +459,8 @@ rec {
|
|||||||
# Dynamic libraries from buildinputs:
|
# Dynamic libraries from buildinputs:
|
||||||
# LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath buildInputs;
|
# LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath buildInputs;
|
||||||
|
|
||||||
|
JUST_JUSTFILE = "./nixos.just";
|
||||||
|
|
||||||
# Those are read by the justfile
|
# Those are read by the justfile
|
||||||
FAIL_SHARE = "${fail-bin}/share";
|
FAIL_SHARE = "${fail-bin}/share";
|
||||||
WASI_ROOT = wasi-sdk;
|
WASI_ROOT = wasi-sdk;
|
||||||
|
|||||||
25
mars.just
Normal file
25
mars.just
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import "fail.just"
|
||||||
|
|
||||||
|
BUILD_DIR := "build"
|
||||||
|
|
||||||
|
# FAIL* variables
|
||||||
|
|
||||||
|
FAIL_BIN := "bin"
|
||||||
|
FAIL_SHARE := "share"
|
||||||
|
BOCHS_RUNNER := f"{{FAIL_BIN}}/bochs-experiment-runner.py"
|
||||||
|
FAIL_TRACE := f"{{FAIL_BIN}}/fail-x86-tracing"
|
||||||
|
FAIL_DUMP := f"{{FAIL_BIN}}/dump-trace"
|
||||||
|
FAIL_IMPORT := f"{{FAIL_BIN}}/import-trace"
|
||||||
|
FAIL_PRUNE := f"{{FAIL_BIN}}/prune-trace"
|
||||||
|
FAIL_SERVER := f"{{FAIL_BIN}}/generic-experiment-server"
|
||||||
|
FAIL_INJECT := f"{{FAIL_BIN}}/generic-experiment-client"
|
||||||
|
RESULT_BROWSER := f"{{FAIL_BIN}}/resultbrowser.py"
|
||||||
|
|
||||||
|
# =================================================================================================================== #
|
||||||
|
# Helper recipes
|
||||||
|
# =================================================================================================================== #
|
||||||
|
|
||||||
|
[default]
|
||||||
|
[private]
|
||||||
|
list:
|
||||||
|
@just --list --unsorted
|
||||||
@ -1,3 +1,5 @@
|
|||||||
|
import "fail.just"
|
||||||
|
|
||||||
BUILD_DIR := "build"
|
BUILD_DIR := "build"
|
||||||
|
|
||||||
# Load environment variables set by "nix develop"-shell
|
# Load environment variables set by "nix develop"-shell
|
||||||
@ -12,6 +14,17 @@ LIBIWASM_LINUX_RELEASE := env("LIBIWASM_LINUX_RELEASE")
|
|||||||
CROSS_CC := env("CROSS_CC")
|
CROSS_CC := env("CROSS_CC")
|
||||||
LINUX_CC := env("LINUX_CC")
|
LINUX_CC := env("LINUX_CC")
|
||||||
|
|
||||||
|
# FAIL* variables
|
||||||
|
|
||||||
|
BOCHS_RUNNER := "bochs-experiment-runner.py"
|
||||||
|
FAIL_TRACE := "fail-x86-tracing"
|
||||||
|
FAIL_DUMP := "dump-trace"
|
||||||
|
FAIL_IMPORT := "import-trace"
|
||||||
|
FAIL_PRUNE := "prune-trace"
|
||||||
|
FAIL_SERVER := "generic-experiment-server"
|
||||||
|
FAIL_INJECT := "generic-experiment-client"
|
||||||
|
RESULT_BROWSER := "resultbrowser.py"
|
||||||
|
|
||||||
# =================================================================================================================== #
|
# =================================================================================================================== #
|
||||||
# Helper recipes
|
# Helper recipes
|
||||||
# =================================================================================================================== #
|
# =================================================================================================================== #
|
||||||
@ -310,127 +323,6 @@ stop-db:
|
|||||||
remove-db:
|
remove-db:
|
||||||
docker container rm fail-db
|
docker container rm fail-db
|
||||||
|
|
||||||
# =================================================================================================================== #
|
|
||||||
# FAIL* recipes
|
|
||||||
# =================================================================================================================== #
|
|
||||||
|
|
||||||
BOCHS_RUNNER := "bochs-experiment-runner.py"
|
|
||||||
FAIL_TRACE := "fail-x86-tracing"
|
|
||||||
FAIL_DUMP := "dump-trace"
|
|
||||||
FAIL_IMPORT := "import-trace"
|
|
||||||
FAIL_PRUNE := "prune-trace"
|
|
||||||
FAIL_SERVER := "generic-experiment-server"
|
|
||||||
FAIL_INJECT := "generic-experiment-client"
|
|
||||||
RESULT_BROWSER := "resultbrowser.py"
|
|
||||||
|
|
||||||
[doc("Trace a golden run using FAIL*")]
|
|
||||||
[group("fail")]
|
|
||||||
trace module:
|
|
||||||
{{ BOCHS_RUNNER }} \
|
|
||||||
-V {{ FAIL_SHARE }}/vgabios.bin \
|
|
||||||
-b {{ FAIL_SHARE }}/BIOS-bochs-latest \
|
|
||||||
-1 \
|
|
||||||
-f {{ FAIL_TRACE }} \
|
|
||||||
-e {{ BUILD_DIR }}-{{ module }}/system.elf \
|
|
||||||
-i {{ BUILD_DIR }}-{{ module }}/system.iso \
|
|
||||||
-- \
|
|
||||||
-Wf,--start-symbol=start_trace \
|
|
||||||
-Wf,--save-symbol=start_trace \
|
|
||||||
-Wf,--end-symbol=stop_trace \
|
|
||||||
-Wf,--state-file={{ BUILD_DIR }}-{{ module }}/state \
|
|
||||||
-Wf,--trace-file={{ BUILD_DIR }}-{{ module }}/trace.pb \
|
|
||||||
-Wf,--elf-file={{ BUILD_DIR }}-{{ module }}/system.elf
|
|
||||||
@echo "Next step: \"just import {{ module }}\""
|
|
||||||
|
|
||||||
# [doc("Dump a FAIL* golden run trace")]
|
|
||||||
# [group("fail")]
|
|
||||||
# dump module:
|
|
||||||
# {{ FAIL_DUMP }} {{ BUILD_DIR }}-{{ module }}/trace.pb
|
|
||||||
|
|
||||||
[doc("Import a FAIL* golden run trace")]
|
|
||||||
[group("fail")]
|
|
||||||
import module:
|
|
||||||
{{ FAIL_IMPORT }} --database-option-file ./db.conf -t {{ BUILD_DIR }}-{{ module }}/trace.pb \
|
|
||||||
-i MemoryImporter \
|
|
||||||
-e {{ BUILD_DIR }}-{{ module }}/system.elf -v {{ module }} -b mem
|
|
||||||
{{ FAIL_IMPORT }} --database-option-file ./db.conf -t {{ BUILD_DIR }}-{{ module }}/trace.pb \
|
|
||||||
-i RegisterImporter \
|
|
||||||
-e {{ BUILD_DIR }}-{{ module }}/system.elf -v {{ module }} -b regs --flags
|
|
||||||
{{ FAIL_IMPORT }} --database-option-file ./db.conf -t {{ BUILD_DIR }}-{{ module }}/trace.pb \
|
|
||||||
-i RegisterImporter \
|
|
||||||
-e {{ BUILD_DIR }}-{{ module }}/system.elf -v {{ module }} -b ip --no-gp --ip
|
|
||||||
|
|
||||||
{{ FAIL_IMPORT }} --database-option-file ./db.conf -t {{ BUILD_DIR }}-{{ module }}/trace.pb \
|
|
||||||
-i ElfImporter --objdump objdump \
|
|
||||||
-e {{ BUILD_DIR }}-{{ module }}/system.elf -v {{ module }} -b ip
|
|
||||||
{{ FAIL_IMPORT }} --database-option-file ./db.conf -t {{ BUILD_DIR }}-{{ module }}/trace.pb \
|
|
||||||
-i ElfImporter --objdump objdump \
|
|
||||||
-e {{ BUILD_DIR }}-{{ module }}/system.elf -v {{ module }} -b mem
|
|
||||||
{{ FAIL_IMPORT }} --database-option-file ./db.conf -t {{ BUILD_DIR }}-{{ module }}/trace.pb \
|
|
||||||
-i ElfImporter --objdump objdump \
|
|
||||||
-e {{ BUILD_DIR }}-{{ module }}/system.elf -v {{ module }} -b regs
|
|
||||||
|
|
||||||
{{ FAIL_IMPORT }} --database-option-file ./db.conf -t {{ BUILD_DIR }}-{{ module }}/trace.pb \
|
|
||||||
-i ElfImporter --objdump objdump \
|
|
||||||
-e {{ BUILD_DIR }}-{{ module }}/system.elf -v {{ module }} -b ip --sources
|
|
||||||
{{ FAIL_IMPORT }} --database-option-file ./db.conf -t {{ BUILD_DIR }}-{{ module }}/trace.pb \
|
|
||||||
-i ElfImporter --objdump objdump \
|
|
||||||
-e {{ BUILD_DIR }}-{{ module }}/system.elf -v {{ module }} -b mem --sources
|
|
||||||
{{ FAIL_IMPORT }} --database-option-file ./db.conf -t {{ BUILD_DIR }}-{{ module }}/trace.pb \
|
|
||||||
-i ElfImporter --objdump objdump \
|
|
||||||
-e {{ BUILD_DIR }}-{{ module }}/system.elf -v {{ module }} -b regs --sources
|
|
||||||
|
|
||||||
{{ FAIL_PRUNE }} --database-option-file ./db.conf -v {{ module }} -b %% --overwrite
|
|
||||||
@echo "Next step: \"just server {{ module }}\""
|
|
||||||
|
|
||||||
[doc("Start the FAIL* campaign server")]
|
|
||||||
[group("fail")]
|
|
||||||
server module:
|
|
||||||
{{ FAIL_SERVER }} --database-option-file ./db.conf -v {{ module }} -b % --inject-single-bit --inject-registers &
|
|
||||||
@echo "Next step: \"just client {{ module }}\""
|
|
||||||
|
|
||||||
[doc("Stop the FAIL* campaign server")]
|
|
||||||
[group("fail")]
|
|
||||||
stop-server:
|
|
||||||
pkill -f {{ FAIL_SERVER }}
|
|
||||||
|
|
||||||
[doc("Start a FAIL* campaign client")]
|
|
||||||
[group("fail")]
|
|
||||||
client module:
|
|
||||||
{{ BOCHS_RUNNER }} \
|
|
||||||
-V {{ FAIL_SHARE }}/vgabios.bin \
|
|
||||||
-b {{ FAIL_SHARE }}/BIOS-bochs-latest \
|
|
||||||
-f {{ FAIL_INJECT }} \
|
|
||||||
-e {{ BUILD_DIR }}-{{ module }}/system.elf \
|
|
||||||
-i {{ BUILD_DIR }}-{{ module }}/system.iso \
|
|
||||||
-j {{ num_cpus() }} \
|
|
||||||
-- \
|
|
||||||
-Wf,--state-dir={{ BUILD_DIR }}-{{ module }}/state \
|
|
||||||
-Wf,--trap \
|
|
||||||
-Wf,--timeout=500000 \
|
|
||||||
-Wf,--ok-marker=ok_marker \
|
|
||||||
-Wf,--fail-marker=fail_marker \
|
|
||||||
> /dev/null
|
|
||||||
@echo "Next step: \"just result {{ module }}\" or \"just resultbrowser\""
|
|
||||||
|
|
||||||
[doc("Query FAIL* marker statistics from the database")]
|
|
||||||
[group("fail")]
|
|
||||||
result module:
|
|
||||||
@echo "select variant, benchmark, resulttype, sum(t.time2 - t.time1 + 1) as faults \
|
|
||||||
FROM variant v \
|
|
||||||
JOIN trace t ON v.id = t.variant_id \
|
|
||||||
JOIN fspgroup g ON g.variant_id = t.variant_id AND g.instr2 = t.instr2 AND g.data_address = t.data_address \
|
|
||||||
JOIN result_GenericExperimentMessage r ON r.pilot_id = g.pilot_id \
|
|
||||||
JOIN fsppilot p ON r.pilot_id = p.id \
|
|
||||||
WHERE v.variant = \"{{ module }}\" \
|
|
||||||
GROUP BY v.id, resulttype \
|
|
||||||
ORDER BY variant, benchmark, resulttype;" | mariadb --defaults-file=./db.conf -t
|
|
||||||
|
|
||||||
[doc("Start the FAIL* resultbrowser")]
|
|
||||||
[group("fail")]
|
|
||||||
resultbrowser:
|
|
||||||
{{ RESULT_BROWSER }} -c ./db.conf --host=0.0.0.0 --port=5000
|
|
||||||
|
|
||||||
# =================================================================================================================== #
|
# =================================================================================================================== #
|
||||||
# Debugging recipes
|
# Debugging recipes
|
||||||
# =================================================================================================================== #
|
# =================================================================================================================== #
|
||||||
@ -454,8 +346,14 @@ radare module:
|
|||||||
# AIO
|
# AIO
|
||||||
# =================================================================================================================== #
|
# =================================================================================================================== #
|
||||||
|
|
||||||
|
[group("just do it")]
|
||||||
|
upload module:
|
||||||
|
scp -r {{ BUILD_DIR }}-{{ module }} mars:~/Documents/failnix/{{ BUILD_DIR }}-{{ module }}
|
||||||
|
|
||||||
|
[group("just do it")]
|
||||||
build module target="fail": (build-iso module target)
|
build module target="fail": (build-iso module target)
|
||||||
|
|
||||||
|
[group("just do it")]
|
||||||
inject module:
|
inject module:
|
||||||
just clean {{ module }}
|
just clean {{ module }}
|
||||||
just build {{ module }} "fail"
|
just build {{ module }} "fail"
|
||||||
Reference in New Issue
Block a user