From c8704c5d961eb6aac3fa8577e0b13e99ff387b1f Mon Sep 17 00:00:00 2001
From: Basile Desloges <basile.desloges@cea.fr>
Date: Fri, 9 Oct 2020 16:04:49 +0200
Subject: [PATCH] [eacsl] Update tests

---
 .../tests/bts/oracle_ci/bts1398.res.oracle    |  2 --
 .../e-acsl/tests/bts/oracle_ci/gen_bts1398.c  |  2 +-
 .../memory/oracle_ci/constructor.res.oracle   |  2 --
 .../tests/memory/oracle_ci/gen_constructor.c  |  4 +--
 .../tests/memory/oracle_ci/gen_local_goto.c   |  9 +++--
 .../memory/oracle_ci/local_goto.res.oracle    |  2 --
 .../oracle_ci/e-acsl-instrument.res.oracle    | 10 ------
 .../special/oracle_ci/gen_e-acsl-instrument.c | 33 ++++++++++++-------
 .../temporal/oracle_ci/gen_t_malloc-asan.c    |  2 +-
 9 files changed, 31 insertions(+), 35 deletions(-)

diff --git a/src/plugins/e-acsl/tests/bts/oracle_ci/bts1398.res.oracle b/src/plugins/e-acsl/tests/bts/oracle_ci/bts1398.res.oracle
index 196be478e59..efd02631129 100644
--- a/src/plugins/e-acsl/tests/bts/oracle_ci/bts1398.res.oracle
+++ b/src/plugins/e-acsl/tests/bts/oracle_ci/bts1398.res.oracle
@@ -1,4 +1,2 @@
 [e-acsl] beginning translation.
 [e-acsl] translation done in project "e-acsl".
-[kernel:annot:missing-spec] tests/bts/bts1398.c:12: Warning: 
-  Neither code nor specification for function printf, generating default assigns from the prototype
diff --git a/src/plugins/e-acsl/tests/bts/oracle_ci/gen_bts1398.c b/src/plugins/e-acsl/tests/bts/oracle_ci/gen_bts1398.c
index 38075f91be9..b2502604424 100644
--- a/src/plugins/e-acsl/tests/bts/oracle_ci/gen_bts1398.c
+++ b/src/plugins/e-acsl/tests/bts/oracle_ci/gen_bts1398.c
@@ -26,7 +26,7 @@ int main(void)
   int i = 1;
   t[0] = 1;
   t[1] = 2;
-  printf(__gen_e_acsl_literal_string,x,t[0],t[i]);
+  printf(__gen_e_acsl_literal_string,x,t[0],t[i]); /* printf_va_1 */
   __retres = 0;
   __e_acsl_memory_clean();
   return __retres;
diff --git a/src/plugins/e-acsl/tests/memory/oracle_ci/constructor.res.oracle b/src/plugins/e-acsl/tests/memory/oracle_ci/constructor.res.oracle
index 850186d110a..efd02631129 100644
--- a/src/plugins/e-acsl/tests/memory/oracle_ci/constructor.res.oracle
+++ b/src/plugins/e-acsl/tests/memory/oracle_ci/constructor.res.oracle
@@ -1,4 +1,2 @@
 [e-acsl] beginning translation.
 [e-acsl] translation done in project "e-acsl".
