我目前正在尝试使用 Frama-C评估一个测试套件,它是插件Eva。为此,我使用以下标志运行 Frama-C:
frama-c -eva -cpp-extra-args="-DINCLUDEMAIN -I .../<headerfile folder>" <some c file>.c
Frama-C (24.0) 是通过 Opam 安装的。运行 eva 时,一个输出是:
[eva] using spcification for function strcpy
和
[eva] FRAMAC_SHARE/libc/string.h:373:cannot evaluate ACSL term, unsupported ACSL construct: logic function strcmp
正如您在此处看到的:Eva states unsupported ACSL construction。
在查看 string.h ( ~/.opam/default/share/frama-c/libc
) 文件时,我能够找到 strcpy 函数:
/*@
...
@ ensures equal_contents: strcmp(dest,src) == 0;
@ ensures result_ptr: \result == dest;
@*/
extern char *strcpy(char *restrict dest, const char *restrict src);
和 strcmp 函数:
/*@ requires valid_string_s1: valid_read_string(s1);
`@ requires valid_string_s2: valid_read_string(s2);
@ assigns \result \from indirect:s1[0..], indirect:s2[0..];
@ ensures acsl_c_equiv: \result == strcmp(s1,s2);
@*/
extern int strcmp (const char *s1, const char *s2);
据我了解,Eva 将此文件与 ACSL 合同一起使用,以了解确切需要检查的内容,并为strcmp
.
有人知道为什么会出现此错误消息以及如何解决此问题吗?
非常感谢提前!!!