From f5cfd9b3e57e3d0d6401ecbcc61ed582e9f48f12 Mon Sep 17 00:00:00 2001
From: Basile Desloges <basile.desloges@cea.fr>
Date: Mon, 2 Aug 2021 17:40:56 +0200
Subject: [PATCH] [eacsl] Fix global C variable __e_acsl_sound_verdict

- The global variable is now a Frama-C built-in and is not monitored;
- The `varinfo` for the variable, retrieved in module `Prepare_ast` is
  now exposed;
- The variable is added to every generated code so that it can be used
  by a later analysis of E-ACSL.
---
 .../e-acsl/instrumentation_model/e_acsl_assert.h |  2 +-
 .../src/project_initializer/prepare_ast.ml       | 16 ++++++++--------
 .../src/project_initializer/prepare_ast.mli      |  7 +++++++
 .../e-acsl/tests/arith/oracle/gen_arith.c        |  2 ++
 .../e-acsl/tests/arith/oracle/gen_array.c        |  2 ++
 src/plugins/e-acsl/tests/arith/oracle/gen_at.c   |  2 +-
 .../oracle/gen_at_on-purely-logic-variables.c    |  2 +-
 .../e-acsl/tests/arith/oracle/gen_bitwise.c      |  2 ++
 src/plugins/e-acsl/tests/arith/oracle/gen_cast.c |  2 ++
 .../e-acsl/tests/arith/oracle/gen_comparison.c   |  2 ++
 .../e-acsl/tests/arith/oracle/gen_functions.c    |  2 +-
 .../tests/arith/oracle/gen_functions_rec.c       |  2 ++
 .../tests/arith/oracle/gen_integer_constant.c    |  2 ++
 src/plugins/e-acsl/tests/arith/oracle/gen_let.c  |  2 ++
 .../e-acsl/tests/arith/oracle/gen_longlong.c     |  2 ++
 src/plugins/e-acsl/tests/arith/oracle/gen_not.c  |  2 ++
 .../e-acsl/tests/arith/oracle/gen_quantif.c      |  2 ++
 .../e-acsl/tests/arith/oracle/gen_rationals.c    |  2 +-
 src/plugins/e-acsl/tests/arith/oracle/gen_sum.c  |  2 ++
 .../e-acsl/tests/bts/oracle/gen_bts1304.c        |  2 ++
 .../e-acsl/tests/bts/oracle/gen_bts1307.c        |  2 +-
 .../e-acsl/tests/bts/oracle/gen_bts1324.c        |  2 +-
 .../e-acsl/tests/bts/oracle/gen_bts1326.c        |  2 +-
 .../bts/oracle/gen_bts1386_complex_flowgraph.c   |  2 ++
 .../e-acsl/tests/bts/oracle/gen_bts1390.c        |  2 +-
 .../e-acsl/tests/bts/oracle/gen_bts1395.c        |  2 +-
 .../e-acsl/tests/bts/oracle/gen_bts1398.c        |  2 ++
 .../e-acsl/tests/bts/oracle/gen_bts1399.c        |  2 ++
 .../e-acsl/tests/bts/oracle/gen_bts1478.c        |  2 +-
 .../e-acsl/tests/bts/oracle/gen_bts1700.c        |  2 ++
 .../e-acsl/tests/bts/oracle/gen_bts1717.c        |  2 ++
 .../e-acsl/tests/bts/oracle/gen_bts1718.c        |  2 ++
 .../e-acsl/tests/bts/oracle/gen_bts1740.c        |  2 ++
 .../e-acsl/tests/bts/oracle/gen_bts1837.c        |  2 ++
 .../e-acsl/tests/bts/oracle/gen_bts2191.c        |  2 ++
 .../e-acsl/tests/bts/oracle/gen_bts2192.c        |  2 +-
 .../e-acsl/tests/bts/oracle/gen_bts2231.c        |  2 ++
 .../e-acsl/tests/bts/oracle/gen_bts2252.c        |  2 +-
 .../e-acsl/tests/bts/oracle/gen_bts2305.c        |  2 ++
 .../e-acsl/tests/bts/oracle/gen_bts2386.c        |  2 ++
 .../e-acsl/tests/bts/oracle/gen_bts2406.c        |  2 ++
 .../tests/bts/oracle/gen_issue-eacsl-105.c       |  2 ++
 .../tests/bts/oracle/gen_issue-eacsl-139.c       |  2 +-
 .../tests/bts/oracle/gen_issue-eacsl-145.c       |  2 ++
 .../tests/bts/oracle/gen_issue-eacsl-149.c       |  2 ++
 .../tests/bts/oracle/gen_issue-eacsl-172.c       |  2 ++
 .../e-acsl/tests/bts/oracle/gen_issue-eacsl-91.c |  2 ++
 .../e-acsl/tests/bts/oracle/gen_issue69.c        |  2 ++
 .../tests/bts/oracle/issue-eacsl-145.res.oracle  |  2 ++
 .../builtin/oracle/gen_builtin_literal_string.c  |  2 ++
 .../gen_builtin_literal_string_local_init.c      |  2 ++
 .../e-acsl/tests/builtin/oracle/gen_strcat.c     |  2 +-
 .../e-acsl/tests/builtin/oracle/gen_strcmp.c     |  2 +-
 .../e-acsl/tests/builtin/oracle/gen_strcpy.c     |  2 +-
 .../e-acsl/tests/builtin/oracle/gen_strlen.c     |  2 +-
 .../tests/constructs/oracle/gen_acsl_check.c     |  2 +-
 .../tests/constructs/oracle/gen_decrease.c       |  2 +-
 .../e-acsl/tests/constructs/oracle/gen_false.c   |  2 ++
 .../constructs/oracle/gen_function_contract.c    |  2 +-
 .../e-acsl/tests/constructs/oracle/gen_ghost.c   |  2 ++
 .../tests/constructs/oracle/gen_invariant.c      |  2 ++
 .../tests/constructs/oracle/gen_labeled_stmt.c   |  2 +-
 .../e-acsl/tests/constructs/oracle/gen_lazy.c    |  2 ++
 .../e-acsl/tests/constructs/oracle/gen_loop.c    |  2 ++
 .../constructs/oracle/gen_nested_code_annot.c    |  2 ++
 .../e-acsl/tests/constructs/oracle/gen_result.c  |  2 +-
 .../e-acsl/tests/constructs/oracle/gen_rte.c     |  2 +-
 .../tests/constructs/oracle/gen_stmt_contract.c  |  2 ++
 .../e-acsl/tests/constructs/oracle/gen_true.c    |  2 ++
 .../e-acsl/tests/constructs/oracle/gen_typedef.c |  2 ++
 .../examples/oracle/gen_functions_contiki.c      |  2 ++
 .../tests/examples/oracle/gen_linear_search.c    |  2 +-
 .../e-acsl/tests/format/oracle/gen_fprintf.c     |  2 +-
 .../e-acsl/tests/format/oracle/gen_printf.c      |  2 +-
 .../tests/full-mtracking/oracle/gen_addrOf.c     |  2 ++
 .../e-acsl/tests/gmp-only/oracle/gen_arith.c     |  2 ++
 .../e-acsl/tests/gmp-only/oracle/gen_functions.c |  2 +-
 .../e-acsl/tests/memory/oracle/gen_addrOf.c      |  2 ++
 .../e-acsl/tests/memory/oracle/gen_alias.c       |  2 ++
 .../tests/memory/oracle/gen_array_overflow.c     |  2 ++
 .../e-acsl/tests/memory/oracle/gen_base_addr.c   |  2 ++
 .../tests/memory/oracle/gen_block_length.c       |  2 ++
 .../e-acsl/tests/memory/oracle/gen_block_valid.c |  2 ++
 .../tests/memory/oracle/gen_bypassed_var.c       |  2 ++
 .../e-acsl/tests/memory/oracle/gen_call.c        |  2 +-
 .../memory/oracle/gen_compound_initializers.c    |  2 ++
 .../e-acsl/tests/memory/oracle/gen_constructor.c |  2 ++
 .../tests/memory/oracle/gen_ctype_macros.c       |  2 +-
 .../tests/memory/oracle/gen_decl_in_switch.c     |  2 ++
 .../e-acsl/tests/memory/oracle/gen_early_exit.c  |  2 ++
 .../e-acsl/tests/memory/oracle/gen_errno.c       |  2 ++
 .../e-acsl/tests/memory/oracle/gen_freeable.c    |  2 ++
 .../tests/memory/oracle/gen_ghost_parameters.c   |  2 ++
 .../e-acsl/tests/memory/oracle/gen_goto.c        |  2 ++
 .../tests/memory/oracle/gen_hidden_malloc.c      |  2 ++
 .../e-acsl/tests/memory/oracle/gen_init.c        |  2 ++
 .../tests/memory/oracle/gen_init_function.c      |  2 ++
 .../e-acsl/tests/memory/oracle/gen_initialized.c |  2 ++
 .../tests/memory/oracle/gen_literal_string.c     |  2 ++
 .../e-acsl/tests/memory/oracle/gen_local_goto.c  |  2 ++
 .../e-acsl/tests/memory/oracle/gen_local_init.c  |  2 ++
 .../e-acsl/tests/memory/oracle/gen_local_var.c   |  2 ++
 .../e-acsl/tests/memory/oracle/gen_mainargs.c    |  2 +-
 .../e-acsl/tests/memory/oracle/gen_memalign.c    |  2 +-
 .../e-acsl/tests/memory/oracle/gen_memsize.c     |  2 ++
 .../e-acsl/tests/memory/oracle/gen_null.c        |  2 ++
 .../e-acsl/tests/memory/oracle/gen_offset.c      |  2 ++
 .../tests/memory/oracle/gen_other_constants.c    |  2 ++
 src/plugins/e-acsl/tests/memory/oracle/gen_ptr.c |  2 ++
 .../e-acsl/tests/memory/oracle/gen_ptr_init.c    |  2 ++
 .../tests/memory/oracle/gen_ranges_in_builtins.c |  2 +-
 .../e-acsl/tests/memory/oracle/gen_separated.c   |  2 ++
 .../e-acsl/tests/memory/oracle/gen_sizeof.c      |  2 ++
 .../e-acsl/tests/memory/oracle/gen_stdout.c      |  2 ++
 .../tests/memory/oracle/gen_struct_initialized.c |  2 ++
 .../e-acsl/tests/memory/oracle/gen_valid.c       |  2 +-
 .../e-acsl/tests/memory/oracle/gen_valid_alias.c |  2 ++
 .../tests/memory/oracle/gen_valid_in_contract.c  |  2 +-
 .../e-acsl/tests/memory/oracle/gen_vector.c      |  2 ++
 src/plugins/e-acsl/tests/memory/oracle/gen_vla.c |  2 ++
 .../e-acsl/tests/special/oracle/gen_builtin.c    |  2 +-
 .../special/oracle/gen_e-acsl-bittree-model.c    |  2 ++
 .../special/oracle/gen_e-acsl-compile-dlmalloc.c |  2 ++
 .../tests/special/oracle/gen_e-acsl-functions.c  |  2 +-
 .../tests/special/oracle/gen_e-acsl-instrument.c |  2 +-
 .../tests/special/oracle/gen_e-acsl-rt-debug.c   |  2 ++
 .../special/oracle/gen_e-acsl-segment-model.c    |  2 ++
 .../tests/special/oracle/gen_e-acsl-valid.c      |  2 +-
 .../tests/temporal/oracle/gen_t_addr-by-val.c    |  2 ++
 .../e-acsl/tests/temporal/oracle/gen_t_args.c    |  2 ++
 .../e-acsl/tests/temporal/oracle/gen_t_array.c   |  2 ++
 .../e-acsl/tests/temporal/oracle/gen_t_char.c    |  2 ++
 .../e-acsl/tests/temporal/oracle/gen_t_darray.c  |  2 ++
 .../tests/temporal/oracle/gen_t_dpointer.c       |  2 ++
 .../e-acsl/tests/temporal/oracle/gen_t_fptr.c    |  2 ++
 .../e-acsl/tests/temporal/oracle/gen_t_fun_lib.c |  2 ++
 .../e-acsl/tests/temporal/oracle/gen_t_fun_ptr.c |  2 ++
 .../e-acsl/tests/temporal/oracle/gen_t_getenv.c  |  2 +-
 .../tests/temporal/oracle/gen_t_global_init.c    |  2 ++
 .../e-acsl/tests/temporal/oracle/gen_t_labels.c  |  2 ++
 .../tests/temporal/oracle/gen_t_lit_string.c     |  2 ++
 .../tests/temporal/oracle/gen_t_local_init.c     |  2 ++
 .../tests/temporal/oracle/gen_t_malloc-asan.c    |  2 ++
 .../e-acsl/tests/temporal/oracle/gen_t_malloc.c  |  2 ++
 .../e-acsl/tests/temporal/oracle/gen_t_memcpy.c  |  2 +-
 .../e-acsl/tests/temporal/oracle/gen_t_scope.c   |  2 ++
 .../e-acsl/tests/temporal/oracle/gen_t_struct.c  |  2 ++
 .../e-acsl/tests/temporal/oracle/gen_t_while.c   |  2 ++
 148 files changed, 266 insertions(+), 49 deletions(-)

diff --git a/src/plugins/e-acsl/share/e-acsl/instrumentation_model/e_acsl_assert.h b/src/plugins/e-acsl/share/e-acsl/instrumentation_model/e_acsl_assert.h
index 6cc1a782efd..8e0abca525e 100644
--- a/src/plugins/e-acsl/share/e-acsl/instrumentation_model/e_acsl_assert.h
+++ b/src/plugins/e-acsl/share/e-acsl/instrumentation_model/e_acsl_assert.h
@@ -37,7 +37,7 @@
     becomes unsound.
     TODO: may only happen for annotations containing memory-related properties.
     For arithmetic properties, the verdict is always sound (?). */
-extern int eacsl_runtime_sound_verdict;
+extern int __attribute__((FC_BUILTIN)) eacsl_runtime_sound_verdict;
 
 /*! \brief Runtime assertion verifying a given predicate
  *  \param pred  integer code of a predicate
diff --git a/src/plugins/e-acsl/src/project_initializer/prepare_ast.ml b/src/plugins/e-acsl/src/project_initializer/prepare_ast.ml
index 03412904536..246dd0b7c06 100644
--- a/src/plugins/e-acsl/src/project_initializer/prepare_ast.ml
+++ b/src/plugins/e-acsl/src/project_initializer/prepare_ast.ml
@@ -357,8 +357,11 @@ let sound_verdict_vi =
      let vi = Cil.makeGlobalVar name Cil.intType in
      vi.vstorage <- Extern;
      vi.vreferenced <- true;
+     vi.vattr <- Cil.addAttribute (Attr ("FC_BUILTIN", [])) vi.vattr;
      vi)
 
+let sound_verdict () = Lazy.force sound_verdict_vi
+
 let is_variadic_function vi = match Cil.unrollType vi.vtype with
   | TFun(_, _, variadic, _) -> variadic
   | _ -> false
@@ -460,14 +463,11 @@ let prepare_file file =
   let rev_globals, new_defs =
     List.fold_left prepare_global ([], []) file.globals
   in
-  match new_defs with
-  | [] -> ()
-  | _ :: _ ->
-    (* insert the new_definitions at the end and reverse back the globals *)
-    let globals = List.fold_left (fun acc g -> g :: acc) new_defs rev_globals in
-    (* insert [__e_acsl_sound_verdict] at the beginning *)
-    let sg = GVarDecl(Lazy.force sound_verdict_vi, Location.unknown) in
-    file.globals <- sg :: globals
+  (* insert the new_definitions at the end and reverse back the globals *)
+  let globals = List.fold_left (fun acc g -> g :: acc) new_defs rev_globals in
+  (* insert [__e_acsl_sound_verdict] at the beginning *)
+  let sg = GVarDecl(Lazy.force sound_verdict_vi, Location.unknown) in
+  file.globals <- sg :: globals
 
 let prepare () =
   Options.feedback ~level:2 "prepare AST for E-ACSL transformations";
diff --git a/src/plugins/e-acsl/src/project_initializer/prepare_ast.mli b/src/plugins/e-acsl/src/project_initializer/prepare_ast.mli
index 65ea62daf18..ba19b909922 100644
--- a/src/plugins/e-acsl/src/project_initializer/prepare_ast.mli
+++ b/src/plugins/e-acsl/src/project_initializer/prepare_ast.mli
@@ -28,7 +28,14 @@
     - in case of temporal validity checks, adding the attribute "aligned" to
       variables that are not sufficiently aligned. *)
 
+open Cil_types
+
 val prepare: unit -> unit
+(** Prepare the AST *)
+
+val sound_verdict: unit -> varinfo
+(** @return the [varinfo] representing the E-ACSL global variable that indicates
+    whether the verdict emitted by E-ACSL is sound. *)
 
 (*
 Local Variables:
diff --git a/src/plugins/e-acsl/tests/arith/oracle/gen_arith.c b/src/plugins/e-acsl/tests/arith/oracle/gen_arith.c
index 5ce6877d82a..b5265e84689 100644
--- a/src/plugins/e-acsl/tests/arith/oracle/gen_arith.c
+++ b/src/plugins/e-acsl/tests/arith/oracle/gen_arith.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/arith/oracle/gen_array.c b/src/plugins/e-acsl/tests/arith/oracle/gen_array.c
index 645c5842435..a559df9509b 100644
--- a/src/plugins/e-acsl/tests/arith/oracle/gen_array.c
+++ b/src/plugins/e-acsl/tests/arith/oracle/gen_array.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int T1[3];
 int T2[4];
 void arrays(void)
diff --git a/src/plugins/e-acsl/tests/arith/oracle/gen_at.c b/src/plugins/e-acsl/tests/arith/oracle/gen_at.c
index c8e5107e1e1..e366ee59e16 100644
--- a/src/plugins/e-acsl/tests/arith/oracle/gen_at.c
+++ b/src/plugins/e-acsl/tests/arith/oracle/gen_at.c
@@ -1,7 +1,7 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 int A = 0;
 /*@ ensures \at(A,Post) ≡ 3; */
diff --git a/src/plugins/e-acsl/tests/arith/oracle/gen_at_on-purely-logic-variables.c b/src/plugins/e-acsl/tests/arith/oracle/gen_at_on-purely-logic-variables.c
index 46951ce8751..0cde64feb6c 100644
--- a/src/plugins/e-acsl/tests/arith/oracle/gen_at_on-purely-logic-variables.c
+++ b/src/plugins/e-acsl/tests/arith/oracle/gen_at_on-purely-logic-variables.c
@@ -1,7 +1,7 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 /*@ ensures
       ∀ ℤ n;
diff --git a/src/plugins/e-acsl/tests/arith/oracle/gen_bitwise.c b/src/plugins/e-acsl/tests/arith/oracle/gen_bitwise.c
index 54340192b07..a421b3f34be 100644
--- a/src/plugins/e-acsl/tests/arith/oracle/gen_bitwise.c
+++ b/src/plugins/e-acsl/tests/arith/oracle/gen_bitwise.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 void f_signed(int a, int b)
 {
   int c = a << 2;
diff --git a/src/plugins/e-acsl/tests/arith/oracle/gen_cast.c b/src/plugins/e-acsl/tests/arith/oracle/gen_cast.c
index b41c0d12d81..c63917398ce 100644
--- a/src/plugins/e-acsl/tests/arith/oracle/gen_cast.c
+++ b/src/plugins/e-acsl/tests/arith/oracle/gen_cast.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/arith/oracle/gen_comparison.c b/src/plugins/e-acsl/tests/arith/oracle/gen_comparison.c
index f28ab0ad20b..896c9741e9e 100644
--- a/src/plugins/e-acsl/tests/arith/oracle/gen_comparison.c
+++ b/src/plugins/e-acsl/tests/arith/oracle/gen_comparison.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/arith/oracle/gen_functions.c b/src/plugins/e-acsl/tests/arith/oracle/gen_functions.c
index 8c84d1d06f7..01bee92554d 100644
--- a/src/plugins/e-acsl/tests/arith/oracle/gen_functions.c
+++ b/src/plugins/e-acsl/tests/arith/oracle/gen_functions.c
@@ -1,7 +1,7 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 struct mystruct {
    int k ;
diff --git a/src/plugins/e-acsl/tests/arith/oracle/gen_functions_rec.c b/src/plugins/e-acsl/tests/arith/oracle/gen_functions_rec.c
index b766248de7c..db81ac4861a 100644
--- a/src/plugins/e-acsl/tests/arith/oracle/gen_functions_rec.c
+++ b/src/plugins/e-acsl/tests/arith/oracle/gen_functions_rec.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 /*@ logic ℤ f1(ℤ n) = n ≤ 0? 0: f1(n - 1) + n;
 
 */