-[kernel:annot:missing-spec] tests/memory/constructor.c:16: Warning: 
-  Neither code nor specification for function printf, generating default assigns from the prototype
diff --git a/src/plugins/e-acsl/tests/memory/oracle_ci/gen_constructor.c b/src/plugins/e-acsl/tests/memory/oracle_ci/gen_constructor.c
index 4e43d7e9cff..22920e30cf3 100644
--- a/src/plugins/e-acsl/tests/memory/oracle_ci/gen_constructor.c
+++ b/src/plugins/e-acsl/tests/memory/oracle_ci/gen_constructor.c
@@ -7,7 +7,7 @@ char *__gen_e_acsl_literal_string;
 void f(void) __attribute__((__constructor__));
 void f(void)
 {
-  printf(__gen_e_acsl_literal_string);
+  printf(__gen_e_acsl_literal_string); /* printf_va_1 */
   char *buf = malloc((unsigned long)10 * sizeof(char));
   free((void *)buf);
   return;
@@ -36,7 +36,7 @@ int main(void)
   int __retres;
   __e_acsl_memory_init((int *)0,(char ***)0,(size_t)8);
   __e_acsl_globals_init();
-  printf(__gen_e_acsl_literal_string_2);
+  printf(__gen_e_acsl_literal_string_2); /* printf_va_2 */
   __retres = 0;
   __e_acsl_memory_clean();
   return __retres;
diff --git a/src/plugins/e-acsl/tests/memory/oracle_ci/gen_local_goto.c b/src/plugins/e-acsl/tests/memory/oracle_ci/gen_local_goto.c
index 81bdec60725..b21a6a07c3e 100644
--- a/src/plugins/e-acsl/tests/memory/oracle_ci/gen_local_goto.c
+++ b/src/plugins/e-acsl/tests/memory/oracle_ci/gen_local_goto.c
@@ -40,7 +40,8 @@ int main(int argc, char const **argv)
   int t = 0;
   UP: ;
   if (t == 2) {
-    printf(__gen_e_acsl_literal_string_2,t,__gen_e_acsl_literal_string);
+    printf(__gen_e_acsl_literal_string_2,t,
+           (char *)__gen_e_acsl_literal_string); /* printf_va_1 */
     goto RET;
   }
   AGAIN:
@@ -58,7 +59,8 @@ int main(int argc, char const **argv)
     }
     /*@ assert \valid(&a); */ ;
     if (t == 2) {
-      printf(__gen_e_acsl_literal_string_2,t,__gen_e_acsl_literal_string_3);
+      printf(__gen_e_acsl_literal_string_2,t,
+             (char *)__gen_e_acsl_literal_string_3); /* printf_va_2 */
       __e_acsl_delete_block((void *)(& a));
       goto UP;
     }
@@ -74,7 +76,8 @@ int main(int argc, char const **argv)
                       "tests/memory/local_goto.c",36);
     }
     /*@ assert \valid(&b); */ ;
-    printf(__gen_e_acsl_literal_string_2,t,__gen_e_acsl_literal_string_4);
+    printf(__gen_e_acsl_literal_string_2,t,
+           (char *)__gen_e_acsl_literal_string_4); /* printf_va_3 */
     __e_acsl_delete_block((void *)(& a));
     __e_acsl_delete_block((void *)(& b));
     goto AGAIN;
diff --git a/src/plugins/e-acsl/tests/memory/oracle_ci/local_goto.res.oracle b/src/plugins/e-acsl/tests/memory/oracle_ci/local_goto.res.oracle
index 142c3f2be01..efd02631129 100644
--- a/src/plugins/e-acsl/tests/memory/oracle_ci/local_goto.res.oracle
+++ b/src/plugins/e-acsl/tests/memory/oracle_ci/local_goto.res.oracle
@@ -1,4 +1,2 @@
 [e-acsl] beginning translation.
 [e-acsl] translation done in project "e-acsl".
-[kernel:annot:missing-spec] tests/memory/local_goto.c:37: Warning: 
-  Neither code nor specification for function printf, generating default assigns from the prototype
diff --git a/src/plugins/e-acsl/tests/special/oracle_ci/e-acsl-instrument.res.oracle b/src/plugins/e-acsl/tests/special/oracle_ci/e-acsl-instrument.res.oracle
index 724a37c22bb..efd02631129 100644
--- a/src/plugins/e-acsl/tests/special/oracle_ci/e-acsl-instrument.res.oracle
+++ b/src/plugins/e-acsl/tests/special/oracle_ci/e-acsl-instrument.res.oracle
@@ -1,12 +1,2 @@
 [e-acsl] beginning translation.
-[e-acsl] tests/special/e-acsl-instrument.c:58: Warning: 
-  ignoring effect of variadic function vol
 [e-acsl] translation done in project "e-acsl".
