Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • F frama-c
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 168
    • Issues 168
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • Deployments
    • Deployments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
    • Model experiments
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • Repository
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • pub
  • frama-c
  • Issues
  • #182

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

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking