From bd5f3d578f4dc84ed05bf29ebd166bc8aec491f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20B=C3=BChler?= <david.buhler@cea.fr> Date: Thu, 20 Jun 2024 11:43:42 +0200 Subject: [PATCH] [Eva] Splits test memcpy in two runs with different absolute valid range. The first run has no absolute valid range. The second run only tests function copy_0 with absolute valid range. --- tests/builtins/memcpy.c | 4 +- ...{memcpy.res.oracle => memcpy.0.res.oracle} | 82 ++++--------------- tests/builtins/oracle/memcpy.1.res.oracle | 56 +++++++++++++ ...{memcpy.res.oracle => memcpy.0.res.oracle} | 4 +- .../oracle_multidim/strings_logic.res.oracle | 0 5 files changed, 78 insertions(+), 68 deletions(-) rename tests/builtins/oracle/{memcpy.res.oracle => memcpy.0.res.oracle} (96%) create mode 100644 tests/builtins/oracle/memcpy.1.res.oracle rename tests/builtins/oracle_gauges/{memcpy.res.oracle => memcpy.0.res.oracle} (87%) delete mode 100644 tests/value/oracle_multidim/strings_logic.res.oracle diff --git a/tests/builtins/memcpy.c b/tests/builtins/memcpy.c index 86d8e5e99e4..1eee41ee76b 100644 --- a/tests/builtins/memcpy.c +++ b/tests/builtins/memcpy.c @@ -1,9 +1,9 @@ /* run.config* PLUGIN: @PTEST_PLUGIN@ report - STDOPT: +"-calldeps -eva-msg-key imprecision -eva-plevel 150 -inout -no-deps -absolute-valid-range 100000-100001 -then -report" + STDOPT: +"-calldeps -eva-msg-key imprecision -eva-plevel 150 -inout -no-deps -then -report" + STDOPT: +"-absolute-valid-range 100000-100001 -main copy_0" */ - #include "string.h" volatile int i; diff --git a/tests/builtins/oracle/memcpy.res.oracle b/tests/builtins/oracle/memcpy.0.res.oracle similarity index 96% rename from tests/builtins/oracle/memcpy.res.oracle rename to tests/builtins/oracle/memcpy.0.res.oracle index 081d95dc470..774d89fc40d 100644 --- a/tests/builtins/oracle/memcpy.res.oracle +++ b/tests/builtins/oracle/memcpy.0.res.oracle @@ -3,7 +3,6 @@ [eva] Computing initial state [eva] Initial state computed [eva:initial-state] Values of globals at initialization - NULL[rbits 800000 to 800015] ∈ [--..--] i ∈ [--..--] src[0..19] ∈ {0} dst1[0..19] ∈ {0} @@ -320,7 +319,6 @@ [eva] memcpy.c:216: Frama_C_dump_each: # cvalue: - NULL[rbits 800000 to 800015] ∈ [--..--] __fc_heap_status ∈ [--..--] __fc_strtok_ptr ∈ {0} __fc_strerror[0..63] ∈ [--..--] @@ -355,17 +353,14 @@ Called from memcpy.c:230. [eva] memcpy.c:221: Call to builtin memcpy [eva:alarm] memcpy.c:221: Warning: - function memcpy: precondition 'valid_dest' got status invalid. -[eva] memcpy.c:221: - function memcpy: no state left, precondition 'valid_src' got status valid. -[eva] memcpy.c:221: - function memcpy: no state left, precondition 'separation' got status valid. + function memcpy: precondition 'valid_dest' got status unknown. +[eva] memcpy.c:221: function memcpy: precondition 'valid_src' got status valid. +[eva] memcpy.c:221: function memcpy: precondition 'separation' got status valid. [eva] memcpy.c:222: Call to builtin memcpy [eva] memcpy.c:222: function memcpy: precondition 'valid_dest' got status valid. [eva:alarm] memcpy.c:222: Warning: - function memcpy: precondition 'valid_src' got status invalid. -[eva] memcpy.c:222: - function memcpy: no state left, precondition 'separation' got status valid. + function memcpy: precondition 'valid_src' got status unknown. +[eva] memcpy.c:222: function memcpy: precondition 'separation' got status valid. [eva] Recording results for copy_0 [from] Computing for function copy_0 [from] Done for function copy_0 @@ -861,8 +856,8 @@ ptop2[2..749]; ptop3[2..797]; ptop4[2..798]; garbledsize[10..99]; pgarbledsize; dstmaybesize1[0..14]; dstmaybesize2[0..5]; maybesize [inout] Inputs for function test: - NULL[100000..100001]; i; src[0..19]; maybe; v1; v2; - v4{.x; .y; .p; .padding[0..3]}; t[0..3]; "d"[bits 0 to 7] + i; src[0..19]; maybe; v1; v2; v4{.x; .y; .p; .padding[0..3]}; t[0..3]; + "d"[bits 0 to 7] [inout] InOut (internal) for function test: Operational inputs: i; src[0..19]; maybe; v1{.p; .padding[0..23]}; v2; @@ -900,8 +895,8 @@ dst5[0..99]; tm[0..999]; um{[0..998]; [999][bits 0 to 15]}; ttyp[0..999]; v1{.x; .y}; v2; v3; v4; v5; t[1..3] [inout] Inputs for function main: - NULL[100000..100001]; i; src[0..19]; maybe; v1; v2; - v4{.x; .y; .p; .padding[0..3]}; t[0..3]; "d"[bits 0 to 7] + i; src[0..19]; maybe; v1; v2; v4{.x; .y; .p; .padding[0..3]}; t[0..3]; + "d"[bits 0 to 7] [inout] InOut (internal) for function main: Operational inputs: i; src[0..19]; maybe; v1{.p; .padding[0..23]}; v2; @@ -1075,48 +1070,10 @@ --- Properties of Function 'memcpy' -------------------------------------------------------------------------------- -[ Alarm ] Pre-condition 'valid_dest' - By Call Preconditions, with pending: - - Unreachable call 'memcpy' (file memcpy.c, line 221) - - Instance of 'Pre-condition 'valid_dest'' of 'buggy' at call 'memcpy' (file memcpy.c, line 32) - - - Instance of 'Pre-condition 'valid_dest'' of 'test' at call 'memcpy' (file memcpy.c, line 74) - - - Instance of 'Pre-condition 'valid_dest'' of 'test' at call 'memcpy' (file memcpy.c, line 79) - - - Instance of 'Pre-condition 'valid_dest'' of 'test' at call 'memcpy' (file memcpy.c, line 93) - - - Instance of 'Pre-condition 'valid_dest'' of 'test' at call 'memcpy' (file memcpy.c, line 95) - - - Instance of 'Pre-condition 'valid_dest'' of 'test' at call 'memcpy' (file memcpy.c, line 100) - - - Instance of 'Pre-condition 'valid_dest'' of 'test' at call 'memcpy' (file memcpy.c, line 118) - - - Instance of 'Pre-condition 'valid_dest'' of 'test' at call 'memcpy' (file memcpy.c, line 126) - - - Instance of 'Pre-condition 'valid_dest'' of 'test' at call 'memcpy' (file memcpy.c, line 135) - - - Instance of 'Pre-condition 'valid_dest'' of 'test' at call 'memcpy' (file memcpy.c, line 144) - - - Instance of 'Pre-condition 'valid_dest'' of 'test' at call 'memcpy' (file memcpy.c, line 149) - - - Instance of 'Pre-condition 'valid_dest'' of 'test' at call 'memcpy' (file memcpy.c, line 155) - -[ Alarm ] Pre-condition 'valid_src' - By Call Preconditions, with pending: - - Unreachable call 'memcpy' (file memcpy.c, line 222) - - Instance of 'Pre-condition 'valid_src'' of 'test' at call 'memcpy' (file memcpy.c, line 74) - - - Instance of 'Pre-condition 'valid_src'' of 'test' at call 'memcpy' (file memcpy.c, line 79) - - - Instance of 'Pre-condition 'valid_src'' of 'test' at call 'memcpy' (file memcpy.c, line 91) - - - Instance of 'Pre-condition 'valid_src'' of 'test' at call 'memcpy' (file memcpy.c, line 100) - - - Instance of 'Pre-condition 'valid_src'' of 'test' at call 'memcpy' (file memcpy.c, line 149) - - - Instance of 'Pre-condition 'valid_src'' of 'test' at call 'memcpy' (file memcpy.c, line 155) - +[ - ] Pre-condition 'valid_dest' + tried with Call Preconditions. +[ - ] Pre-condition 'valid_src' + tried with Call Preconditions. [ - ] Pre-condition 'separation' tried with Call Preconditions. [ Extern ] Post-condition 'copied_contents' @@ -2228,10 +2185,9 @@ --- Properties of Function 'copy_0' -------------------------------------------------------------------------------- -[ Alarm ] Instance of 'Pre-condition 'valid_dest'' at call 'memcpy' (file memcpy.c, line 221) +[ - ] Instance of 'Pre-condition 'valid_dest'' at call 'memcpy' (file memcpy.c, line 221) - By Eva, with pending: - - Unreachable call 'memcpy' (file memcpy.c, line 221) + tried with Eva. [ Valid ] Instance of 'Pre-condition 'valid_src'' at call 'memcpy' (file memcpy.c, line 221) by Eva. @@ -2241,10 +2197,9 @@ [ Valid ] Instance of 'Pre-condition 'valid_dest'' at call 'memcpy' (file memcpy.c, line 222) by Eva. -[ Alarm ] Instance of 'Pre-condition 'valid_src'' at call 'memcpy' (file memcpy.c, line 222) +[ - ] Instance of 'Pre-condition 'valid_src'' at call 'memcpy' (file memcpy.c, line 222) - By Eva, with pending: - - Unreachable call 'memcpy' (file memcpy.c, line 222) + tried with Eva. [ Valid ] Instance of 'Pre-condition 'separation'' at call 'memcpy' (file memcpy.c, line 222) by Eva. @@ -2255,7 +2210,6 @@ 169 Completely validated 1 Locally validated 267 Considered valid - 32 To be validated - 4 Alarms emitted + 36 To be validated 473 Total -------------------------------------------------------------------------------- diff --git a/tests/builtins/oracle/memcpy.1.res.oracle b/tests/builtins/oracle/memcpy.1.res.oracle new file mode 100644 index 00000000000..ebc79e7b2b7 --- /dev/null +++ b/tests/builtins/oracle/memcpy.1.res.oracle @@ -0,0 +1,56 @@ +[kernel] Parsing memcpy.c (with preprocessing) +[eva] Analyzing a complete application starting at copy_0 +[eva] Computing initial state +[eva] Initial state computed +[eva:initial-state] Values of globals at initialization + NULL[rbits 800000 to 800015] ∈ [--..--] + i ∈ [--..--] + src[0..19] ∈ {0} + dst1[0..19] ∈ {0} + dst2[0..19] ∈ {0} + dst3[0..19] ∈ {0} + dst4[0..19] ∈ {0} + dst5[0..99] ∈ {0} + maybe ∈ [--..--] + tm[0..999] ∈ {0} + um[0..999] ∈ {0} + ttyp[0..999] ∈ {0} + v1 ∈ {0} + v2 ∈ {0} + v3 ∈ {0} + v4 ∈ {0} + v5 ∈ {0} + t[0..3] ∈ {0} +[eva] memcpy.c:221: Call to builtin memcpy +[eva:alarm] memcpy.c:221: Warning: + function memcpy: precondition 'valid_dest' got status invalid. +[eva] memcpy.c:221: + function memcpy: no state left, precondition 'valid_src' got status valid. +[eva] memcpy.c:221: + function memcpy: no state left, precondition 'separation' got status valid. +[eva] memcpy.c:222: Call to builtin memcpy +[eva] memcpy.c:222: function memcpy: precondition 'valid_dest' got status valid. +[eva:alarm] memcpy.c:222: Warning: + function memcpy: precondition 'valid_src' got status invalid. +[eva] memcpy.c:222: + function memcpy: no state left, precondition 'separation' got status valid. +[eva] Recording results for copy_0 +[eva] Done for function copy_0 +[eva] ====== VALUES COMPUTED ====== +[eva:final-states] Values at end of function copy_0: + +[from] Computing for function copy_0 +[from] Computing for function memcpy <-copy_0 +[from] Done for function memcpy +[from] Done for function copy_0 +[from] ====== DEPENDENCIES COMPUTED ====== + These dependencies hold at termination for the executions that terminate: +[from] Function memcpy: + \result FROM dest +[from] Function copy_0: + NO EFFECTS +[from] ====== END OF DEPENDENCIES ====== +[inout] Out (internal) for function copy_0: + \nothing +[inout] Inputs for function copy_0: + i diff --git a/tests/builtins/oracle_gauges/memcpy.res.oracle b/tests/builtins/oracle_gauges/memcpy.0.res.oracle similarity index 87% rename from tests/builtins/oracle_gauges/memcpy.res.oracle rename to tests/builtins/oracle_gauges/memcpy.0.res.oracle index 53b9be93013..5e4fbca1c4a 100644 --- a/tests/builtins/oracle_gauges/memcpy.res.oracle +++ b/tests/builtins/oracle_gauges/memcpy.0.res.oracle @@ -1,5 +1,5 @@ -146a147,148 +145a146,147 > [eva] memcpy.c:100: Call to builtin memcpy > [eva] memcpy.c:100: Call to builtin memcpy -372a375 +367a370 > [eva] memcpy.c:231: starting to merge loop iterations diff --git a/tests/value/oracle_multidim/strings_logic.res.oracle b/tests/value/oracle_multidim/strings_logic.res.oracle deleted file mode 100644 index e69de29bb2d..00000000000 -- GitLab