diff --git a/src/plugins/e-acsl/tests/arith/oracle/gen_integer_constant.c b/src/plugins/e-acsl/tests/arith/oracle/gen_integer_constant.c
index 323698c0e1b..096a8cd3446 100644
--- a/src/plugins/e-acsl/tests/arith/oracle/gen_integer_constant.c
+++ b/src/plugins/e-acsl/tests/arith/oracle/gen_integer_constant.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/arith/oracle/gen_let.c b/src/plugins/e-acsl/tests/arith/oracle/gen_let.c
index e2cdd5cf877..fc128640194 100644
--- a/src/plugins/e-acsl/tests/arith/oracle/gen_let.c
+++ b/src/plugins/e-acsl/tests/arith/oracle/gen_let.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 struct __anonstruct_r_1 {
    int x ;
    int y ;
diff --git a/src/plugins/e-acsl/tests/arith/oracle/gen_longlong.c b/src/plugins/e-acsl/tests/arith/oracle/gen_longlong.c
index 21f7073ae45..0f5ccda8356 100644
--- a/src/plugins/e-acsl/tests/arith/oracle/gen_longlong.c
+++ b/src/plugins/e-acsl/tests/arith/oracle/gen_longlong.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 unsigned long long my_pow(unsigned int x, unsigned int n)
 {
   unsigned long long __retres;
diff --git a/src/plugins/e-acsl/tests/arith/oracle/gen_not.c b/src/plugins/e-acsl/tests/arith/oracle/gen_not.c
index e3add3ad4d5..2d7529f38a8 100644
--- a/src/plugins/e-acsl/tests/arith/oracle/gen_not.c
+++ b/src/plugins/e-acsl/tests/arith/oracle/gen_not.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/arith/oracle/gen_quantif.c b/src/plugins/e-acsl/tests/arith/oracle/gen_quantif.c
index f84cfba6458..ccb7b6be6c7 100644
--- a/src/plugins/e-acsl/tests/arith/oracle/gen_quantif.c
+++ b/src/plugins/e-acsl/tests/arith/oracle/gen_quantif.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 /*@
 predicate p1(ℤ i, ℤ j, ℤ k) =
   0 ≤ i < 10 ∧ 1 < j ≤ 11 ∧ 2 ≤ k ≤ 12;
diff --git a/src/plugins/e-acsl/tests/arith/oracle/gen_rationals.c b/src/plugins/e-acsl/tests/arith/oracle/gen_rationals.c
index 7f3061dd52d..48483e5005e 100644
--- a/src/plugins/e-acsl/tests/arith/oracle/gen_rationals.c
+++ b/src/plugins/e-acsl/tests/arith/oracle/gen_rationals.c
@@ -1,7 +1,7 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 /*@ ensures \let delta = 1;
       \let avg_real = (\old(a) + \old(b)) / 2;
diff --git a/src/plugins/e-acsl/tests/arith/oracle/gen_sum.c b/src/plugins/e-acsl/tests/arith/oracle/gen_sum.c
index 79eefaaa977..5e70777069f 100644
--- a/src/plugins/e-acsl/tests/arith/oracle/gen_sum.c
+++ b/src/plugins/e-acsl/tests/arith/oracle/gen_sum.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1304.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1304.c
index 4ec7740d794..ef6ec87ac42 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1304.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1304.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 struct msgA {
    int type ;
    int a[2] ;
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1307.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1307.c
index 2712efec6e0..1f57c126452 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1307.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1307.c
@@ -1,7 +1,7 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 /*@ requires \valid(Mtmax_in);
     requires \valid(Mwmax);
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1324.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1324.c
index 13ed0297405..c5b6665908d 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1324.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1324.c
@@ -1,7 +1,7 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 /*@ behavior yes:
       assumes ∀ int i; 0 < i < n ⇒ *(t + (i - 1)) ≤ *(t + i);
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1326.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1326.c
index c8bbc5d7f69..e4ce2b0300f 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1326.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1326.c
@@ -1,7 +1,7 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 typedef int ArrayInt[5];
 /*@ ensures
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1386_complex_flowgraph.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1386_complex_flowgraph.c
index 02552add425..1b997cf7e67 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1386_complex_flowgraph.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1386_complex_flowgraph.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 void duffcopy(char *to, char *from, int count)
 {
   __e_acsl_store_block((void *)(& from),(size_t)8);
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1390.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1390.c
index c2f45cea322..3b092ae6734 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1390.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1390.c
@@ -4,7 +4,7 @@
 #include "stdlib.h"
 char *__gen_e_acsl_literal_string;
 char *__gen_e_acsl_literal_string_2;
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 /*@ behavior exists:
       assumes ∃ ℤ i; 0 ≤ i < (int)n ∧ (int)*((char *)buf + i) ≡ c;
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1395.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1395.c
index 7ffe91bbde5..43a7af62321 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1395.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1395.c
@@ -1,7 +1,7 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 /*@ requires n > 0; */
 int __gen_e_acsl_fact(int n);
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1398.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1398.c
index b2502604424..1709bdc247e 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1398.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1398.c
@@ -2,6 +2,8 @@
 #include "stddef.h"
 #include "stdio.h"
 char *__gen_e_acsl_literal_string;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 void __e_acsl_globals_init(void)
 {
   static char __e_acsl_already_run = 0;
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1399.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1399.c
index bf9d598f181..35354e15a4a 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1399.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1399.c
@@ -2,6 +2,8 @@
 #include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 struct spongeStateStruct {
    unsigned char __attribute__((__aligned__(32))) state[1600 / 8] ;
    unsigned char __attribute__((__aligned__(32))) dataQueue[1536 / 8] ;
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1478.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1478.c
index 2abb8670fe0..db165cf968b 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1478.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1478.c
@@ -1,7 +1,7 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 int global_i;
 
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1700.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1700.c
index 87055c52db1..8693ba5674d 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1700.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1700.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 struct toto {
    
 };
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1717.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1717.c
index 8eeb9dfe863..9a2a7e93911 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1717.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1717.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1718.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1718.c
index 860f3a8a94e..72cbffe72fd 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1718.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1718.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1740.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1740.c
index 33cb6770be6..ad106a78c1a 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1740.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1740.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1837.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1837.c
index f99068ea384..e79ccbae463 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts1837.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts1837.c
@@ -4,6 +4,8 @@
 char *__gen_e_acsl_literal_string_3;
 char *__gen_e_acsl_literal_string;
 char *__gen_e_acsl_literal_string_2;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 char *S = (char *)"foo";
 int f(void)
 {
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts2191.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts2191.c
index e5962bf77af..870b526f608 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts2191.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts2191.c
@@ -3,6 +3,8 @@
 #include "stdio.h"
 char *__gen_e_acsl_literal_string;
 char *__gen_e_acsl_literal_string_2;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 struct ST {
    char *str ;
    int num ;
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts2192.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts2192.c
index 5f9a57c6e5e..d71a4c41cf7 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts2192.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts2192.c
@@ -3,7 +3,7 @@
 #include "stdio.h"
 #include "stdlib.h"
 char *__gen_e_acsl_literal_string;
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 /*@ requires valid_nptr: \valid_read(nptr);
     assigns \result;
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts2231.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts2231.c
index 5195a4392ce..4a9f3921fd8 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts2231.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts2231.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 long A = (long)0;
 int main(void)
 {
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts2252.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts2252.c
index 65224637492..274ddffd5a5 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts2252.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts2252.c
@@ -4,7 +4,7 @@
 #include "stdlib.h"
 #include "string.h"
 char *__gen_e_acsl_literal_string;
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 /*@ requires valid_nstring_src: valid_read_nstring(src, n);
     requires room_nstring: \valid(dest + (0 .. n - 1));
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts2305.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts2305.c
index 327af999d25..eb8feac0bb5 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts2305.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts2305.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 struct bitfields {
    int i : 2 ;
    _Bool j : 1 ;
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts2386.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts2386.c
index 16f7fca7437..c14d3f8d10b 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts2386.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts2386.c
@@ -2,6 +2,8 @@
 #include "stddef.h"
 #include "stdio.h"
 char *__gen_e_acsl_literal_string;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 void f(void const *s, int c, unsigned long n)
 {
   __e_acsl_store_block((void *)(& s),(size_t)8);
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_bts2406.c b/src/plugins/e-acsl/tests/bts/oracle/gen_bts2406.c
index 7aefc7c01ed..d4fccb9af3c 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_bts2406.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_bts2406.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 char const tab[];
 char t[10];
 void __e_acsl_globals_init(void)
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-105.c b/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-105.c
index 51f9bd0c5a8..2c8298f36dc 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-105.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-105.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int f(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-139.c b/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-139.c
index fc022eb87e2..3afa85d098a 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-139.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-139.c
@@ -1,7 +1,7 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 struct X {
    int i ;
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-145.c b/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-145.c
index 5e59848212a..a68b9bc741b 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-145.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-145.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int G = 0;
 void __e_acsl_globals_init(void)
 {
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-149.c b/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-149.c
index f8be21500b2..449ce90d451 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-149.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-149.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(int argc, char **argv)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-172.c b/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-172.c
index fc026da4d14..b6559e0ca88 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-172.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-172.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 double d2 = 11.;
 int main(void)
 {
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-91.c b/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-91.c
index b83e193f02f..b393878b816 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-91.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-91.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 short a;
 char b(void)
 {
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_issue69.c b/src/plugins/e-acsl/tests/bts/oracle/gen_issue69.c
index d703479245e..9451a4f466e 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_issue69.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_issue69.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/bts/oracle/issue-eacsl-145.res.oracle b/src/plugins/e-acsl/tests/bts/oracle/issue-eacsl-145.res.oracle
index 6ba35db7101..e7143f3c725 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/issue-eacsl-145.res.oracle
+++ b/src/plugins/e-acsl/tests/bts/oracle/issue-eacsl-145.res.oracle
@@ -7,6 +7,8 @@
 [eva] Initial state computed
 [eva:initial-state] Values of globals at initialization
   G ∈ {0}
+  __e_acsl_sound_verdict ∈ [--..--]
+  __e_acsl_sound_verdict ∈ [--..--]
   __e_acsl_heap_allocation_size ∈ [--..--]
   __e_acsl_heap_allocated_blocks ∈ [--..--]
   __fc_heap_status ∈ [--..--]
diff --git a/src/plugins/e-acsl/tests/builtin/oracle/gen_builtin_literal_string.c b/src/plugins/e-acsl/tests/builtin/oracle/gen_builtin_literal_string.c
index e5950f81d78..f457dfd771a 100644
--- a/src/plugins/e-acsl/tests/builtin/oracle/gen_builtin_literal_string.c
+++ b/src/plugins/e-acsl/tests/builtin/oracle/gen_builtin_literal_string.c
@@ -3,6 +3,8 @@
 #include "stdio.h"
 #include "string.h"
 char *__gen_e_acsl_literal_string;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 void __e_acsl_globals_init(void)
 {
   static char __e_acsl_already_run = 0;
diff --git a/src/plugins/e-acsl/tests/builtin/oracle/gen_builtin_literal_string_local_init.c b/src/plugins/e-acsl/tests/builtin/oracle/gen_builtin_literal_string_local_init.c
index c3b9b764653..93dcd481afd 100644
--- a/src/plugins/e-acsl/tests/builtin/oracle/gen_builtin_literal_string_local_init.c
+++ b/src/plugins/e-acsl/tests/builtin/oracle/gen_builtin_literal_string_local_init.c
@@ -3,6 +3,8 @@
 #include "stdio.h"
 #include "string.h"
 char *__gen_e_acsl_literal_string;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 void __e_acsl_globals_init(void)
 {
   static char __e_acsl_already_run = 0;
diff --git a/src/plugins/e-acsl/tests/builtin/oracle/gen_strcat.c b/src/plugins/e-acsl/tests/builtin/oracle/gen_strcat.c
index 7fe4c9f0b8e..8fcaa4939fa 100644
--- a/src/plugins/e-acsl/tests/builtin/oracle/gen_strcat.c
+++ b/src/plugins/e-acsl/tests/builtin/oracle/gen_strcat.c
@@ -38,7 +38,7 @@ char *__gen_e_acsl_literal_string_3;
 char *__gen_e_acsl_literal_string_5;
 char *__gen_e_acsl_literal_string_4;
 char *__gen_e_acsl_literal_string_7;
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 /*@ exits status: \exit_status ≡ \old(status);
     ensures never_terminates: \false;
diff --git a/src/plugins/e-acsl/tests/builtin/oracle/gen_strcmp.c b/src/plugins/e-acsl/tests/builtin/oracle/gen_strcmp.c
index 6b1a1141469..4978156adb8 100644
--- a/src/plugins/e-acsl/tests/builtin/oracle/gen_strcmp.c
+++ b/src/plugins/e-acsl/tests/builtin/oracle/gen_strcmp.c
@@ -41,7 +41,7 @@ char *__gen_e_acsl_literal_string_2;
 char *__gen_e_acsl_literal_string_3;
 char *__gen_e_acsl_literal_string_5;
 char *__gen_e_acsl_literal_string_4;
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 /*@ exits status: \exit_status ≢ 0;
     ensures never_terminates: \false;
diff --git a/src/plugins/e-acsl/tests/builtin/oracle/gen_strcpy.c b/src/plugins/e-acsl/tests/builtin/oracle/gen_strcpy.c
index 3088f87001a..09d7c8aff99 100644
--- a/src/plugins/e-acsl/tests/builtin/oracle/gen_strcpy.c
+++ b/src/plugins/e-acsl/tests/builtin/oracle/gen_strcpy.c
@@ -33,7 +33,7 @@ char *__gen_e_acsl_literal_string_3;
 char *__gen_e_acsl_literal_string_5;
 char *__gen_e_acsl_literal_string_4;
 char *__gen_e_acsl_literal_string_8;
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 /*@ exits status: \exit_status ≡ \old(status);
     ensures never_terminates: \false;
diff --git a/src/plugins/e-acsl/tests/builtin/oracle/gen_strlen.c b/src/plugins/e-acsl/tests/builtin/oracle/gen_strlen.c
index 4ef82acb2bc..31d35b177ab 100644
--- a/src/plugins/e-acsl/tests/builtin/oracle/gen_strlen.c
+++ b/src/plugins/e-acsl/tests/builtin/oracle/gen_strlen.c
@@ -24,7 +24,7 @@ char *__gen_e_acsl_literal_string_3;
 char *__gen_e_acsl_literal_string_5;
 char *__gen_e_acsl_literal_string_4;
 char *__gen_e_acsl_literal_string_6;
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 /*@ exits status: \exit_status ≢ 0;
     ensures never_terminates: \false;
diff --git a/src/plugins/e-acsl/tests/constructs/oracle/gen_acsl_check.c b/src/plugins/e-acsl/tests/constructs/oracle/gen_acsl_check.c
index b9dd1eabfab..d6c33875d60 100644
--- a/src/plugins/e-acsl/tests/constructs/oracle/gen_acsl_check.c
+++ b/src/plugins/e-acsl/tests/constructs/oracle/gen_acsl_check.c
@@ -2,7 +2,7 @@
 #include "stddef.h"
 #include "stdio.h"
 char *__gen_e_acsl_literal_string;
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 /*@ check requires a ≢ 0;
     check ensures \result ≢ 0; */
diff --git a/src/plugins/e-acsl/tests/constructs/oracle/gen_decrease.c b/src/plugins/e-acsl/tests/constructs/oracle/gen_decrease.c
index f7b97420540..35511e6a23c 100644
--- a/src/plugins/e-acsl/tests/constructs/oracle/gen_decrease.c
+++ b/src/plugins/e-acsl/tests/constructs/oracle/gen_decrease.c
@@ -1,7 +1,7 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 int f(int x)
 {
diff --git a/src/plugins/e-acsl/tests/constructs/oracle/gen_false.c b/src/plugins/e-acsl/tests/constructs/oracle/gen_false.c
index 5a93a9a2dce..151b83363c8 100644
--- a/src/plugins/e-acsl/tests/constructs/oracle/gen_false.c
+++ b/src/plugins/e-acsl/tests/constructs/oracle/gen_false.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/constructs/oracle/gen_function_contract.c b/src/plugins/e-acsl/tests/constructs/oracle/gen_function_contract.c
index a04626ffba2..25c759f3ea9 100644
--- a/src/plugins/e-acsl/tests/constructs/oracle/gen_function_contract.c
+++ b/src/plugins/e-acsl/tests/constructs/oracle/gen_function_contract.c
@@ -1,7 +1,7 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 int X = 0;
 int Y = 2;
diff --git a/src/plugins/e-acsl/tests/constructs/oracle/gen_ghost.c b/src/plugins/e-acsl/tests/constructs/oracle/gen_ghost.c
index bfc28ffc41f..7077d948dbe 100644
--- a/src/plugins/e-acsl/tests/constructs/oracle/gen_ghost.c
+++ b/src/plugins/e-acsl/tests/constructs/oracle/gen_ghost.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int G = 0;
 int *P;
 void __e_acsl_globals_init(void)
diff --git a/src/plugins/e-acsl/tests/constructs/oracle/gen_invariant.c b/src/plugins/e-acsl/tests/constructs/oracle/gen_invariant.c
index 9ab4056e35a..6fd64a10a3a 100644
--- a/src/plugins/e-acsl/tests/constructs/oracle/gen_invariant.c
+++ b/src/plugins/e-acsl/tests/constructs/oracle/gen_invariant.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/constructs/oracle/gen_labeled_stmt.c b/src/plugins/e-acsl/tests/constructs/oracle/gen_labeled_stmt.c
index 4f408ceffc9..34b962a29c8 100644
--- a/src/plugins/e-acsl/tests/constructs/oracle/gen_labeled_stmt.c
+++ b/src/plugins/e-acsl/tests/constructs/oracle/gen_labeled_stmt.c
@@ -1,7 +1,7 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 int X = 0;
 /*@ ensures X ≡ 3; */
diff --git a/src/plugins/e-acsl/tests/constructs/oracle/gen_lazy.c b/src/plugins/e-acsl/tests/constructs/oracle/gen_lazy.c
index 77e8d08ae97..3c90b94bef5 100644
--- a/src/plugins/e-acsl/tests/constructs/oracle/gen_lazy.c
+++ b/src/plugins/e-acsl/tests/constructs/oracle/gen_lazy.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/constructs/oracle/gen_loop.c b/src/plugins/e-acsl/tests/constructs/oracle/gen_loop.c
index 940e40e29a2..a0ee038cc74 100644
--- a/src/plugins/e-acsl/tests/constructs/oracle/gen_loop.c
+++ b/src/plugins/e-acsl/tests/constructs/oracle/gen_loop.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 void simple_loop(void)
 {
   int sum = 0;
diff --git a/src/plugins/e-acsl/tests/constructs/oracle/gen_nested_code_annot.c b/src/plugins/e-acsl/tests/constructs/oracle/gen_nested_code_annot.c
index da452a0bd68..7272563eed4 100644
--- a/src/plugins/e-acsl/tests/constructs/oracle/gen_nested_code_annot.c
+++ b/src/plugins/e-acsl/tests/constructs/oracle/gen_nested_code_annot.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/constructs/oracle/gen_result.c b/src/plugins/e-acsl/tests/constructs/oracle/gen_result.c
index 304ce2af901..6134b7451b4 100644
--- a/src/plugins/e-acsl/tests/constructs/oracle/gen_result.c
+++ b/src/plugins/e-acsl/tests/constructs/oracle/gen_result.c
@@ -1,7 +1,7 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 /*@ ensures \result ≡ (int)(\old(x) - \old(x)); */
 int __gen_e_acsl_f(int x);
diff --git a/src/plugins/e-acsl/tests/constructs/oracle/gen_rte.c b/src/plugins/e-acsl/tests/constructs/oracle/gen_rte.c
index 3f4d4e1742a..46859d9e8ed 100644
--- a/src/plugins/e-acsl/tests/constructs/oracle/gen_rte.c
+++ b/src/plugins/e-acsl/tests/constructs/oracle/gen_rte.c
@@ -1,7 +1,7 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 /*@ requires 1 % a ≡ 1;
     ensures 1 % \old(b) ≡ 1;
diff --git a/src/plugins/e-acsl/tests/constructs/oracle/gen_stmt_contract.c b/src/plugins/e-acsl/tests/constructs/oracle/gen_stmt_contract.c
index ba7d2c236ce..7b81cee7b80 100644
--- a/src/plugins/e-acsl/tests/constructs/oracle/gen_stmt_contract.c
+++ b/src/plugins/e-acsl/tests/constructs/oracle/gen_stmt_contract.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   __e_acsl_contract_t *__gen_e_acsl_contract_3;
diff --git a/src/plugins/e-acsl/tests/constructs/oracle/gen_true.c b/src/plugins/e-acsl/tests/constructs/oracle/gen_true.c
index d4cb6243553..8603a3791f0 100644
--- a/src/plugins/e-acsl/tests/constructs/oracle/gen_true.c
+++ b/src/plugins/e-acsl/tests/constructs/oracle/gen_true.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/constructs/oracle/gen_typedef.c b/src/plugins/e-acsl/tests/constructs/oracle/gen_typedef.c
index a110449db68..37c835510d0 100644
--- a/src/plugins/e-acsl/tests/constructs/oracle/gen_typedef.c
+++ b/src/plugins/e-acsl/tests/constructs/oracle/gen_typedef.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 typedef unsigned char uint8;
 int main(void)
 {
diff --git a/src/plugins/e-acsl/tests/examples/oracle/gen_functions_contiki.c b/src/plugins/e-acsl/tests/examples/oracle/gen_functions_contiki.c
index 84a91929a61..4238666d02e 100644
--- a/src/plugins/e-acsl/tests/examples/oracle/gen_functions_contiki.c
+++ b/src/plugins/e-acsl/tests/examples/oracle/gen_functions_contiki.c
@@ -2,6 +2,8 @@
 #include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 struct list {
    struct list *next ;
    int value ;
diff --git a/src/plugins/e-acsl/tests/examples/oracle/gen_linear_search.c b/src/plugins/e-acsl/tests/examples/oracle/gen_linear_search.c
index 1d1c09c9a1c..262fe258dc2 100644
--- a/src/plugins/e-acsl/tests/examples/oracle/gen_linear_search.c
+++ b/src/plugins/e-acsl/tests/examples/oracle/gen_linear_search.c
@@ -1,7 +1,7 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 int A[10];
 /*@ requires ∀ ℤ i; 0 ≤ i < 9 ⇒ A[i] ≤ A[i + 1];
diff --git a/src/plugins/e-acsl/tests/format/oracle/gen_fprintf.c b/src/plugins/e-acsl/tests/format/oracle/gen_fprintf.c
index 3d7d734187d..63106e3cbdd 100644
--- a/src/plugins/e-acsl/tests/format/oracle/gen_fprintf.c
+++ b/src/plugins/e-acsl/tests/format/oracle/gen_fprintf.c
@@ -39,7 +39,7 @@ char *__gen_e_acsl_literal_string_22;
 char *__gen_e_acsl_literal_string_20;
 char *__gen_e_acsl_literal_string_17;
 char *__gen_e_acsl_literal_string_18;
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 /*@ exits status: \exit_status ≡ \old(status);
     ensures never_terminates: \false;
diff --git a/src/plugins/e-acsl/tests/format/oracle/gen_printf.c b/src/plugins/e-acsl/tests/format/oracle/gen_printf.c
index 6278c452419..1e708d06d7d 100644
--- a/src/plugins/e-acsl/tests/format/oracle/gen_printf.c
+++ b/src/plugins/e-acsl/tests/format/oracle/gen_printf.c
@@ -350,7 +350,7 @@ char *__gen_e_acsl_literal_string_317;
 char *__gen_e_acsl_literal_string_321;
 char *__gen_e_acsl_literal_string_34;
 char *__gen_e_acsl_literal_string_323;
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 /*@ exits status: \exit_status ≢ 0;
     ensures never_terminates: \false;
diff --git a/src/plugins/e-acsl/tests/full-mtracking/oracle/gen_addrOf.c b/src/plugins/e-acsl/tests/full-mtracking/oracle/gen_addrOf.c
index c4ded4bb662..c27908a810a 100644
--- a/src/plugins/e-acsl/tests/full-mtracking/oracle/gen_addrOf.c
+++ b/src/plugins/e-acsl/tests/full-mtracking/oracle/gen_addrOf.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 void f(void)
 {
   int m;
diff --git a/src/plugins/e-acsl/tests/gmp-only/oracle/gen_arith.c b/src/plugins/e-acsl/tests/gmp-only/oracle/gen_arith.c
index f16eb040032..cccd91e3f09 100644
--- a/src/plugins/e-acsl/tests/gmp-only/oracle/gen_arith.c
+++ b/src/plugins/e-acsl/tests/gmp-only/oracle/gen_arith.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/gmp-only/oracle/gen_functions.c b/src/plugins/e-acsl/tests/gmp-only/oracle/gen_functions.c
index 9970dd39300..bb8d0044c5d 100644
--- a/src/plugins/e-acsl/tests/gmp-only/oracle/gen_functions.c
+++ b/src/plugins/e-acsl/tests/gmp-only/oracle/gen_functions.c
@@ -1,7 +1,7 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 struct mystruct {
    int k ;
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_addrOf.c b/src/plugins/e-acsl/tests/memory/oracle/gen_addrOf.c
index f6fdc7f96bb..a72dcdf1649 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_addrOf.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_addrOf.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 void f(void)
 {
   int m;
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_alias.c b/src/plugins/e-acsl/tests/memory/oracle/gen_alias.c
index 98896d3553e..9c4c45d7584 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_alias.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_alias.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 void f(int *dest, int val)
 {
   __e_acsl_store_block((void *)(& dest),(size_t)8);
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_array_overflow.c b/src/plugins/e-acsl/tests/memory/oracle/gen_array_overflow.c
index c44a08d55f4..9ddd7c0b569 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_array_overflow.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_array_overflow.c
@@ -2,6 +2,8 @@
 #include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 struct dat {
    int arr[4] ;
 };
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_base_addr.c b/src/plugins/e-acsl/tests/memory/oracle/gen_base_addr.c
index b93d4f3e51c..df3b503ecb9 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_base_addr.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_base_addr.c
@@ -2,6 +2,8 @@
 #include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int A[4] = {1, 2, 3, 4};
 int *PA;
 void __e_acsl_globals_init(void)
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_block_length.c b/src/plugins/e-acsl/tests/memory/oracle/gen_block_length.c
index 3144471bf22..fe71ab12278 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_block_length.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_block_length.c
@@ -2,6 +2,8 @@
 #include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int A[4] = {1, 2, 3, 4};
 int *PA;
 void __e_acsl_globals_init(void)
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_block_valid.c b/src/plugins/e-acsl/tests/memory/oracle/gen_block_valid.c
index fcd70965476..9d1eaa75acf 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_block_valid.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_block_valid.c
@@ -2,6 +2,8 @@
 #include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int A = 1;
 int B = 2;
 int C = 3;
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_bypassed_var.c b/src/plugins/e-acsl/tests/memory/oracle/gen_bypassed_var.c
index 5a07ee12ca1..d653ef1b72c 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_bypassed_var.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_bypassed_var.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(int argc, char const **argv)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_call.c b/src/plugins/e-acsl/tests/memory/oracle/gen_call.c
index beb03fcadc3..05cebce1b23 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_call.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_call.c
@@ -2,7 +2,7 @@
 #include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 /*@ ensures \valid(\result); */
 int *__gen_e_acsl_f(int *x, int *y);
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_compound_initializers.c b/src/plugins/e-acsl/tests/memory/oracle/gen_compound_initializers.c
index 938d7e78991..f137cea5b81 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_compound_initializers.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_compound_initializers.c
@@ -6,6 +6,8 @@ char *__gen_e_acsl_literal_string;
 char *__gen_e_acsl_literal_string_2;
 char *__gen_e_acsl_literal_string_4;
 char *__gen_e_acsl_literal_string_5;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 struct ST {
    char *str ;
    int num ;
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_constructor.c b/src/plugins/e-acsl/tests/memory/oracle/gen_constructor.c
index 22920e30cf3..bbaf5eeb4f8 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_constructor.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_constructor.c
@@ -4,6 +4,8 @@
 #include "stdlib.h"
 char *__gen_e_acsl_literal_string_2;
 char *__gen_e_acsl_literal_string;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 void f(void) __attribute__((__constructor__));
 void f(void)
 {
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_ctype_macros.c b/src/plugins/e-acsl/tests/memory/oracle/gen_ctype_macros.c
index 14df39c49de..14e8e659b1d 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_ctype_macros.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_ctype_macros.c
@@ -2,7 +2,7 @@
 #include "ctype.h"
 #include "stddef.h"
 #include "stdio.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 /*@ requires c_uchar_or_eof: (0 ≤ c ≤ 255) ∨ c ≡ -1;
     assigns \result;
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_decl_in_switch.c b/src/plugins/e-acsl/tests/memory/oracle/gen_decl_in_switch.c
index b41c28f6335..d1c746986f7 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_decl_in_switch.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_decl_in_switch.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 void decl_in_switch(int value)
 {
   __e_acsl_store_block((void *)(& value),(size_t)4);
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_early_exit.c b/src/plugins/e-acsl/tests/memory/oracle/gen_early_exit.c
index 14c6e24361f..97debe70674 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_early_exit.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_early_exit.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int goto_bts(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_errno.c b/src/plugins/e-acsl/tests/memory/oracle/gen_errno.c
index 2fc8b100ae8..650fa1452d1 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_errno.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_errno.c
@@ -3,6 +3,8 @@
 #include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 void __e_acsl_globals_init(void)
 {
   static char __e_acsl_already_run = 0;
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_freeable.c b/src/plugins/e-acsl/tests/memory/oracle/gen_freeable.c
index 7abd207dbcb..f804ef702e5 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_freeable.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_freeable.c
@@ -2,6 +2,8 @@
 #include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 char array[1024];
 void __e_acsl_globals_init(void)
 {
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_ghost_parameters.c b/src/plugins/e-acsl/tests/memory/oracle/gen_ghost_parameters.c
index e16ba064495..3a4ab987b63 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_ghost_parameters.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_ghost_parameters.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 void function(int a, int b, int c, int d)
 {
   return;
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_goto.c b/src/plugins/e-acsl/tests/memory/oracle/gen_goto.c
index 600b66499c2..69e63b6f818 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_goto.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_goto.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 char a;
 void __e_acsl_globals_init(void)
 {
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_hidden_malloc.c b/src/plugins/e-acsl/tests/memory/oracle/gen_hidden_malloc.c
index e3e8cd4ae77..12027e7f5b4 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_hidden_malloc.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_hidden_malloc.c
@@ -3,6 +3,8 @@
 #include "stdio.h"
 #include "stdlib.h"
 char *__gen_e_acsl_literal_string;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 void __e_acsl_globals_init(void)
 {
   static char __e_acsl_already_run = 0;
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_init.c b/src/plugins/e-acsl/tests/memory/oracle/gen_init.c
index dfc3e7b1805..2c00fe4f012 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_init.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_init.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int a = 0;
 int b;
 void __e_acsl_globals_init(void)
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_init_function.c b/src/plugins/e-acsl/tests/memory/oracle/gen_init_function.c
index 6b4322952dc..7a579dc32d3 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_init_function.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_init_function.c
@@ -2,6 +2,8 @@
 #include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_initialized.c b/src/plugins/e-acsl/tests/memory/oracle/gen_initialized.c
index 7b595c45c16..ecebc5da9e3 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_initialized.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_initialized.c
@@ -2,6 +2,8 @@
 #include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int A = 0;
 int B;
 void __e_acsl_globals_init(void)
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_literal_string.c b/src/plugins/e-acsl/tests/memory/oracle/gen_literal_string.c
index 98151773942..2ae93f0e987 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_literal_string.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_literal_string.c
@@ -7,6 +7,8 @@ char *__gen_e_acsl_literal_string;
 char *__gen_e_acsl_literal_string_4;
 char *__gen_e_acsl_literal_string_3;
 char *__gen_e_acsl_literal_string_2;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void);
 
 char *T = (char *)"bar";
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_local_goto.c b/src/plugins/e-acsl/tests/memory/oracle/gen_local_goto.c
index 3a5e8b49196..6e6799dbd3b 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_local_goto.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_local_goto.c
@@ -5,6 +5,8 @@ char *__gen_e_acsl_literal_string_2;
 char *__gen_e_acsl_literal_string_3;
 char *__gen_e_acsl_literal_string;
 char *__gen_e_acsl_literal_string_4;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 void __e_acsl_globals_init(void)
 {
   static char __e_acsl_already_run = 0;
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_local_init.c b/src/plugins/e-acsl/tests/memory/oracle/gen_local_init.c
index 946ce35b056..3f3eb016471 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_local_init.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_local_init.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int X = 0;
 int *p = & X;
 int f(void)
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_local_var.c b/src/plugins/e-acsl/tests/memory/oracle/gen_local_var.c
index 20980d2a8fa..c28e90044db 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_local_var.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_local_var.c
@@ -2,6 +2,8 @@
 #include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 struct list {
    int element ;
    struct list *next ;
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_mainargs.c b/src/plugins/e-acsl/tests/memory/oracle/gen_mainargs.c
index ee34b527eac..72d8d0685d1 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_mainargs.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_mainargs.c
@@ -2,7 +2,7 @@
 #include "stddef.h"
 #include "stdio.h"
 #include "string.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 /*@ requires valid_string_s: valid_read_string(s);
     ensures acsl_c_equiv: \result ≡ strlen(\old(s));
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_memalign.c b/src/plugins/e-acsl/tests/memory/oracle/gen_memalign.c
index 1ff1e767024..2f9c48d8a94 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_memalign.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_memalign.c
@@ -2,7 +2,7 @@
 #include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 /*@ requires valid_memptr: \valid(memptr);
     requires
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_memsize.c b/src/plugins/e-acsl/tests/memory/oracle/gen_memsize.c
index 88eee2f15a5..df3a77b8d7a 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_memsize.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_memsize.c
@@ -2,6 +2,8 @@
 #include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 extern size_t __e_acsl_heap_allocation_size;
 
 int main(int argc, char **argv)
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_null.c b/src/plugins/e-acsl/tests/memory/oracle/gen_null.c
index d50e1abab50..94b5ca7fced 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_null.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_null.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_offset.c b/src/plugins/e-acsl/tests/memory/oracle/gen_offset.c
index e4e60fa0253..b6b52a83efa 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_offset.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_offset.c
@@ -2,6 +2,8 @@
 #include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int A[4] = {1, 2, 3, 4};
 int *PA;
 void __e_acsl_globals_init(void)
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_other_constants.c b/src/plugins/e-acsl/tests/memory/oracle/gen_other_constants.c
index c8f4725f2e1..bdb06b362ea 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_other_constants.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_other_constants.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 enum bool {
     false = 0,
     true = 1
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_ptr.c b/src/plugins/e-acsl/tests/memory/oracle/gen_ptr.c
index 96135cb4809..8140477968b 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_ptr.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_ptr.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_ptr_init.c b/src/plugins/e-acsl/tests/memory/oracle/gen_ptr_init.c
index 414cb99cacd..20fe5e2aa70 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_ptr_init.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_ptr_init.c
@@ -2,6 +2,8 @@
 #include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int *A;
 int *B;
 void f(void)
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_ranges_in_builtins.c b/src/plugins/e-acsl/tests/memory/oracle/gen_ranges_in_builtins.c
index 75af517de67..37909581966 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_ranges_in_builtins.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_ranges_in_builtins.c
@@ -2,7 +2,7 @@
 #include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 struct S {
    int a[2] ;
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_separated.c b/src/plugins/e-acsl/tests/memory/oracle/gen_separated.c
index d0fb32d3baf..d1ab26cc2eb 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_separated.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_separated.c
@@ -2,6 +2,8 @@
 #include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_sizeof.c b/src/plugins/e-acsl/tests/memory/oracle/gen_sizeof.c
index aad129a5528..7f829ac63e5 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_sizeof.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_sizeof.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_stdout.c b/src/plugins/e-acsl/tests/memory/oracle/gen_stdout.c
index 063472f4dd7..5cf83f20936 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_stdout.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_stdout.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 void __e_acsl_globals_init(void)
 {
   static char __e_acsl_already_run = 0;
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_struct_initialized.c b/src/plugins/e-acsl/tests/memory/oracle/gen_struct_initialized.c
index 8d55bb8d9a9..cfc1ad9048e 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_struct_initialized.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_struct_initialized.c
@@ -3,6 +3,8 @@
 #include "stdint.h"
 #include "stdio.h"
 #include "stdlib.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 struct __anonstruct_int32_pair_t_1 {
    int32_t a ;
    int32_t b ;
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_valid.c b/src/plugins/e-acsl/tests/memory/oracle/gen_valid.c
index 78726b1f91c..2d8ea22d7e5 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_valid.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_valid.c
@@ -2,7 +2,7 @@
 #include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 int *X;
 int Z;
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_valid_alias.c b/src/plugins/e-acsl/tests/memory/oracle/gen_valid_alias.c
index e31671f6f38..bd36506b4f1 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_valid_alias.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_valid_alias.c
@@ -2,6 +2,8 @@
 #include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_valid_in_contract.c b/src/plugins/e-acsl/tests/memory/oracle/gen_valid_in_contract.c
index 1f83cc47909..b8910535a12 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_valid_in_contract.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_valid_in_contract.c
@@ -2,7 +2,7 @@
 #include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 struct list {
    int element ;
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_vector.c b/src/plugins/e-acsl/tests/memory/oracle/gen_vector.c
index b4d86730b61..f522a84f1dc 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_vector.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_vector.c
@@ -2,6 +2,8 @@
 #include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int LAST;
 int *new_inversed(int len, int *v)
 {
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_vla.c b/src/plugins/e-acsl/tests/memory/oracle/gen_vla.c
index a0e89b041bb..2816887b72c 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_vla.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_vla.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int LEN = 10;
 int main(int argc, char **argv)
 {
diff --git a/src/plugins/e-acsl/tests/special/oracle/gen_builtin.c b/src/plugins/e-acsl/tests/special/oracle/gen_builtin.c
index dad8120db26..40a21f890be 100644
--- a/src/plugins/e-acsl/tests/special/oracle/gen_builtin.c
+++ b/src/plugins/e-acsl/tests/special/oracle/gen_builtin.c
@@ -1,7 +1,7 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 int incr(int x);
 
diff --git a/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-bittree-model.c b/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-bittree-model.c
index 8673c9a15aa..46e4f1c6e12 100644
--- a/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-bittree-model.c
+++ b/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-bittree-model.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-compile-dlmalloc.c b/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-compile-dlmalloc.c
index 5884b0f6c60..59f62c0c1c0 100644
--- a/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-compile-dlmalloc.c
+++ b/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-compile-dlmalloc.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-functions.c b/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-functions.c
index f94e292fc42..5b7a9aa5a54 100644
--- a/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-functions.c
+++ b/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-functions.c
@@ -1,7 +1,7 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 /*@ requires \initialized(p);
     requires *p ≡ 0;
diff --git a/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-instrument.c b/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-instrument.c
index 61a4e7c62bd..ed4e1a67efd 100644
--- a/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-instrument.c
+++ b/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-instrument.c
@@ -2,7 +2,7 @@
 #include "stdarg.h"
 #include "stddef.h"
 #include "stdio.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 int __gen_e_acsl_uninstrument1(int *p);
 
diff --git a/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-rt-debug.c b/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-rt-debug.c
index 5884b0f6c60..59f62c0c1c0 100644
--- a/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-rt-debug.c
+++ b/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-rt-debug.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-segment-model.c b/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-segment-model.c
index 8673c9a15aa..46e4f1c6e12 100644
--- a/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-segment-model.c
+++ b/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-segment-model.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-valid.c b/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-valid.c
index 91bf7941f61..1ec0fc0fc61 100644
--- a/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-valid.c
+++ b/src/plugins/e-acsl/tests/special/oracle/gen_e-acsl-valid.c
@@ -2,7 +2,7 @@
 #include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 /*@ requires \valid(y);
     requires *x ≥ 0;
diff --git a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_addr-by-val.c b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_addr-by-val.c
index e99bf6424a1..dfc3a961e28 100644
--- a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_addr-by-val.c
+++ b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_addr-by-val.c
@@ -2,6 +2,8 @@
 #include "stddef.h"
 #include "stdint.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(int argc, char **argv)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_args.c b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_args.c
index 0c5e9d16cc3..f5eef9929a5 100644
--- a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_args.c
+++ b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_args.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(int argc, char const **argv)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_array.c b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_array.c
index 99b174ecf25..eeaf35098d9 100644
--- a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_array.c
+++ b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_array.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_char.c b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_char.c
index aa28e2d1ba2..278ff8a5bf3 100644
--- a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_char.c
+++ b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_char.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(int argc, char const **argv)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_darray.c b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_darray.c
index 05043365abe..f7db119cba3 100644
--- a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_darray.c
+++ b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_darray.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 void area_triangle(double (*vertices)[4])
 {
   {
diff --git a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_dpointer.c b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_dpointer.c
index 37e9a60d4f5..53b0044b323 100644
--- a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_dpointer.c
+++ b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_dpointer.c
@@ -2,6 +2,8 @@
 #include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_fptr.c b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_fptr.c
index aac5aeebeec..bd404c2495b 100644
--- a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_fptr.c
+++ b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_fptr.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int *foo(int *p)
 {
   int *q = p;
diff --git a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_fun_lib.c b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_fun_lib.c
index b30e5cc2ac0..8bf4587773b 100644
--- a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_fun_lib.c
+++ b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_fun_lib.c
@@ -3,6 +3,8 @@
 #include "stdio.h"
 #include "stdlib.h"
 char *__gen_e_acsl_literal_string;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 void __e_acsl_globals_init(void)
 {
   static char __e_acsl_already_run = 0;
diff --git a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_fun_ptr.c b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_fun_ptr.c
index 040c516ffe1..64bb8c9ecbf 100644
--- a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_fun_ptr.c
+++ b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_fun_ptr.c
@@ -3,6 +3,8 @@
 #include "stdint.h"
 #include "stdio.h"
 #include "stdlib.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int *pfun(char c, int *p, int *p2, int *p3, int *p4, int i)
 {
   __e_acsl_store_block((void *)(& p),(size_t)8);
diff --git a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_getenv.c b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_getenv.c
index 42b6e7cf510..a7cbd526051 100644
--- a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_getenv.c
+++ b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_getenv.c
@@ -4,7 +4,7 @@
 #include "stdlib.h"
 char *__gen_e_acsl_literal_string_2;
 char *__gen_e_acsl_literal_string;
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 /*@ requires valid_name: valid_read_string(name);
     ensures null_or_valid_result: \result ≡ \null ∨ \valid(\result);
diff --git a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_global_init.c b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_global_init.c
index 1441d93306f..2c7e56295af 100644
--- a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_global_init.c
+++ b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_global_init.c
@@ -5,6 +5,8 @@ char *__gen_e_acsl_literal_string;
 char *__gen_e_acsl_literal_string_2;
 char *__gen_e_acsl_literal_string_4;
 char *__gen_e_acsl_literal_string_3;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 struct tree_desc {
    int *extra_bits ;
 };
diff --git a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_labels.c b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_labels.c
index 2c25f4df782..b95b720a5ab 100644
--- a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_labels.c
+++ b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_labels.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 void foo(int *a, int *b)
 {
   __e_acsl_store_block((void *)(& b),(size_t)8);
diff --git a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_lit_string.c b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_lit_string.c
index 5c9099b9c65..fddcff05b56 100644
--- a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_lit_string.c
+++ b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_lit_string.c
@@ -3,6 +3,8 @@
 #include "stdio.h"
 char *__gen_e_acsl_literal_string_2;
 char *__gen_e_acsl_literal_string;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 void __e_acsl_globals_init(void)
 {
   static char __e_acsl_already_run = 0;
diff --git a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_local_init.c b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_local_init.c
index c067d5fd690..60563870b56 100644
--- a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_local_init.c
+++ b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_local_init.c
@@ -8,6 +8,8 @@ char *__gen_e_acsl_literal_string_2;
 char *__gen_e_acsl_literal_string_5;
 char *__gen_e_acsl_literal_string_7;
 char *__gen_e_acsl_literal_string_6;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 struct tree_desc {
    int *extra_bits ;
 };
diff --git a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_malloc-asan.c b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_malloc-asan.c
index d718f3e61f8..28d445663fa 100644
--- a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_malloc-asan.c
+++ b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_malloc-asan.c
@@ -3,6 +3,8 @@
 #include "stdio.h"
 #include "stdlib.h"
 char *__gen_e_acsl_literal_string;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 void __e_acsl_globals_init(void)
 {
   static char __e_acsl_already_run = 0;
diff --git a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_malloc.c b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_malloc.c
index 24fe3685108..93a179e2a29 100644
--- a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_malloc.c
+++ b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_malloc.c
@@ -2,6 +2,8 @@
 #include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
diff --git a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_memcpy.c b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_memcpy.c
index ce91bdc96a8..8af8c087c3b 100644
--- a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_memcpy.c
+++ b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_memcpy.c
@@ -3,7 +3,7 @@
 #include "stdio.h"
 #include "stdlib.h"
 #include "string.h"
-extern int __e_acsl_sound_verdict;
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
 
 /*@ requires valid_dest: valid_or_empty(dest, n);
     requires valid_src: valid_read_or_empty(src, n);
diff --git a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_scope.c b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_scope.c
index 4ccf94b71bf..219e3486c17 100644
--- a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_scope.c
+++ b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_scope.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
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 59e1bd61ee5..66b5e2ef099 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
@@ -2,6 +2,8 @@
 #include "stddef.h"
 #include "stdio.h"
 #include "stdlib.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 struct temporal_t {
    char *p ;
    char *q ;
diff --git a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_while.c b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_while.c
index 8d25afd44d5..c46be04e1a5 100644
--- a/src/plugins/e-acsl/tests/temporal/oracle/gen_t_while.c
+++ b/src/plugins/e-acsl/tests/temporal/oracle/gen_t_while.c
@@ -1,6 +1,8 @@
 /* Generated by Frama-C */
 #include "stddef.h"
 #include "stdio.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
 int main(void)
 {
   int __retres;
-- 
GitLab