-[kernel:annot:missing-spec] tests/special/e-acsl-instrument.c:43: Warning: 
-  Neither code nor specification for function __builtin_va_start, generating default assigns from the prototype
-[kernel:annot:missing-spec] tests/special/e-acsl-instrument.c:44: Warning: 
-  Neither code nor specification for function __builtin_va_arg, generating default assigns from the prototype
-[eva:alarm] tests/special/e-acsl-instrument.c:44: Warning: 
-  accessing uninitialized left-value.
-  assert \initialized(&tmp);
-  (tmp from vararg)
diff --git a/src/plugins/e-acsl/tests/special/oracle_ci/gen_e-acsl-instrument.c b/src/plugins/e-acsl/tests/special/oracle_ci/gen_e-acsl-instrument.c
index 2ef9690828f..24fc369486b 100644
--- a/src/plugins/e-acsl/tests/special/oracle_ci/gen_e-acsl-instrument.c
+++ b/src/plugins/e-acsl/tests/special/oracle_ci/gen_e-acsl-instrument.c
@@ -4,12 +4,6 @@
 #include "stdio.h"
 extern int __e_acsl_sound_verdict;
 
-/* compiler builtin: 
-   void __builtin_va_arg(__builtin_va_list, unsigned long, void *);   */
-/* compiler builtin: 
-   void __builtin_va_end(__builtin_va_list);   */
-/* compiler builtin: 
-   void __builtin_va_start(__builtin_va_list);   */
 int __gen_e_acsl_uninstrument1(int *p);
 
 int uninstrument1(int *p)
@@ -68,17 +62,22 @@ int instrument2(int *p)
   return __retres;
 }
 
-int vol(int n , ...)
+int vol(int n, void * const *__va_params)
 {
   int __retres;
   va_list vl;
   int tmp;
-  __builtin_va_start(vl,n);
-  tmp = __builtin_va_arg (vl, int);
-  /*@ assert Eva: initialization: \initialized(&tmp); */
+  __e_acsl_store_block((void *)(& vl),(size_t)8);
+  __e_acsl_store_block((void *)(& __va_params),(size_t)8);
+  __e_acsl_full_init((void *)(& vl));
+  vl = __va_params;
+  tmp = *((int *)*vl);
+  __e_acsl_full_init((void *)(& vl));
+  vl ++;
   int r = tmp;
-  __builtin_va_end(vl);
   __retres = 0;
+  __e_acsl_delete_block((void *)(& __va_params));
+  __e_acsl_delete_block((void *)(& vl));
   return __retres;
 }
 
@@ -113,7 +112,17 @@ int main(void)
                     57);
   }
   /*@ assert \initialized(&y); */ ;
-  tmp = vol(6,1);
+  {
+    int __va_arg0 = 1;
+    __e_acsl_store_block((void *)(& __va_arg0),(size_t)4);
+    __e_acsl_full_init((void *)(& __va_arg0));
+    void *__va_args[1] = {& __va_arg0};
+    __e_acsl_store_block((void *)(__va_args),(size_t)8);
+    __e_acsl_full_init((void *)(& __va_args));
+    tmp = vol(6,(void * const *)(__va_args));
+    __e_acsl_delete_block((void *)(& __va_arg0));
+    __e_acsl_delete_block((void *)(__va_args));
+  }
   __e_acsl_delete_block((void *)(& y));
   __e_acsl_delete_block((void *)(& x));
   __e_acsl_memory_clean();
diff --git a/src/plugins/e-acsl/tests/temporal/oracle_ci/gen_t_malloc-asan.c b/src/plugins/e-acsl/tests/temporal/oracle_ci/gen_t_malloc-asan.c
index 670764770e9..d718f3e61f8 100644
--- a/src/plugins/e-acsl/tests/temporal/oracle_ci/gen_t_malloc-asan.c
+++ b/src/plugins/e-acsl/tests/temporal/oracle_ci/gen_t_malloc-asan.c
@@ -58,7 +58,7 @@ int main(void)
       __e_acsl_temporal_reset_parameters();
       __e_acsl_temporal_reset_return();
       __e_acsl_temporal_save_nreferent_parameter((void *)(& p),1U);
-      printf(__gen_e_acsl_literal_string,p,counter);
+      printf(__gen_e_acsl_literal_string,(void *)p,counter); /* printf_va_1 */
       break;
     }
     __e_acsl_full_init((void *)(& p));
-- 
GitLab