Closed
Description
For the following C program
void test(int *x) {
*x = 2;
}
and the following SAW script
m <- llvm_load_module "test4.bc";
let setup = do {
x <- llvm_alloc_readonly (llvm_int 32);
llvm_execute_func [x];
};
llvm_verify m "test" [] true setup abc;
an error should be reported because the code writes to read-only memory. However SAW instead outputs that the proof is successful:
[01:33:31.665] Loading file "/home/bretton/Documents/github/saw-script/test/test4.saw"
[01:33:31.671] Verifying test ...
[01:33:31.683] Simulating test ...
[01:33:31.687] Checking proof obligations test ...
[01:33:31.738] Proof succeeded! test
This issue seems to only occur with the abc
/w4_abc_aiger
backend. The z3
, w4_abc_smtlib2
, w4_abc_verilog
, and sbv_abc
backends correctly report an error. @andreistefanescu suggests that the problem is in the translation to AIGER.