Este repositorio trata sobre la interpretación de resumen modular de hilos (utilizando la biblioteca delantal) para programas basados en interrupciones mediante la adopción de información prioritaria.
El código fuente es una versión modificada de https://github.com/markus-kusano/watts
En este momento, todos los archivos no se limpian, incluidos los archivos de prueba.
Sin embargo, el subconjunto de tablas de resultados se puede imprimir ya que se cargan algunos archivos de salida.
@inproceedings{DBLP:conf/kbse/SungKW17,
author = {Chungha Sung and
Markus Kusano and
Chao Wang},
title = {Modular verification of interrupt-driven software},
booktitle = {Proceedings of the 32nd {IEEE/ACM} International Conference on Automated
Software Engineering, {ASE} 2017, Urbana, IL, USA, October 30 - November
03, 2017},
pages = {206--216},
year = {2017},
crossref = {DBLP:conf/kbse/2017},
url = {https://doi.org/10.1109/ASE.2017.8115634},
doi = {10.1109/ASE.2017.8115634},
timestamp = {Fri, 01 Dec 2017 22:44:10 +0100},
biburl = {https://dblp.org/rec/bib/conf/kbse/SungKW17},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
El programa es un pase de OPT LLVM. Está construido con CMake. Dado que estamos utilizando CMake, esto probablemente requiere LLVM versión 3.6.0
Modifique la variable del archivo CMAKELSTS Apron_prefix para ser la ubicación donde se instala el delantal
Suponiendo que sus archivos de biblioteca LLVM se encuentren en una ubicación estándar (más sobre esto a continuación), simplemente:
mkdir build
cd build
cmake ../
make
El resultado del proceso de compilación es un archivo .so, libworksistai.
Si necesita decirle a CMake dónde vive LLVM, debe agregar la opción -dllvm_dir, por ejemplo,
cmake -dllvm_dir =/home/chungha/src/share/llvm/cmake ../
El directorio pasado a LLVM_DIR debe ser la ubicación donde los archivos LLVM CMake están (por ejemplo, LLVM-Config.cmake).
También es posible que deba establecer -DZ3_INC y -DZ3_LIB en el directorio incluir y el archivo de la biblioteca para Z3, respectivamente.
Debe modificar la ruta LLVM y la ruta de construcción en el archivo src/test/export.sh para probar el programa como LLVM_PREFIX, Worklist_SO, Z3_Bin.
Si desea verificar a los invariantes del programa usando Afirmar, debe usar de esta manera.
En lugar de usar assert(a==1) , debe escribir if (a != 1) { assert(0); } .
Debido a la relación posterior al dominante, necesito implementar mi herramienta para respaldar solo este caso (afirmar no es lo que el programa no se puede obtener para que se pierda alguna relación post dominator).
ICBMC: Este es el directorio donde probé el archivo binario ICBMC desde la fecha15 del papel con mis puntos de referencia.
SRC: contiene la implementación principal (Worlist-AI, Utils, CMakelists.txt) y un directorio de prueba (prueba)
SRC/Test: contiene archivos de script para ejecutar los programas de prueba y marco. Además, los archivos de resultados se incluyen en cada directorio.