benchexec
имеет репозиторий для Ubuntu с упрощенной настройкой, на остальных
дистрибутивах скорее всего придется пересобрать ядро как минимум.
В репозитории имеется для этого два файла:
/klee
- оболочка надKLEE
дляbenchexec
./benchmark.xml
- спецификация необходимых тестов изsv-benchmarks
.benchmark.xml
, в текущей конфигурации, должна лежать вsv_benchmarks/c/
. Запускbenchexec
производится следующей командой в директорииsv_benchmarks/c/
:PATH=../../states_and_lemmas:$PATH benchexec benchmark.xml
, где../../states_and_lemmas
- путь до нашего репозитория (вstates_and_lemmas/build
подразумевается наличие собранногоKLEE
). После этого вsv_benchmarks/c/
появится директорияresults
, где будут лежать результаты.
В репозитории для этого лежит скрипт testcov_run.py
. Нужно зайти в results
, дойти до директорий с именами вида *.yml
,
заархивировать их каждый в архивы с именами .yml.zip
, после чего запустить testcov_run.py
с параметрами, описание которых
можно получить с помощью testcov_run.py -h
.
- В оболочке над
KLEE
по идее должен добавляться флаг--dump-all-states=false
, но не получается найти упоминания этого флага где-либо еще. - Тесты sv-comp часто подразумевают 32-bit модель данных, но
KLEE
выкидывает ошибку:LLVM ERROR: 64-bit code requested on a subtarget that doesn't support it!
, пока что в/klee
в выборе архитектуры обе ветки включают 64-bit, в будущем нужно будет обратить внимание на этот вопрос.