Execute ScEpTIC Analysis¶
For each program you need to analyze with ScEpTIC, you need to:
Generate the LLVM IR of your program, as we describe in Target Program Compilation
Configure ScEpTIC and your target architecture, as we describe in ScEpTIC Configuration
To run our analysis, we first need to import the ScEpTIC module and our configuration file.
Then, we initialize ScEpTIC using its
init() method, and then we need to call the
For example, if our configuration is saved inside
import ScEpTIC import config sc = ScEpTIC.init(config) sc.run_tests()
This runs all the analysis that we enabled in the configuration file.
ScEpTIC exposes also a
run_test() method, which takes as parameters the name of the file containing the analysis implementation and the name of its class.
For example, if we want to execute the analysis for locating memory-based intermittence anomalies, we can run:
import ScEpTIC import config sc = ScEpTIC.init(config) sc.run_test('memory_locate', 'LocateMemoryAnomaliesInterruptionManager')
Note that, as we describe in our technical report, we can extend ScEpTIC analysis by extending the
InterruptionManager base class, and then saving the new analysis inside
When ScEpTIC terminates the analysis execution, it saves the analysis results inside a sub-directory that is inside the
save_dir directory that we specified in the configuration file.
Each result directory contains two sub-folders:
code: contains a txt file for each function. Each file contains the modified LLVM IR of a function of the program, which ScEpTIC uses for emulating the program execution
states: contains a txt file that contains a textual representation of the states of register file, memory, input, and outputs at the end of the simulation execution
Then, we have a
.txt file for each different analysis that we choose to run, which contains the analysis results.