missing E-ACSL code, control flow graph, function pointer
ID0002416: This issue was created automatically from Mantis Issue 2416. Further discussion may take place here.
Id | Project | Category | View | Due Date | Updated |
---|---|---|---|---|---|
ID0002416 | Frama-C | Plug-in > E-ACSL | public | 2018-12-11 | 2018-12-11 |
Reporter | rmalak | Assigned To | signoles | Resolution | open |
Priority | normal | Severity | minor | Reproducibility | always |
Platform | x86_64 | OS | Linux 4.18 Ocaml 4.07.0 | OS Version | Debian Sid |
Product Version | Frama-C 18-Argon | Target Version | - | Fixed in Version | - |
Description :
Hi,
Is there a workaround for the function pointer limitation
//////////////// cfg.c void func(void) { int i = 0 ; int ptr = &i; /@ assert \valid(ptr); */ *ptr = 0 ; }
int main(int argc, char **argv) { void (*ptr_func)(void) = &func; (*ptr_func)(); return 0; } ////////////////
Additional Information :
I would like to find a solution that do not involve :
- the use of EVA
OR
- modifying the code
Steps To Reproduce :
$ frama-c -machdep gcc_x86_64 cfg.c -e-acsl -then-last -print -ocode cfg.e-acsl.c [kernel] Parsing FRAMAC_SHARE/e-acsl/e_acsl_gmp_api.h (with preprocessing) [kernel] Parsing FRAMAC_SHARE/e-acsl/e_acsl.h (with preprocessing) [kernel] Parsing cfg.c (with preprocessing) [e-acsl] beginning translation. [e-acsl] cfg.c:12: Warning: function pointers may introduce too limited instrumentation. [e-acsl] translation done in project "e-acsl".
$ gcc -DE_ACSL_SEGMENT_MMODEL -Wno-attributes -I$(frama-c -print-share-path)/e-acsl/ -o cfg.e-acsl cfg.e-acsl.c $(frama-c -print-share-path)/e-acsl/e_acsl_rtl.c $(frama-c -print-share-path)/../../lib/libeacsl-dlmalloc.a $(frama-c -print-share-path)/../../lib/libeacsl-gmp.a -lm
$ ./cfg.e-acsl Assertion failed at line 5 in function func. The failing predicate is: \valid(ptr). Aborted