From e696b5396782841809f6d64b7bd540e252bb2c44 Mon Sep 17 00:00:00 2001 From: Virgile Prevosto <virgile.prevosto@m4x.org> Date: Tue, 6 Sep 2022 14:09:16 +0200 Subject: [PATCH] [aorai] add test for function pointers --- src/plugins/aorai/tests/ya/function_ptr.i | 20 +++++++++++++++++++ src/plugins/aorai/tests/ya/function_ptr.ya | 14 +++++++++++++ .../tests/ya/oracle/function_ptr.err.oracle | 0 .../tests/ya/oracle/function_ptr.res.oracle | 0 4 files changed, 34 insertions(+) create mode 100644 src/plugins/aorai/tests/ya/function_ptr.i create mode 100644 src/plugins/aorai/tests/ya/function_ptr.ya create mode 100644 src/plugins/aorai/tests/ya/oracle/function_ptr.err.oracle create mode 100644 src/plugins/aorai/tests/ya/oracle/function_ptr.res.oracle diff --git a/src/plugins/aorai/tests/ya/function_ptr.i b/src/plugins/aorai/tests/ya/function_ptr.i new file mode 100644 index 00000000000..d74d63528a3 --- /dev/null +++ b/src/plugins/aorai/tests/ya/function_ptr.i @@ -0,0 +1,20 @@ +/* run.config* + STDOPT: -aorai-automata %{dep:@PTEST_DIR@/@PTEST_NAME@.ya} +*/ + +void (*pf)(void); + +int X; + +void f(void) { X++; } + +void g(void) { X--; } + +int main(int c) { + if(c) pf = f; else pf = g; + /*@ calls f,g; */ + pf(); + if (c) pf = g; else pf = f; + /*@ calls f,g; */ + pf(); +} diff --git a/src/plugins/aorai/tests/ya/function_ptr.ya b/src/plugins/aorai/tests/ya/function_ptr.ya new file mode 100644 index 00000000000..acfb544b612 --- /dev/null +++ b/src/plugins/aorai/tests/ya/function_ptr.ya @@ -0,0 +1,14 @@ +%init: i; +%accept: ok; +%deterministic; + +i: { CALL(main) } -> s1; + +s1: { f() } -> f_called + | { g() } -> g_called; + +f_called: { g() } -> ok; + +g_called: { f() } -> ok; + +ok: { RETURN(main) } -> ok; diff --git a/src/plugins/aorai/tests/ya/oracle/function_ptr.err.oracle b/src/plugins/aorai/tests/ya/oracle/function_ptr.err.oracle new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/plugins/aorai/tests/ya/oracle/function_ptr.res.oracle b/src/plugins/aorai/tests/ya/oracle/function_ptr.res.oracle new file mode 100644 index 00000000000..e69de29bb2d -- GitLab