From 7db690c0d1160fbcc7ba827138d6911bbf042164 Mon Sep 17 00:00:00 2001
From: Virgile Prevosto <virgile.prevosto@m4x.org>
Date: Sat, 14 Oct 2017 22:52:18 +0200
Subject: [PATCH] Update tests and oracles against kernel modifications

- improvement in Variadic
- local variables are now always kept, even if unused.
---
 src/plugins/e-acsl/tests/runtime/early_exit.c |  2 +-
 .../runtime/oracle/local_goto.res.oracle      |  1 -
 .../tests/temporal/oracle/gen_t_struct.c      | 27 ++++++++++++-------
 .../temporal/oracle/t_malloc-asan.res.oracle  |  1 -
 src/plugins/e-acsl/tests/temporal/t_struct.c  |  3 +++
 5 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/src/plugins/e-acsl/tests/runtime/early_exit.c b/src/plugins/e-acsl/tests/runtime/early_exit.c
index 8dd7631bf59..854a04a5573 100644
--- a/src/plugins/e-acsl/tests/runtime/early_exit.c
+++ b/src/plugins/e-acsl/tests/runtime/early_exit.c
@@ -124,7 +124,7 @@ int while_valid() {
  * are not recorded twice. */
 void continue_valid() {
   int i = 0;
-  int *p, *q, *r;
+  int *p, *q;
 
   while (i++) {
     /*@ assert ! \valid(p); */
diff --git a/src/plugins/e-acsl/tests/runtime/oracle/local_goto.res.oracle b/src/plugins/e-acsl/tests/runtime/oracle/local_goto.res.oracle
index 9e397cceed8..d7a840a8dc1 100644
--- a/src/plugins/e-acsl/tests/runtime/oracle/local_goto.res.oracle
+++ b/src/plugins/e-acsl/tests/runtime/oracle/local_goto.res.oracle
@@ -1,4 +1,3 @@
-[variadic] warning: Unable to locate global __fc_stdout which should be in the Frama-C LibC. Correct specifications can't be generated.
 [e-acsl] beginning translation.
 [e-acsl] warning: annotating undefined function `printf_va_1':
                   the generated program may miss memory instrumentation
diff --git a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_struct.c b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_struct.c
index 609ef70af85..3e368b613a5 100644
--- a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_struct.c
+++ b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_struct.c
@@ -9,13 +9,20 @@ struct larger_t {
    char *q ;
    struct temporal_t t ;
 };
+struct smaller_t {
+   char c ;
+};
 typedef struct temporal_t temporal;
 typedef struct larger_t larger;
+typedef struct smaller_t smaller;
 int main(void)
 {
   int __retres;
+  smaller s1 __attribute__((__aligned__(4)));
+  smaller s2 __attribute__((__aligned__(4)));
   temporal t1;
   temporal t2;
+  temporal *tp;
   temporal tarr[2];
   larger l;
   larger *lp;
@@ -31,6 +38,8 @@ int main(void)
   __e_acsl_store_block((void *)(& a),(size_t)4);
   __e_acsl_full_init((void *)(& a));
   int b = 2;
+  s1.c = (char)'a';
+  s2 = s1;
   __e_acsl_temporal_store_nblock((void *)(& t1.p),(void *)(& a));
   __e_acsl_initialize((void *)(& t1.p),sizeof(char *));
   t1.p = (char *)(& a);
@@ -67,7 +76,7 @@ int main(void)
     }
     else __gen_e_acsl_and_3 = 0;
     __e_acsl_assert(__gen_e_acsl_and_3,(char *)"Assertion",(char *)"main",
-                    (char *)"\\valid(t1.p) && \\valid(t1.q)",37);
+                    (char *)"\\valid(t1.p) && \\valid(t1.q)",40);
   }
   /*@ assert ¬\valid(t2.p) ∧ ¬\valid(t2.q); */
   {
@@ -99,7 +108,7 @@ int main(void)
     }
     else __gen_e_acsl_and_6 = 0;
     __e_acsl_assert(__gen_e_acsl_and_6,(char *)"Assertion",(char *)"main",
-                    (char *)"!\\valid(t2.p) && !\\valid(t2.q)",38);
+                    (char *)"!\\valid(t2.p) && !\\valid(t2.q)",41);
   }
   __e_acsl_temporal_memcpy((void *)(& t2),(void *)(& t1),(size_t)16);
   __e_acsl_full_init((void *)(& t2));
@@ -134,7 +143,7 @@ int main(void)
     }
     else __gen_e_acsl_and_9 = 0;
     __e_acsl_assert(__gen_e_acsl_and_9,(char *)"Assertion",(char *)"main",
-                    (char *)"\\valid(t2.p) && \\valid(t2.q)",41);
+                    (char *)"\\valid(t2.p) && \\valid(t2.q)",44);
   }
   __e_acsl_temporal_store_nblock((void *)(& t2.p),(void *)0);
   __e_acsl_initialize((void *)(& t2.p),sizeof(char *));
@@ -174,7 +183,7 @@ int main(void)
     }
     else __gen_e_acsl_and_12 = 0;
     __e_acsl_assert(__gen_e_acsl_and_12,(char *)"Assertion",(char *)"main",
-                    (char *)"!\\valid(t2.p) && \\valid(t2.q)",45);
+                    (char *)"!\\valid(t2.p) && \\valid(t2.q)",48);
   }
   __e_acsl_temporal_memcpy((void *)(& l.t),(void *)(& t2),(size_t)16);
   __e_acsl_initialize((void *)(& l.t),sizeof(struct temporal_t));
@@ -210,7 +219,7 @@ int main(void)
     }
     else __gen_e_acsl_and_15 = 0;
     __e_acsl_assert(__gen_e_acsl_and_15,(char *)"Assertion",(char *)"main",
-                    (char *)"!\\valid(l.t.p) && \\valid(l.t.q)",48);
+                    (char *)"!\\valid(l.t.p) && \\valid(l.t.q)",51);
   }
   __e_acsl_temporal_store_nblock((void *)(& lp),(void *)(& l));
   __e_acsl_full_init((void *)(& lp));
@@ -229,7 +238,7 @@ int main(void)
                                                     (void *)(& lp->t.p),
                                                     (void *)0);
       __e_acsl_assert(__gen_e_acsl_valid_read,(char *)"RTE",(char *)"main",
-                      (char *)"mem_access: \\valid_read(&lp->t.p)",51);
+                      (char *)"mem_access: \\valid_read(&lp->t.p)",54);
       __gen_e_acsl_valid_11 = __e_acsl_valid((void *)lp->t.p,sizeof(char),
                                              (void *)lp->t.p,
                                              (void *)(& lp->t.p));
@@ -237,7 +246,7 @@ int main(void)
     }
     else __gen_e_acsl_and_16 = 0;
     __e_acsl_assert(! __gen_e_acsl_and_16,(char *)"Assertion",(char *)"main",
-                    (char *)"!\\valid(lp->t.p)",51);
+                    (char *)"!\\valid(lp->t.p)",54);
   }
   __e_acsl_temporal_memcpy((void *)(tarr),(void *)(& t2),(size_t)16);
   __e_acsl_initialize((void *)(tarr),sizeof(temporal));
@@ -275,7 +284,7 @@ int main(void)
     }
     else __gen_e_acsl_and_19 = 0;
     __e_acsl_assert(__gen_e_acsl_and_19,(char *)"Assertion",(char *)"main",
-                    (char *)"!\\valid(tarr[0].p) && \\valid(tarr[0].q)",54);
+                    (char *)"!\\valid(tarr[0].p) && \\valid(tarr[0].q)",57);
   }
   __e_acsl_temporal_memcpy((void *)(larr),(void *)(& l),(size_t)32);
   __e_acsl_initialize((void *)(larr),sizeof(larger));
@@ -315,7 +324,7 @@ int main(void)
     else __gen_e_acsl_and_22 = 0;
     __e_acsl_assert(__gen_e_acsl_and_22,(char *)"Assertion",(char *)"main",
                     (char *)"!\\valid(larr[0].t.p) && \\valid(larr[0].t.q)",
-                    57);
+                    60);
   }
   __retres = 0;
   __e_acsl_delete_block((void *)(larr));
diff --git a/src/plugins/e-acsl/tests/temporal/oracle/t_malloc-asan.res.oracle b/src/plugins/e-acsl/tests/temporal/oracle/t_malloc-asan.res.oracle
index a84990844af..ba226e9e6d6 100644
--- a/src/plugins/e-acsl/tests/temporal/oracle/t_malloc-asan.res.oracle
+++ b/src/plugins/e-acsl/tests/temporal/oracle/t_malloc-asan.res.oracle
@@ -1,4 +1,3 @@
-[variadic] warning: Unable to locate global __fc_stdout which should be in the Frama-C LibC. Correct specifications can't be generated.
 [e-acsl] beginning translation.
 [e-acsl] warning: annotating undefined function `printf_va_1':
                   the generated program may miss memory instrumentation
diff --git a/src/plugins/e-acsl/tests/temporal/t_struct.c b/src/plugins/e-acsl/tests/temporal/t_struct.c
index 46863586863..3dda7fb5989 100644
--- a/src/plugins/e-acsl/tests/temporal/t_struct.c
+++ b/src/plugins/e-acsl/tests/temporal/t_struct.c
@@ -32,6 +32,9 @@ int main(void) {
   temporal t1, t2, *tp, tarr[2];
   larger l, *lp, larr[2];
 
+  s1.c = 'a';
+  s2 = s1;
+
   t1.p = &a;
   t1.q = t1.p;
   /*@assert \valid(t1.p) && \valid(t1.q);  */
-- 
GitLab