From 2cca8a49837dcd3204759e9c1cd02a88b7955090 Mon Sep 17 00:00:00 2001
From: Andre Maroneze <andre.maroneze@cea.fr>
Date: Fri, 7 Jan 2022 16:41:37 +0100
Subject: [PATCH] [Eva] add spec and builtin for reallocarray (GNU libc)

---
 share/libc/stdlib.h                           |   35 +
 .../e-acsl/tests/builtin/oracle/gen_strcat.c  |    2 +-
 .../e-acsl/tests/builtin/oracle/gen_strcmp.c  |    4 +-
 .../e-acsl/tests/builtin/oracle/gen_strcpy.c  |    2 +-
 .../e-acsl/tests/builtin/oracle/gen_strlen.c  |    4 +-
 .../tests/builtin/oracle/strcat.res.oracle    |    4 +-
 .../tests/builtin/oracle/strcmp.res.oracle    |    8 +-
 .../tests/builtin/oracle/strcpy.res.oracle    |    4 +-
 .../tests/builtin/oracle/strlen.res.oracle    |    8 +-
 .../concurrency/oracle/gen_parallel_threads.c |    2 +-
 .../concurrency/oracle/gen_threads_debug.c    |    2 +-
 .../oracle/parallel_threads.res.oracle        |    4 +-
 .../oracle/threads_debug.res.oracle           |    4 +-
 .../tests/format/oracle/fprintf.res.oracle    |    4 +-
 .../e-acsl/tests/format/oracle/gen_fprintf.c  |    2 +-
 .../e-acsl/tests/format/oracle/gen_printf.c   |    4 +-
 .../tests/format/oracle/printf.res.oracle     |    8 +-
 .../e-acsl/tests/memory/oracle/gen_memalign.c |    8 +-
 .../tests/memory/oracle/memalign.res.oracle   |   14 +-
 .../tests/temporal/oracle/gen_t_getenv.c      |    2 +-
 .../tests/temporal/oracle/t_getenv.res.oracle |   14 +-
 .../tests/sarif/oracle/std_string.sarif       | 1532 ++++++++++++-----
 .../value/domains/cvalue/builtins_malloc.ml   |   55 +-
 .../terminates_call_options.1.res.oracle      |    4 +-
 .../terminates_call_options.1.res.oracle      |    4 +-
 tests/builtins/oracle/realloc.res.oracle      |  130 +-
 .../builtins/oracle_gauges/realloc.res.oracle |   73 +
 tests/builtins/realloc.c                      |   21 +-
 tests/libc/oracle/argz_c.res.oracle           |    1 +
 tests/libc/oracle/coverage.res.oracle         |    2 +-
 tests/libc/oracle/fc_libc.1.res.oracle        |   38 +
 tests/libc/oracle/netdb_c.res.oracle          |    1 +
 32 files changed, 1454 insertions(+), 546 deletions(-)

diff --git a/share/libc/stdlib.h b/share/libc/stdlib.h
index 406321996e6..2f4ef1f4cd8 100644
--- a/share/libc/stdlib.h
+++ b/share/libc/stdlib.h
@@ -451,6 +451,41 @@ extern void free(void *p);
   */
 extern void *realloc(void *ptr, size_t size);
 
+// reallocarray is non-POSIX (glibc)
+/*@
+   requires freeable: ptr == \null || \freeable(ptr);
+   allocates \result;
+   frees     ptr;
+   assigns   __fc_heap_status \from indirect:nmemb, indirect:size,
+                                    __fc_heap_status;
+   assigns   \result \from ptr, indirect:nmemb, indirect:size,
+                           indirect:__fc_heap_status;
+
+   behavior allocation:
+     assumes   can_allocate: is_allocable(nmemb * size);
+     allocates \result;
+     ensures   allocation: \fresh(\result, nmemb * size);
+
+   behavior deallocation:
+     assumes   nonnull_ptr: ptr != \null;
+     assumes   can_allocate: is_allocable(nmemb * size);
+     frees     ptr;
+     ensures   freed: \allocable(ptr);
+     ensures   freeable: \result == \null || \freeable(\result);
+
+   behavior fail:
+     assumes cannot_allocate: !is_allocable(nmemb * size);
+     allocates \nothing;
+     frees     \nothing;
+     assigns   \result \from indirect:nmemb, indirect:size,
+                             indirect:__fc_heap_status;
+     ensures   null_result: \result == \null;
+
+   complete behaviors;
+   disjoint behaviors allocation, fail;
+   disjoint behaviors deallocation, fail;
+  */
+extern void *reallocarray(void *ptr, size_t nmemb, size_t size);
 
 /* ISO C: 7.20.4 */
 
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 4949156576b..400997fa108 100644
--- a/src/plugins/e-acsl/tests/builtin/oracle/gen_strcat.c
+++ b/src/plugins/e-acsl/tests/builtin/oracle/gen_strcat.c
@@ -816,7 +816,7 @@ void __gen_e_acsl_exit(int status)
     __gen_e_acsl_assert_data.pred_txt = "\\false";
     __gen_e_acsl_assert_data.file = "FRAMAC_SHARE/libc/stdlib.h";
     __gen_e_acsl_assert_data.fct = "exit";
-    __gen_e_acsl_assert_data.line = 473;
+    __gen_e_acsl_assert_data.line = 508;
     __gen_e_acsl_assert_data.name = "never_terminates";
     __e_acsl_assert(0,& __gen_e_acsl_assert_data);
     return;
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 835b7da03d0..e1307d5a6ae 100644
--- a/src/plugins/e-acsl/tests/builtin/oracle/gen_strcmp.c
+++ b/src/plugins/e-acsl/tests/builtin/oracle/gen_strcmp.c
@@ -357,7 +357,7 @@ void __gen_e_acsl_exit(int status)
     __gen_e_acsl_assert_data.pred_txt = "\\false";
     __gen_e_acsl_assert_data.file = "FRAMAC_SHARE/libc/stdlib.h";
     __gen_e_acsl_assert_data.fct = "exit";
-    __gen_e_acsl_assert_data.line = 473;
+    __gen_e_acsl_assert_data.line = 508;
     __gen_e_acsl_assert_data.name = "never_terminates";
     __e_acsl_assert(0,& __gen_e_acsl_assert_data);
     return;
@@ -379,7 +379,7 @@ void __gen_e_acsl_abort(void)
     __gen_e_acsl_assert_data.pred_txt = "\\false";
     __gen_e_acsl_assert_data.file = "FRAMAC_SHARE/libc/stdlib.h";
     __gen_e_acsl_assert_data.fct = "abort";
-    __gen_e_acsl_assert_data.line = 460;
+    __gen_e_acsl_assert_data.line = 495;
     __gen_e_acsl_assert_data.name = "never_terminates";
     __e_acsl_assert(0,& __gen_e_acsl_assert_data);
     return;
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 4328926452d..e2b3df51a3a 100644
--- a/src/plugins/e-acsl/tests/builtin/oracle/gen_strcpy.c
+++ b/src/plugins/e-acsl/tests/builtin/oracle/gen_strcpy.c
@@ -791,7 +791,7 @@ void __gen_e_acsl_exit(int status)
     __gen_e_acsl_assert_data.pred_txt = "\\false";
     __gen_e_acsl_assert_data.file = "FRAMAC_SHARE/libc/stdlib.h";
     __gen_e_acsl_assert_data.fct = "exit";
-    __gen_e_acsl_assert_data.line = 473;
+    __gen_e_acsl_assert_data.line = 508;
     __gen_e_acsl_assert_data.name = "never_terminates";
     __e_acsl_assert(0,& __gen_e_acsl_assert_data);
     return;
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 824fb3503a5..ffcc52912c6 100644
--- a/src/plugins/e-acsl/tests/builtin/oracle/gen_strlen.c
+++ b/src/plugins/e-acsl/tests/builtin/oracle/gen_strlen.c
@@ -331,7 +331,7 @@ void __gen_e_acsl_exit(int status)
     __gen_e_acsl_assert_data.pred_txt = "\\false";
     __gen_e_acsl_assert_data.file = "FRAMAC_SHARE/libc/stdlib.h";
     __gen_e_acsl_assert_data.fct = "exit";
-    __gen_e_acsl_assert_data.line = 473;
+    __gen_e_acsl_assert_data.line = 508;
     __gen_e_acsl_assert_data.name = "never_terminates";
     __e_acsl_assert(0,& __gen_e_acsl_assert_data);
     return;
@@ -353,7 +353,7 @@ void __gen_e_acsl_abort(void)
     __gen_e_acsl_assert_data.pred_txt = "\\false";
     __gen_e_acsl_assert_data.file = "FRAMAC_SHARE/libc/stdlib.h";
     __gen_e_acsl_assert_data.fct = "abort";
-    __gen_e_acsl_assert_data.line = 460;
+    __gen_e_acsl_assert_data.line = 495;
     __gen_e_acsl_assert_data.name = "never_terminates";
     __e_acsl_assert(0,& __gen_e_acsl_assert_data);
     return;
diff --git a/src/plugins/e-acsl/tests/builtin/oracle/strcat.res.oracle b/src/plugins/e-acsl/tests/builtin/oracle/strcat.res.oracle
index c63be9146f5..79b68330733 100644
--- a/src/plugins/e-acsl/tests/builtin/oracle/strcat.res.oracle
+++ b/src/plugins/e-acsl/tests/builtin/oracle/strcat.res.oracle
@@ -17,10 +17,10 @@
 [e-acsl] FRAMAC_SHARE/libc/sys/wait.h:89: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:470: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:505: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:472: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:507: Warning: 
   E-ACSL construct `abnormal termination case in behavior'
   is not yet supported.
   Ignoring annotation.
diff --git a/src/plugins/e-acsl/tests/builtin/oracle/strcmp.res.oracle b/src/plugins/e-acsl/tests/builtin/oracle/strcmp.res.oracle
index c9c93a0901d..8cf84baead9 100644
--- a/src/plugins/e-acsl/tests/builtin/oracle/strcmp.res.oracle
+++ b/src/plugins/e-acsl/tests/builtin/oracle/strcmp.res.oracle
@@ -50,17 +50,17 @@
 [e-acsl] FRAMAC_SHARE/libc/sys/wait.h:89: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:470: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:505: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:472: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:507: Warning: 
   E-ACSL construct `abnormal termination case in behavior'
   is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:457: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:492: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:459: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:494: Warning: 
   E-ACSL construct `abnormal termination case in behavior'
   is not yet supported.
   Ignoring annotation.
diff --git a/src/plugins/e-acsl/tests/builtin/oracle/strcpy.res.oracle b/src/plugins/e-acsl/tests/builtin/oracle/strcpy.res.oracle
index 930d48cf15e..82dd3516a25 100644
--- a/src/plugins/e-acsl/tests/builtin/oracle/strcpy.res.oracle
+++ b/src/plugins/e-acsl/tests/builtin/oracle/strcpy.res.oracle
@@ -45,10 +45,10 @@
 [e-acsl] FRAMAC_SHARE/libc/sys/wait.h:89: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:470: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:505: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:472: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:507: Warning: 
   E-ACSL construct `abnormal termination case in behavior'
   is not yet supported.
   Ignoring annotation.
diff --git a/src/plugins/e-acsl/tests/builtin/oracle/strlen.res.oracle b/src/plugins/e-acsl/tests/builtin/oracle/strlen.res.oracle
index ace2bc58bc2..2c826d7c60a 100644
--- a/src/plugins/e-acsl/tests/builtin/oracle/strlen.res.oracle
+++ b/src/plugins/e-acsl/tests/builtin/oracle/strlen.res.oracle
@@ -48,17 +48,17 @@
 [e-acsl] FRAMAC_SHARE/libc/sys/wait.h:89: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:470: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:505: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:472: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:507: Warning: 
   E-ACSL construct `abnormal termination case in behavior'
   is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:457: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:492: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:459: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:494: Warning: 
   E-ACSL construct `abnormal termination case in behavior'
   is not yet supported.
   Ignoring annotation.
diff --git a/src/plugins/e-acsl/tests/concurrency/oracle/gen_parallel_threads.c b/src/plugins/e-acsl/tests/concurrency/oracle/gen_parallel_threads.c
index 65e0a1d6043..f3a95efc32f 100644
--- a/src/plugins/e-acsl/tests/concurrency/oracle/gen_parallel_threads.c
+++ b/src/plugins/e-acsl/tests/concurrency/oracle/gen_parallel_threads.c
@@ -776,7 +776,7 @@ void __gen_e_acsl_exit(int status)
     __gen_e_acsl_assert_data.pred_txt = "\\false";
     __gen_e_acsl_assert_data.file = "FRAMAC_SHARE/libc/stdlib.h";
     __gen_e_acsl_assert_data.fct = "exit";
-    __gen_e_acsl_assert_data.line = 473;
+    __gen_e_acsl_assert_data.line = 508;
     __gen_e_acsl_assert_data.name = "never_terminates";
     __e_acsl_assert(0,& __gen_e_acsl_assert_data);
     __e_acsl_delete_block((void *)(& status));
diff --git a/src/plugins/e-acsl/tests/concurrency/oracle/gen_threads_debug.c b/src/plugins/e-acsl/tests/concurrency/oracle/gen_threads_debug.c
index bad13c318e4..36848cfe9d2 100644
--- a/src/plugins/e-acsl/tests/concurrency/oracle/gen_threads_debug.c
+++ b/src/plugins/e-acsl/tests/concurrency/oracle/gen_threads_debug.c
@@ -458,7 +458,7 @@ void __gen_e_acsl_exit(int status)
     __gen_e_acsl_assert_data.pred_txt = "\\false";
     __gen_e_acsl_assert_data.file = "FRAMAC_SHARE/libc/stdlib.h";
     __gen_e_acsl_assert_data.fct = "exit";
-    __gen_e_acsl_assert_data.line = 473;
+    __gen_e_acsl_assert_data.line = 508;
     __gen_e_acsl_assert_data.name = "never_terminates";
     __e_acsl_assert(0,& __gen_e_acsl_assert_data);
     __e_acsl_delete_block((void *)(& status));
diff --git a/src/plugins/e-acsl/tests/concurrency/oracle/parallel_threads.res.oracle b/src/plugins/e-acsl/tests/concurrency/oracle/parallel_threads.res.oracle
index 8f495131885..97e90525ac7 100644
--- a/src/plugins/e-acsl/tests/concurrency/oracle/parallel_threads.res.oracle
+++ b/src/plugins/e-acsl/tests/concurrency/oracle/parallel_threads.res.oracle
@@ -38,10 +38,10 @@
 [e-acsl] FRAMAC_SHARE/libc/unistd.h:1116: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:470: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:505: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:472: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:507: Warning: 
   E-ACSL construct `abnormal termination case in behavior'
   is not yet supported.
   Ignoring annotation.
diff --git a/src/plugins/e-acsl/tests/concurrency/oracle/threads_debug.res.oracle b/src/plugins/e-acsl/tests/concurrency/oracle/threads_debug.res.oracle
index 8f495131885..97e90525ac7 100644
--- a/src/plugins/e-acsl/tests/concurrency/oracle/threads_debug.res.oracle
+++ b/src/plugins/e-acsl/tests/concurrency/oracle/threads_debug.res.oracle
@@ -38,10 +38,10 @@
 [e-acsl] FRAMAC_SHARE/libc/unistd.h:1116: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:470: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:505: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:472: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:507: Warning: 
   E-ACSL construct `abnormal termination case in behavior'
   is not yet supported.
   Ignoring annotation.
diff --git a/src/plugins/e-acsl/tests/format/oracle/fprintf.res.oracle b/src/plugins/e-acsl/tests/format/oracle/fprintf.res.oracle
index 87d5a40951c..8871dc016e5 100644
--- a/src/plugins/e-acsl/tests/format/oracle/fprintf.res.oracle
+++ b/src/plugins/e-acsl/tests/format/oracle/fprintf.res.oracle
@@ -23,10 +23,10 @@
 [e-acsl] FRAMAC_SHARE/libc/sys/wait.h:89: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:470: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:505: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:472: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:507: Warning: 
   E-ACSL construct `abnormal termination case in behavior'
   is not yet supported.
   Ignoring annotation.
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 f9fa434c611..be3cdf29226 100644
--- a/src/plugins/e-acsl/tests/format/oracle/gen_fprintf.c
+++ b/src/plugins/e-acsl/tests/format/oracle/gen_fprintf.c
@@ -270,7 +270,7 @@ void __gen_e_acsl_exit(int status)
     __gen_e_acsl_assert_data.pred_txt = "\\false";
     __gen_e_acsl_assert_data.file = "FRAMAC_SHARE/libc/stdlib.h";
     __gen_e_acsl_assert_data.fct = "exit";
-    __gen_e_acsl_assert_data.line = 473;
+    __gen_e_acsl_assert_data.line = 508;
     __gen_e_acsl_assert_data.name = "never_terminates";
     __e_acsl_assert(0,& __gen_e_acsl_assert_data);
     return;
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 3cc0a9f2184..621b839cc08 100644
--- a/src/plugins/e-acsl/tests/format/oracle/gen_printf.c
+++ b/src/plugins/e-acsl/tests/format/oracle/gen_printf.c
@@ -1163,7 +1163,7 @@ void __gen_e_acsl_exit(int status)
     __gen_e_acsl_assert_data.pred_txt = "\\false";
     __gen_e_acsl_assert_data.file = "FRAMAC_SHARE/libc/stdlib.h";
     __gen_e_acsl_assert_data.fct = "exit";
-    __gen_e_acsl_assert_data.line = 473;
+    __gen_e_acsl_assert_data.line = 508;
     __gen_e_acsl_assert_data.name = "never_terminates";
     __e_acsl_assert(0,& __gen_e_acsl_assert_data);
     return;
@@ -1185,7 +1185,7 @@ void __gen_e_acsl_abort(void)
     __gen_e_acsl_assert_data.pred_txt = "\\false";
     __gen_e_acsl_assert_data.file = "FRAMAC_SHARE/libc/stdlib.h";
     __gen_e_acsl_assert_data.fct = "abort";
-    __gen_e_acsl_assert_data.line = 460;
+    __gen_e_acsl_assert_data.line = 495;
     __gen_e_acsl_assert_data.name = "never_terminates";
     __e_acsl_assert(0,& __gen_e_acsl_assert_data);
     return;
diff --git a/src/plugins/e-acsl/tests/format/oracle/printf.res.oracle b/src/plugins/e-acsl/tests/format/oracle/printf.res.oracle
index 7cffddb92f5..6a2b2551ba6 100644
--- a/src/plugins/e-acsl/tests/format/oracle/printf.res.oracle
+++ b/src/plugins/e-acsl/tests/format/oracle/printf.res.oracle
@@ -86,17 +86,17 @@
 [e-acsl] FRAMAC_SHARE/libc/sys/wait.h:89: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:470: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:505: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:472: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:507: Warning: 
   E-ACSL construct `abnormal termination case in behavior'
   is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:457: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:492: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:459: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:494: Warning: 
   E-ACSL construct `abnormal termination case in behavior'
   is not yet supported.
   Ignoring annotation.
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 89f3520d16e..bb292590eff 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_memalign.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_memalign.c
@@ -421,7 +421,7 @@ int __gen_e_acsl_posix_memalign(void **memptr, size_t alignment, size_t size)
     __gen_e_acsl_assert_data.pred_txt = "\\valid(memptr)";
     __gen_e_acsl_assert_data.file = "FRAMAC_SHARE/libc/stdlib.h";
     __gen_e_acsl_assert_data.fct = "posix_memalign";
-    __gen_e_acsl_assert_data.line = 666;
+    __gen_e_acsl_assert_data.line = 701;
     __gen_e_acsl_assert_data.name = "valid_memptr";
     __e_acsl_assert(__gen_e_acsl_valid,& __gen_e_acsl_assert_data);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data);
@@ -464,7 +464,7 @@ int __gen_e_acsl_posix_memalign(void **memptr, size_t alignment, size_t size)
     __gen_e_acsl_assert_data_2.pred_txt = "alignment >= sizeof(void *) &&\n((size_t)alignment & ((size_t)alignment - 1)) == 0";
     __gen_e_acsl_assert_data_2.file = "FRAMAC_SHARE/libc/stdlib.h";
     __gen_e_acsl_assert_data_2.fct = "posix_memalign";
-    __gen_e_acsl_assert_data_2.line = 668;
+    __gen_e_acsl_assert_data_2.line = 703;
     __gen_e_acsl_assert_data_2.name = "alignment_is_a_suitable_power_of_two";
     __e_acsl_assert(__gen_e_acsl_and,& __gen_e_acsl_assert_data_2);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_2);
@@ -484,7 +484,7 @@ int __gen_e_acsl_posix_memalign(void **memptr, size_t alignment, size_t size)
       __gen_e_acsl_assert_data_4.pred_txt = "\\result == 0";
       __gen_e_acsl_assert_data_4.file = "FRAMAC_SHARE/libc/stdlib.h";
       __gen_e_acsl_assert_data_4.fct = "posix_memalign";
-      __gen_e_acsl_assert_data_4.line = 680;
+      __gen_e_acsl_assert_data_4.line = 715;
       __gen_e_acsl_assert_data_4.name = "allocation/result_zero";
       __e_acsl_assert(__retres == 0,& __gen_e_acsl_assert_data_4);
       __e_acsl_assert_clean(& __gen_e_acsl_assert_data_4);
@@ -508,7 +508,7 @@ int __gen_e_acsl_posix_memalign(void **memptr, size_t alignment, size_t size)
       __gen_e_acsl_assert_data_5.pred_txt = "\\result < 0 || \\result > 0";
       __gen_e_acsl_assert_data_5.file = "FRAMAC_SHARE/libc/stdlib.h";
       __gen_e_acsl_assert_data_5.fct = "posix_memalign";
-      __gen_e_acsl_assert_data_5.line = 685;
+      __gen_e_acsl_assert_data_5.line = 720;
       __gen_e_acsl_assert_data_5.name = "no_allocation/result_non_zero";
       __e_acsl_assert(__gen_e_acsl_or,& __gen_e_acsl_assert_data_5);
       __e_acsl_assert_clean(& __gen_e_acsl_assert_data_5);
diff --git a/src/plugins/e-acsl/tests/memory/oracle/memalign.res.oracle b/src/plugins/e-acsl/tests/memory/oracle/memalign.res.oracle
index d57b82d4e50..9116a25386a 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/memalign.res.oracle
+++ b/src/plugins/e-acsl/tests/memory/oracle/memalign.res.oracle
@@ -2,23 +2,23 @@
 [e-acsl] Warning: annotating undefined function `posix_memalign':
   the generated program may miss memory instrumentation
   if there are memory-related annotations.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:665: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:700: Warning: 
   E-ACSL construct `\fresh' is not yet supported. Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:675: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:710: Warning: 
   E-ACSL construct `predicates with labels' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:682: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:717: Warning: 
   E-ACSL construct `predicates with labels' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:665: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:700: Warning: 
   Some assumes clauses could not be translated.
   Ignoring complete and disjoint behaviors annotations.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:665: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:700: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:679: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:714: Warning: 
   E-ACSL construct `\fresh' is not yet supported. Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:680: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:715: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
 [e-acsl] translation done in project "e-acsl".
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 2af473bdba2..6a3a17e2dfa 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
@@ -57,7 +57,7 @@ char *__gen_e_acsl_getenv(char const *name)
     __gen_e_acsl_assert_data_2.pred_txt = "\\result == \\null || \\valid(\\result)";
     __gen_e_acsl_assert_data_2.file = "FRAMAC_SHARE/libc/stdlib.h";
     __gen_e_acsl_assert_data_2.fct = "getenv";
-    __gen_e_acsl_assert_data_2.line = 488;
+    __gen_e_acsl_assert_data_2.line = 523;
     __gen_e_acsl_assert_data_2.name = "null_or_valid_result";
     __e_acsl_assert(__gen_e_acsl_or,& __gen_e_acsl_assert_data_2);
     __e_acsl_assert_clean(& __gen_e_acsl_assert_data_2);
diff --git a/src/plugins/e-acsl/tests/temporal/oracle/t_getenv.res.oracle b/src/plugins/e-acsl/tests/temporal/oracle/t_getenv.res.oracle
index ce1bedf2c98..7782e4d7510 100644
--- a/src/plugins/e-acsl/tests/temporal/oracle/t_getenv.res.oracle
+++ b/src/plugins/e-acsl/tests/temporal/oracle/t_getenv.res.oracle
@@ -2,25 +2,25 @@
 [e-acsl] Warning: annotating undefined function `getenv':
   the generated program may miss memory instrumentation
   if there are memory-related annotations.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:486: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:521: Warning: 
   E-ACSL construct `predicates with labels' is not yet supported.
   Ignoring annotation.
-[e-acsl] FRAMAC_SHARE/libc/stdlib.h:485: Warning: 
+[e-acsl] FRAMAC_SHARE/libc/stdlib.h:520: Warning: 
   E-ACSL construct `assigns clause in behavior' is not yet supported.
   Ignoring annotation.
 [e-acsl] translation done in project "e-acsl".
-[eva:alarm] FRAMAC_SHARE/libc/stdlib.h:488: Warning: 
+[eva:alarm] FRAMAC_SHARE/libc/stdlib.h:523: Warning: 
   function __e_acsl_assert_register_ptr: precondition data->values == \null ||
                                                       \valid(data->values) got status unknown.
-[eva:alarm] FRAMAC_SHARE/libc/stdlib.h:488: Warning: 
+[eva:alarm] FRAMAC_SHARE/libc/stdlib.h:523: Warning: 
   function __e_acsl_assert_register_ulong: precondition data->values == \null ||
                                                         \valid(data->values) got status unknown.
-[eva:alarm] FRAMAC_SHARE/libc/stdlib.h:488: Warning: 
+[eva:alarm] FRAMAC_SHARE/libc/stdlib.h:523: Warning: 
   function __e_acsl_assert_register_int: precondition data->values == \null ||
                                                       \valid(data->values) got status unknown.
-[eva:alarm] FRAMAC_SHARE/libc/stdlib.h:488: Warning: 
+[eva:alarm] FRAMAC_SHARE/libc/stdlib.h:523: Warning: 
   function __e_acsl_assert, behavior blocking: precondition got status unknown.
-[eva:alarm] FRAMAC_SHARE/libc/stdlib.h:488: Warning: 
+[eva:alarm] FRAMAC_SHARE/libc/stdlib.h:523: Warning: 
   function __gen_e_acsl_getenv: postcondition 'null_or_valid_result' got status unknown.
 [eva:alarm] t_getenv.c:13: Warning: 
   function __e_acsl_assert_register_ptr: precondition data->values == \null ||
diff --git a/src/plugins/markdown-report/tests/sarif/oracle/std_string.sarif b/src/plugins/markdown-report/tests/sarif/oracle/std_string.sarif
index 082afbda187..874f9d2005c 100644
--- a/src/plugins/markdown-report/tests/sarif/oracle/std_string.sarif
+++ b/src/plugins/markdown-report/tests/sarif/oracle/std_string.sarif
@@ -4400,9 +4400,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 481,
+                  "startLine": 516,
                   "startColumn": 12,
-                  "endLine": 481,
+                  "endLine": 516,
                   "endColumn": 17,
                   "byteLength": 5
                 }
@@ -4423,9 +4423,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 479,
+                  "startLine": 514,
                   "startColumn": 28,
-                  "endLine": 479,
+                  "endLine": 514,
                   "endColumn": 34,
                   "byteLength": 6
                 }
@@ -4446,9 +4446,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 481,
+                  "startLine": 516,
                   "startColumn": 12,
-                  "endLine": 481,
+                  "endLine": 516,
                   "endColumn": 17,
                   "byteLength": 5
                 }
@@ -4469,9 +4469,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 462,
+                  "startLine": 497,
                   "startColumn": 12,
-                  "endLine": 462,
+                  "endLine": 497,
                   "endColumn": 17,
                   "byteLength": 5
                 }
@@ -4492,9 +4492,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 459,
+                  "startLine": 494,
                   "startColumn": 16,
-                  "endLine": 459,
+                  "endLine": 494,
                   "endColumn": 33,
                   "byteLength": 17
                 }
@@ -4515,9 +4515,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 460,
+                  "startLine": 495,
                   "startColumn": 28,
-                  "endLine": 460,
+                  "endLine": 495,
                   "endColumn": 34,
                   "byteLength": 6
                 }
@@ -4538,9 +4538,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 458,
+                  "startLine": 493,
                   "startColumn": 10,
-                  "endLine": 458,
+                  "endLine": 493,
                   "endColumn": 22,
                   "byteLength": 12
                 }
@@ -4563,9 +4563,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 458,
+                  "startLine": 493,
                   "startColumn": 10,
-                  "endLine": 458,
+                  "endLine": 493,
                   "endColumn": 22,
                   "byteLength": 12
                 }
@@ -4586,9 +4586,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 575,
+                  "startLine": 610,
                   "startColumn": 11,
-                  "endLine": 575,
+                  "endLine": 610,
                   "endColumn": 14,
                   "byteLength": 3
                 }
@@ -4609,9 +4609,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 575,
+                  "startLine": 610,
                   "startColumn": 11,
-                  "endLine": 575,
+                  "endLine": 610,
                   "endColumn": 14,
                   "byteLength": 3
                 }
@@ -4632,9 +4632,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 575,
+                  "startLine": 610,
                   "startColumn": 11,
-                  "endLine": 575,
+                  "endLine": 610,
                   "endColumn": 14,
                   "byteLength": 3
                 }
@@ -4655,9 +4655,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 564,
+                  "startLine": 599,
                   "startColumn": 30,
-                  "endLine": 564,
+                  "endLine": 599,
                   "endColumn": 51,
                   "byteLength": 21
                 }
@@ -4678,9 +4678,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 567,
+                  "startLine": 602,
                   "startColumn": 22,
-                  "endLine": 567,
+                  "endLine": 602,
                   "endColumn": 27,
                   "byteLength": 5
                 }
@@ -4701,9 +4701,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 570,
+                  "startLine": 605,
                   "startColumn": 25,
-                  "endLine": 570,
+                  "endLine": 605,
                   "endColumn": 31,
                   "byteLength": 6
                 }
@@ -4724,9 +4724,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 568,
+                  "startLine": 603,
                   "startColumn": 29,
-                  "endLine": 568,
+                  "endLine": 603,
                   "endColumn": 42,
                   "byteLength": 13
                 }
@@ -4747,9 +4747,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 571,
+                  "startLine": 606,
                   "startColumn": 25,
-                  "endLine": 571,
+                  "endLine": 606,
                   "endColumn": 37,
                   "byteLength": 12
                 }
@@ -4770,9 +4770,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 575,
+                  "startLine": 610,
                   "startColumn": 11,
-                  "endLine": 575,
+                  "endLine": 610,
                   "endColumn": 14,
                   "byteLength": 3
                 }
@@ -4795,9 +4795,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 565,
+                  "startLine": 600,
                   "startColumn": 10,
-                  "endLine": 565,
+                  "endLine": 600,
                   "endColumn": 17,
                   "byteLength": 7
                 }
@@ -4818,9 +4818,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 575,
+                  "startLine": 610,
                   "startColumn": 11,
-                  "endLine": 575,
+                  "endLine": 610,
                   "endColumn": 14,
                   "byteLength": 3
                 }
@@ -4841,9 +4841,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 575,
+                  "startLine": 610,
                   "startColumn": 11,
-                  "endLine": 575,
+                  "endLine": 610,
                   "endColumn": 14,
                   "byteLength": 3
                 }
@@ -4866,9 +4866,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 468,
+                  "startLine": 503,
                   "startColumn": 11,
-                  "endLine": 468,
+                  "endLine": 503,
                   "endColumn": 24,
                   "byteLength": 13
                 }
@@ -4889,9 +4889,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 468,
+                  "startLine": 503,
                   "startColumn": 11,
-                  "endLine": 468,
+                  "endLine": 503,
                   "endColumn": 24,
                   "byteLength": 13
                 }
@@ -4914,9 +4914,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 467,
+                  "startLine": 502,
                   "startColumn": 12,
-                  "endLine": 467,
+                  "endLine": 502,
                   "endColumn": 19,
                   "byteLength": 7
                 }
@@ -4937,9 +4937,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 465,
+                  "startLine": 500,
                   "startColumn": 11,
-                  "endLine": 465,
+                  "endLine": 500,
                   "endColumn": 17,
                   "byteLength": 6
                 }
@@ -4960,9 +4960,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 465,
+                  "startLine": 500,
                   "startColumn": 11,
-                  "endLine": 465,
+                  "endLine": 500,
                   "endColumn": 17,
                   "byteLength": 6
                 }
@@ -4985,9 +4985,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 464,
+                  "startLine": 499,
                   "startColumn": 12,
-                  "endLine": 464,
+                  "endLine": 499,
                   "endColumn": 19,
                   "byteLength": 7
                 }
@@ -5384,9 +5384,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 547,
+                  "startLine": 582,
                   "startColumn": 12,
-                  "endLine": 547,
+                  "endLine": 582,
                   "endColumn": 13,
                   "byteLength": 1
                 }
@@ -5407,9 +5407,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 540,
+                  "startLine": 575,
                   "startColumn": 34,
-                  "endLine": 540,
+                  "endLine": 575,
                   "endColumn": 57,
                   "byteLength": 23
                 }
@@ -5430,9 +5430,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 544,
+                  "startLine": 579,
                   "startColumn": 34,
-                  "endLine": 545,
+                  "endLine": 580,
                   "endColumn": 76,
                   "byteLength": 96
                 }
@@ -5453,9 +5453,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 547,
+                  "startLine": 582,
                   "startColumn": 12,
-                  "endLine": 547,
+                  "endLine": 582,
                   "endColumn": 13,
                   "byteLength": 1
                 }
@@ -5478,9 +5478,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 541,
+                  "startLine": 576,
                   "startColumn": 10,
-                  "endLine": 541,
+                  "endLine": 576,
                   "endColumn": 17,
                   "byteLength": 7
                 }
@@ -6063,9 +6063,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 606,
+                  "startLine": 641,
                   "startColumn": 13,
-                  "endLine": 606,
+                  "endLine": 641,
                   "endColumn": 16,
                   "byteLength": 3
                 }
@@ -6086,9 +6086,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 606,
+                  "startLine": 641,
                   "startColumn": 13,
-                  "endLine": 606,
+                  "endLine": 641,
                   "endColumn": 16,
                   "byteLength": 3
                 }
@@ -6111,9 +6111,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 605,
+                  "startLine": 640,
                   "startColumn": 12,
-                  "endLine": 605,
+                  "endLine": 640,
                   "endColumn": 19,
                   "byteLength": 7
                 }
@@ -6420,9 +6420,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 475,
+                  "startLine": 510,
                   "startColumn": 12,
-                  "endLine": 475,
+                  "endLine": 510,
                   "endColumn": 16,
                   "byteLength": 4
                 }
@@ -6443,9 +6443,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 472,
+                  "startLine": 507,
                   "startColumn": 16,
-                  "endLine": 472,
+                  "endLine": 507,
                   "endColumn": 38,
                   "byteLength": 22
                 }
@@ -6466,9 +6466,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 473,
+                  "startLine": 508,
                   "startColumn": 28,
-                  "endLine": 473,
+                  "endLine": 508,
                   "endColumn": 34,
                   "byteLength": 6
                 }
@@ -6489,9 +6489,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 471,
+                  "startLine": 506,
                   "startColumn": 10,
-                  "endLine": 471,
+                  "endLine": 506,
                   "endColumn": 22,
                   "byteLength": 12
                 }
@@ -6514,9 +6514,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 471,
+                  "startLine": 506,
                   "startColumn": 10,
-                  "endLine": 471,
+                  "endLine": 506,
                   "endColumn": 22,
                   "byteLength": 12
                 }
@@ -6909,9 +6909,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 490,
+                  "startLine": 525,
                   "startColumn": 12,
-                  "endLine": 490,
+                  "endLine": 525,
                   "endColumn": 13,
                   "byteLength": 1
                 }
@@ -6932,9 +6932,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 486,
+                  "startLine": 521,
                   "startColumn": 23,
-                  "endLine": 486,
+                  "endLine": 521,
                   "endColumn": 46,
                   "byteLength": 23
                 }
@@ -6955,9 +6955,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 488,
+                  "startLine": 523,
                   "startColumn": 32,
-                  "endLine": 488,
+                  "endLine": 523,
                   "endColumn": 67,
                   "byteLength": 35
                 }
@@ -6978,9 +6978,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 490,
+                  "startLine": 525,
                   "startColumn": 12,
-                  "endLine": 490,
+                  "endLine": 525,
                   "endColumn": 13,
                   "byteLength": 1
                 }
@@ -7003,9 +7003,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 487,
+                  "startLine": 522,
                   "startColumn": 10,
-                  "endLine": 487,
+                  "endLine": 522,
                   "endColumn": 17,
                   "byteLength": 7
                 }
@@ -7169,9 +7169,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 589,
+                  "startLine": 624,
                   "startColumn": 16,
-                  "endLine": 589,
+                  "endLine": 624,
                   "endColumn": 20,
                   "byteLength": 4
                 }
@@ -7192,9 +7192,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 589,
+                  "startLine": 624,
                   "startColumn": 16,
-                  "endLine": 589,
+                  "endLine": 624,
                   "endColumn": 20,
                   "byteLength": 4
                 }
@@ -7215,9 +7215,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 589,
+                  "startLine": 624,
                   "startColumn": 16,
-                  "endLine": 589,
+                  "endLine": 624,
                   "endColumn": 20,
                   "byteLength": 4
                 }
@@ -7238,9 +7238,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 578,
+                  "startLine": 613,
                   "startColumn": 30,
-                  "endLine": 578,
+                  "endLine": 613,
                   "endColumn": 61,
                   "byteLength": 31
                 }
@@ -7261,9 +7261,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 581,
+                  "startLine": 616,
                   "startColumn": 22,
-                  "endLine": 581,
+                  "endLine": 616,
                   "endColumn": 27,
                   "byteLength": 5
                 }
@@ -7284,9 +7284,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 584,
+                  "startLine": 619,
                   "startColumn": 25,
-                  "endLine": 584,
+                  "endLine": 619,
                   "endColumn": 31,
                   "byteLength": 6
                 }
@@ -7307,9 +7307,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 582,
+                  "startLine": 617,
                   "startColumn": 29,
-                  "endLine": 582,
+                  "endLine": 617,
                   "endColumn": 42,
                   "byteLength": 13
                 }
@@ -7330,9 +7330,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 585,
+                  "startLine": 620,
                   "startColumn": 25,
-                  "endLine": 585,
+                  "endLine": 620,
                   "endColumn": 37,
                   "byteLength": 12
                 }
@@ -7353,9 +7353,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 589,
+                  "startLine": 624,
                   "startColumn": 16,
-                  "endLine": 589,
+                  "endLine": 624,
                   "endColumn": 20,
                   "byteLength": 4
                 }
@@ -7378,9 +7378,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 579,
+                  "startLine": 614,
                   "startColumn": 10,
-                  "endLine": 579,
+                  "endLine": 614,
                   "endColumn": 17,
                   "byteLength": 7
                 }
@@ -7401,9 +7401,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 589,
+                  "startLine": 624,
                   "startColumn": 16,
-                  "endLine": 589,
+                  "endLine": 624,
                   "endColumn": 20,
                   "byteLength": 4
                 }
@@ -7424,9 +7424,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 589,
+                  "startLine": 624,
                   "startColumn": 16,
-                  "endLine": 589,
+                  "endLine": 624,
                   "endColumn": 20,
                   "byteLength": 4
                 }
@@ -7568,9 +7568,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 608,
+                  "startLine": 643,
                   "startColumn": 14,
-                  "endLine": 608,
+                  "endLine": 643,
                   "endColumn": 18,
                   "byteLength": 4
                 }
@@ -7591,9 +7591,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 608,
+                  "startLine": 643,
                   "startColumn": 14,
-                  "endLine": 608,
+                  "endLine": 643,
                   "endColumn": 18,
                   "byteLength": 4
                 }
@@ -7616,9 +7616,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 607,
+                  "startLine": 642,
                   "startColumn": 12,
-                  "endLine": 607,
+                  "endLine": 642,
                   "endColumn": 19,
                   "byteLength": 7
                 }
@@ -7639,9 +7639,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 603,
+                  "startLine": 638,
                   "startColumn": 21,
-                  "endLine": 603,
+                  "endLine": 638,
                   "endColumn": 26,
                   "byteLength": 5
                 }
@@ -7662,9 +7662,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 603,
+                  "startLine": 638,
                   "startColumn": 21,
-                  "endLine": 603,
+                  "endLine": 638,
                   "endColumn": 26,
                   "byteLength": 5
                 }
@@ -7685,9 +7685,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 603,
+                  "startLine": 638,
                   "startColumn": 21,
-                  "endLine": 603,
+                  "endLine": 638,
                   "endColumn": 26,
                   "byteLength": 5
                 }
@@ -7708,9 +7708,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 592,
+                  "startLine": 627,
                   "startColumn": 30,
-                  "endLine": 592,
+                  "endLine": 627,
                   "endColumn": 63,
                   "byteLength": 33
                 }
@@ -7731,9 +7731,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 595,
+                  "startLine": 630,
                   "startColumn": 22,
-                  "endLine": 595,
+                  "endLine": 630,
                   "endColumn": 27,
                   "byteLength": 5
                 }
@@ -7754,9 +7754,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 598,
+                  "startLine": 633,
                   "startColumn": 25,
-                  "endLine": 598,
+                  "endLine": 633,
                   "endColumn": 31,
                   "byteLength": 6
                 }
@@ -7777,9 +7777,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 596,
+                  "startLine": 631,
                   "startColumn": 29,
-                  "endLine": 596,
+                  "endLine": 631,
                   "endColumn": 42,
                   "byteLength": 13
                 }
@@ -7800,9 +7800,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 599,
+                  "startLine": 634,
                   "startColumn": 25,
-                  "endLine": 599,
+                  "endLine": 634,
                   "endColumn": 37,
                   "byteLength": 12
                 }
@@ -7823,9 +7823,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 603,
+                  "startLine": 638,
                   "startColumn": 21,
-                  "endLine": 603,
+                  "endLine": 638,
                   "endColumn": 26,
                   "byteLength": 5
                 }
@@ -7848,9 +7848,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 593,
+                  "startLine": 628,
                   "startColumn": 10,
-                  "endLine": 593,
+                  "endLine": 628,
                   "endColumn": 17,
                   "byteLength": 7
                 }
@@ -7871,9 +7871,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 603,
+                  "startLine": 638,
                   "startColumn": 21,
-                  "endLine": 603,
+                  "endLine": 638,
                   "endColumn": 26,
                   "byteLength": 5
                 }
@@ -7894,9 +7894,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 603,
+                  "startLine": 638,
                   "startColumn": 21,
-                  "endLine": 603,
+                  "endLine": 638,
                   "endColumn": 26,
                   "byteLength": 5
                 }
@@ -7917,9 +7917,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 610,
+                  "startLine": 645,
                   "startColumn": 15,
-                  "endLine": 610,
+                  "endLine": 645,
                   "endColumn": 20,
                   "byteLength": 5
                 }
@@ -7940,9 +7940,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 610,
+                  "startLine": 645,
                   "startColumn": 15,
-                  "endLine": 610,
+                  "endLine": 645,
                   "endColumn": 20,
                   "byteLength": 5
                 }
@@ -7965,9 +7965,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 609,
+                  "startLine": 644,
                   "startColumn": 12,
-                  "endLine": 609,
+                  "endLine": 644,
                   "endColumn": 19,
                   "byteLength": 7
                 }
@@ -8580,9 +8580,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 618,
+                  "startLine": 653,
                   "startColumn": 11,
-                  "endLine": 618,
+                  "endLine": 653,
                   "endColumn": 16,
                   "byteLength": 5
                 }
@@ -8603,9 +8603,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 616,
+                  "startLine": 651,
                   "startColumn": 12,
-                  "endLine": 616,
+                  "endLine": 651,
                   "endColumn": 19,
                   "byteLength": 7
                 }
@@ -8628,9 +8628,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 616,
+                  "startLine": 651,
                   "startColumn": 12,
-                  "endLine": 616,
+                  "endLine": 651,
                   "endColumn": 19,
                   "byteLength": 7
                 }
@@ -8653,9 +8653,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 616,
+                  "startLine": 651,
                   "startColumn": 21,
-                  "endLine": 616,
+                  "endLine": 651,
                   "endColumn": 37,
                   "byteLength": 16
                 }
@@ -8676,9 +8676,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 650,
+                  "startLine": 685,
                   "startColumn": 14,
-                  "endLine": 650,
+                  "endLine": 685,
                   "endColumn": 22,
                   "byteLength": 8
                 }
@@ -8699,9 +8699,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 646,
+                  "startLine": 681,
                   "startColumn": 23,
-                  "endLine": 646,
+                  "endLine": 681,
                   "endColumn": 42,
                   "byteLength": 19
                 }
@@ -8722,9 +8722,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 647,
+                  "startLine": 682,
                   "startColumn": 10,
-                  "endLine": 647,
+                  "endLine": 682,
                   "endColumn": 17,
                   "byteLength": 7
                 }
@@ -8747,9 +8747,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 647,
+                  "startLine": 682,
                   "startColumn": 10,
-                  "endLine": 647,
+                  "endLine": 682,
                   "endColumn": 17,
                   "byteLength": 7
                 }
@@ -8773,9 +8773,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 648,
+                  "startLine": 683,
                   "startColumn": 10,
-                  "endLine": 648,
+                  "endLine": 683,
                   "endColumn": 24,
                   "byteLength": 14
                 }
@@ -8796,9 +8796,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 630,
+                  "startLine": 665,
                   "startColumn": 11,
-                  "endLine": 630,
+                  "endLine": 665,
                   "endColumn": 17,
                   "byteLength": 6
                 }
@@ -8819,9 +8819,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 623,
+                  "startLine": 658,
                   "startColumn": 23,
-                  "endLine": 623,
+                  "endLine": 658,
                   "endColumn": 41,
                   "byteLength": 18
                 }
@@ -8842,9 +8842,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 628,
+                  "startLine": 663,
                   "startColumn": 26,
-                  "endLine": 628,
+                  "endLine": 663,
                   "endColumn": 38,
                   "byteLength": 12
                 }
@@ -8865,9 +8865,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 624,
+                  "startLine": 659,
                   "startColumn": 10,
-                  "endLine": 624,
+                  "endLine": 659,
                   "endColumn": 17,
                   "byteLength": 7
                 }
@@ -8890,9 +8890,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 624,
+                  "startLine": 659,
                   "startColumn": 10,
-                  "endLine": 624,
+                  "endLine": 659,
                   "endColumn": 17,
                   "byteLength": 7
                 }
@@ -8916,9 +8916,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 626,
+                  "startLine": 661,
                   "startColumn": 10,
-                  "endLine": 626,
+                  "endLine": 661,
                   "endColumn": 29,
                   "byteLength": 19
                 }
@@ -8942,9 +8942,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 626,
+                  "startLine": 661,
                   "startColumn": 31,
-                  "endLine": 626,
+                  "endLine": 661,
                   "endColumn": 48,
                   "byteLength": 17
                 }
@@ -11276,9 +11276,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 701,
+                  "startLine": 736,
                   "startColumn": 11,
-                  "endLine": 701,
+                  "endLine": 736,
                   "endColumn": 18,
                   "byteLength": 7
                 }
@@ -11299,9 +11299,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 694,
+                  "startLine": 729,
                   "startColumn": 27,
-                  "endLine": 694,
+                  "endLine": 729,
                   "endColumn": 48,
                   "byteLength": 21
                 }
@@ -11322,9 +11322,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 695,
+                  "startLine": 730,
                   "startColumn": 25,
-                  "endLine": 695,
+                  "endLine": 730,
                   "endColumn": 45,
                   "byteLength": 20
                 }
@@ -11345,9 +11345,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 698,
+                  "startLine": 733,
                   "startColumn": 36,
-                  "endLine": 699,
+                  "endLine": 734,
                   "endColumn": 53,
                   "byteLength": 70
                 }
@@ -11368,9 +11368,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 696,
+                  "startLine": 731,
                   "startColumn": 10,
-                  "endLine": 696,
+                  "endLine": 731,
                   "endColumn": 22,
                   "byteLength": 12
                 }
@@ -11394,9 +11394,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 696,
+                  "startLine": 731,
                   "startColumn": 10,
-                  "endLine": 696,
+                  "endLine": 731,
                   "endColumn": 22,
                   "byteLength": 12
                 }
@@ -11419,9 +11419,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 697,
+                  "startLine": 732,
                   "startColumn": 10,
-                  "endLine": 697,
+                  "endLine": 732,
                   "endColumn": 17,
                   "byteLength": 7
                 }
@@ -11442,9 +11442,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 714,
+                  "startLine": 749,
                   "startColumn": 11,
-                  "endLine": 714,
+                  "endLine": 749,
                   "endColumn": 19,
                   "byteLength": 8
                 }
@@ -11465,9 +11465,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 706,
+                  "startLine": 741,
                   "startColumn": 27,
-                  "endLine": 706,
+                  "endLine": 741,
                   "endColumn": 48,
                   "byteLength": 21
                 }
@@ -11488,9 +11488,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 707,
+                  "startLine": 742,
                   "startColumn": 25,
-                  "endLine": 707,
+                  "endLine": 742,
                   "endColumn": 57,
                   "byteLength": 32
                 }
@@ -11511,9 +11511,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 708,
+                  "startLine": 743,
                   "startColumn": 35,
-                  "endLine": 708,
+                  "endLine": 743,
                   "endColumn": 49,
                   "byteLength": 14
                 }
@@ -11534,9 +11534,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 711,
+                  "startLine": 746,
                   "startColumn": 36,
-                  "endLine": 712,
+                  "endLine": 747,
                   "endColumn": 53,
                   "byteLength": 70
                 }
@@ -11557,9 +11557,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 709,
+                  "startLine": 744,
                   "startColumn": 10,
-                  "endLine": 709,
+                  "endLine": 744,
                   "endColumn": 22,
                   "byteLength": 12
                 }
@@ -11583,9 +11583,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 709,
+                  "startLine": 744,
                   "startColumn": 10,
-                  "endLine": 709,
+                  "endLine": 744,
                   "endColumn": 22,
                   "byteLength": 12
                 }
@@ -11608,9 +11608,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 710,
+                  "startLine": 745,
                   "startColumn": 10,
-                  "endLine": 710,
+                  "endLine": 745,
                   "endColumn": 17,
                   "byteLength": 7
                 }
@@ -11919,9 +11919,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 689,
+                  "startLine": 724,
                   "startColumn": 11,
-                  "endLine": 689,
+                  "endLine": 724,
                   "endColumn": 25,
                   "byteLength": 14
                 }
@@ -11944,9 +11944,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 689,
+                  "startLine": 724,
                   "startColumn": 11,
-                  "endLine": 689,
+                  "endLine": 724,
                   "endColumn": 25,
                   "byteLength": 14
                 }
@@ -11969,9 +11969,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 689,
+                  "startLine": 724,
                   "startColumn": 11,
-                  "endLine": 689,
+                  "endLine": 724,
                   "endColumn": 25,
                   "byteLength": 14
                 }
@@ -11992,9 +11992,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 666,
+                  "startLine": 701,
                   "startColumn": 25,
-                  "endLine": 666,
+                  "endLine": 701,
                   "endColumn": 39,
                   "byteLength": 14
                 }
@@ -12015,9 +12015,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 668,
+                  "startLine": 703,
                   "startColumn": 4,
-                  "endLine": 669,
+                  "endLine": 704,
                   "endColumn": 54,
                   "byteLength": 84
                 }
@@ -12038,9 +12038,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 675,
+                  "startLine": 710,
                   "startColumn": 26,
-                  "endLine": 675,
+                  "endLine": 710,
                   "endColumn": 44,
                   "byteLength": 18
                 }
@@ -12061,9 +12061,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 682,
+                  "startLine": 717,
                   "startColumn": 29,
-                  "endLine": 682,
+                  "endLine": 717,
                   "endColumn": 48,
                   "byteLength": 19
                 }
@@ -12084,9 +12084,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 679,
+                  "startLine": 714,
                   "startColumn": 24,
-                  "endLine": 679,
+                  "endLine": 714,
                   "endColumn": 44,
                   "byteLength": 20
                 }
@@ -12107,9 +12107,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 680,
+                  "startLine": 715,
                   "startColumn": 25,
-                  "endLine": 680,
+                  "endLine": 715,
                   "endColumn": 37,
                   "byteLength": 12
                 }
@@ -12130,9 +12130,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 685,
+                  "startLine": 720,
                   "startColumn": 29,
-                  "endLine": 685,
+                  "endLine": 720,
                   "endColumn": 55,
                   "byteLength": 26
                 }
@@ -12153,9 +12153,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 676,
+                  "startLine": 711,
                   "startColumn": 12,
-                  "endLine": 676,
+                  "endLine": 711,
                   "endColumn": 28,
                   "byteLength": 16
                 }
@@ -12176,9 +12176,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 671,
+                  "startLine": 706,
                   "startColumn": 10,
-                  "endLine": 671,
+                  "endLine": 706,
                   "endColumn": 26,
                   "byteLength": 16
                 }
@@ -12199,9 +12199,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 689,
+                  "startLine": 724,
                   "startColumn": 11,
-                  "endLine": 689,
+                  "endLine": 724,
                   "endColumn": 25,
                   "byteLength": 14
                 }
@@ -12225,9 +12225,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 676,
+                  "startLine": 711,
                   "startColumn": 12,
-                  "endLine": 676,
+                  "endLine": 711,
                   "endColumn": 28,
                   "byteLength": 16
                 }
@@ -12251,9 +12251,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 677,
+                  "startLine": 712,
                   "startColumn": 12,
-                  "endLine": 677,
+                  "endLine": 712,
                   "endColumn": 19,
                   "byteLength": 7
                 }
@@ -12277,9 +12277,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 671,
+                  "startLine": 706,
                   "startColumn": 10,
-                  "endLine": 671,
+                  "endLine": 706,
                   "endColumn": 26,
                   "byteLength": 16
                 }
@@ -12303,9 +12303,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 672,
+                  "startLine": 707,
                   "startColumn": 10,
-                  "endLine": 672,
+                  "endLine": 707,
                   "endColumn": 17,
                   "byteLength": 7
                 }
@@ -12329,9 +12329,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 683,
+                  "startLine": 718,
                   "startColumn": 12,
-                  "endLine": 683,
+                  "endLine": 718,
                   "endColumn": 19,
                   "byteLength": 7
                 }
@@ -12354,9 +12354,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 670,
+                  "startLine": 705,
                   "startColumn": 12,
-                  "endLine": 670,
+                  "endLine": 705,
                   "endColumn": 19,
                   "byteLength": 7
                 }
@@ -12379,9 +12379,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 689,
+                  "startLine": 724,
                   "startColumn": 11,
-                  "endLine": 689,
+                  "endLine": 724,
                   "endColumn": 25,
                   "byteLength": 14
                 }
@@ -12404,9 +12404,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 689,
+                  "startLine": 724,
                   "startColumn": 11,
-                  "endLine": 689,
+                  "endLine": 724,
                   "endColumn": 25,
                   "byteLength": 14
                 }
@@ -12429,9 +12429,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 689,
+                  "startLine": 724,
                   "startColumn": 11,
-                  "endLine": 689,
+                  "endLine": 724,
                   "endColumn": 25,
                   "byteLength": 14
                 }
@@ -12452,9 +12452,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 497,
+                  "startLine": 532,
                   "startColumn": 11,
-                  "endLine": 497,
+                  "endLine": 532,
                   "endColumn": 17,
                   "byteLength": 6
                 }
@@ -12475,9 +12475,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 493,
+                  "startLine": 528,
                   "startColumn": 25,
-                  "endLine": 493,
+                  "endLine": 528,
                   "endColumn": 50,
                   "byteLength": 25
                 }
@@ -12498,9 +12498,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 494,
+                  "startLine": 529,
                   "startColumn": 10,
-                  "endLine": 494,
+                  "endLine": 529,
                   "endColumn": 23,
                   "byteLength": 13
                 }
@@ -12523,9 +12523,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 494,
+                  "startLine": 529,
                   "startColumn": 10,
-                  "endLine": 494,
+                  "endLine": 529,
                   "endColumn": 23,
                   "byteLength": 13
                 }
@@ -12548,9 +12548,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 495,
+                  "startLine": 530,
                   "startColumn": 10,
-                  "endLine": 495,
+                  "endLine": 530,
                   "endColumn": 17,
                   "byteLength": 7
                 }
@@ -12571,9 +12571,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 558,
+                  "startLine": 593,
                   "startColumn": 12,
-                  "endLine": 558,
+                  "endLine": 593,
                   "endColumn": 17,
                   "byteLength": 5
                 }
@@ -12594,9 +12594,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 553,
+                  "startLine": 588,
                   "startColumn": 34,
-                  "endLine": 553,
+                  "endLine": 588,
                   "endColumn": 57,
                   "byteLength": 23
                 }
@@ -12617,9 +12617,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 554,
+                  "startLine": 589,
                   "startColumn": 10,
-                  "endLine": 554,
+                  "endLine": 589,
                   "endColumn": 29,
                   "byteLength": 19
                 }
@@ -12643,9 +12643,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 554,
+                  "startLine": 589,
                   "startColumn": 10,
-                  "endLine": 554,
+                  "endLine": 589,
                   "endColumn": 29,
                   "byteLength": 19
                 }
@@ -12666,9 +12666,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 521,
+                  "startLine": 556,
                   "startColumn": 12,
-                  "endLine": 521,
+                  "endLine": 556,
                   "endColumn": 22,
                   "byteLength": 10
                 }
@@ -12689,9 +12689,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 519,
+                  "startLine": 554,
                   "startColumn": 28,
-                  "endLine": 519,
+                  "endLine": 554,
                   "endColumn": 34,
                   "byteLength": 6
                 }
@@ -12712,9 +12712,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 521,
+                  "startLine": 556,
                   "startColumn": 12,
-                  "endLine": 521,
+                  "endLine": 556,
                   "endColumn": 22,
                   "byteLength": 10
                 }
@@ -12892,7 +12892,647 @@
           "ruleId": "user-spec",
           "kind": "pass",
           "level": "none",
-          "message": { "text": "assigns clause in function random." },
+          "message": { "text": "assigns clause in function random." },
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "uri": "libc/stdlib.h",
+                  "uriBaseId": "FRAMAC_SHARE"
+                },
+                "region": {
+                  "startLine": 281,
+                  "startColumn": 16,
+                  "endLine": 281,
+                  "endColumn": 22,
+                  "byteLength": 6
+                }
+              }
+            }
+          ]
+        },
+        {
+          "ruleId": "user-spec",
+          "kind": "pass",
+          "level": "none",
+          "message": {
+            "text": "from clause of term \\result in function random."
+          },
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "uri": "libc/stdlib.h",
+                  "uriBaseId": "FRAMAC_SHARE"
+                },
+                "region": {
+                  "startLine": 278,
+                  "startColumn": 10,
+                  "endLine": 278,
+                  "endColumn": 17,
+                  "byteLength": 7
+                }
+              }
+            }
+          ]
+        },
+        {
+          "ruleId": "user-spec",
+          "kind": "pass",
+          "level": "none",
+          "message": { "text": "behavior allocation in function realloc." },
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "uri": "libc/stdlib.h",
+                  "uriBaseId": "FRAMAC_SHARE"
+                },
+                "region": {
+                  "startLine": 452,
+                  "startColumn": 12,
+                  "endLine": 452,
+                  "endColumn": 13,
+                  "byteLength": 1
+                }
+              }
+            }
+          ]
+        },
+        {
+          "ruleId": "user-spec",
+          "kind": "pass",
+          "level": "none",
+          "message": { "text": "behavior deallocation in function realloc." },
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "uri": "libc/stdlib.h",
+                  "uriBaseId": "FRAMAC_SHARE"
+                },
+                "region": {
+                  "startLine": 452,
+                  "startColumn": 12,
+                  "endLine": 452,
+                  "endColumn": 13,
+                  "byteLength": 1
+                }
+              }
+            }
+          ]
+        },
+        {
+          "ruleId": "user-spec",
+          "kind": "pass",
+          "level": "none",
+          "message": { "text": "behavior default! in function realloc." },
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "uri": "libc/stdlib.h",
+                  "uriBaseId": "FRAMAC_SHARE"
+                },
+                "region": {
+                  "startLine": 452,
+                  "startColumn": 12,
+                  "endLine": 452,
+                  "endColumn": 13,
+                  "byteLength": 1
+                }
+              }
+            }
+          ]
+        },
+        {
+          "ruleId": "user-spec",
+          "kind": "pass",
+          "level": "none",
+          "message": { "text": "behavior fail in function realloc." },
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "uri": "libc/stdlib.h",
+                  "uriBaseId": "FRAMAC_SHARE"
+                },
+                "region": {
+                  "startLine": 452,
+                  "startColumn": 12,
+                  "endLine": 452,
+                  "endColumn": 13,
+                  "byteLength": 1
+                }
+              }
+            }
+          ]
+        },
+        {
+          "ruleId": "user-spec",
+          "kind": "pass",
+          "level": "none",
+          "message": { "text": "freeable." },
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "uri": "libc/stdlib.h",
+                  "uriBaseId": "FRAMAC_SHARE"
+                },
+                "region": {
+                  "startLine": 422,
+                  "startColumn": 22,
+                  "endLine": 422,
+                  "endColumn": 52,
+                  "byteLength": 30
+                }
+              }
+            }
+          ]
+        },
+        {
+          "ruleId": "user-spec",
+          "kind": "pass",
+          "level": "none",
+          "message": { "text": "can_allocate." },
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "uri": "libc/stdlib.h",
+                  "uriBaseId": "FRAMAC_SHARE"
+                },
+                "region": {
+                  "startLine": 429,
+                  "startColumn": 27,
+                  "endLine": 429,
+                  "endColumn": 45,
+                  "byteLength": 18
+                }
+              }
+            }
+          ]
+        },
+        {
+          "ruleId": "user-spec",
+          "kind": "pass",
+          "level": "none",
+          "message": { "text": "nonnull_ptr." },
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "uri": "libc/stdlib.h",
+                  "uriBaseId": "FRAMAC_SHARE"
+                },
+                "region": {
+                  "startLine": 435,
+                  "startColumn": 26,
+                  "endLine": 435,
+                  "endColumn": 38,
+                  "byteLength": 12
+                }
+              }
+            }
+          ]
+        },
+        {
+          "ruleId": "user-spec",
+          "kind": "pass",
+          "level": "none",
+          "message": { "text": "can_allocate." },
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "uri": "libc/stdlib.h",
+                  "uriBaseId": "FRAMAC_SHARE"
+                },
+                "region": {
+                  "startLine": 436,
+                  "startColumn": 27,
+                  "endLine": 436,
+                  "endColumn": 45,
+                  "byteLength": 18
+                }
+              }
+            }
+          ]
+        },
+        {
+          "ruleId": "user-spec",
+          "kind": "pass",
+          "level": "none",
+          "message": { "text": "cannot_allocate." },
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "uri": "libc/stdlib.h",
+                  "uriBaseId": "FRAMAC_SHARE"
+                },
+                "region": {
+                  "startLine": 442,
+                  "startColumn": 30,
+                  "endLine": 442,
+                  "endColumn": 49,
+                  "byteLength": 19
+                }
+              }
+            }
+          ]
+        },
+        {
+          "ruleId": "user-spec",
+          "kind": "pass",
+          "level": "none",
+          "message": { "text": "allocation." },
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "uri": "libc/stdlib.h",
+                  "uriBaseId": "FRAMAC_SHARE"
+                },
+                "region": {
+                  "startLine": 432,
+                  "startColumn": 25,
+                  "endLine": 432,
+                  "endColumn": 45,
+                  "byteLength": 20
+                }
+              }
+            }
+          ]
+        },
+        {
+          "ruleId": "user-spec",
+          "kind": "pass",
+          "level": "none",
+          "message": { "text": "freed." },
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "uri": "libc/stdlib.h",
+                  "uriBaseId": "FRAMAC_SHARE"
+                },
+                "region": {
+                  "startLine": 438,
+                  "startColumn": 20,
+                  "endLine": 438,
+                  "endColumn": 35,
+                  "byteLength": 15
+                }
+              }
+            }
+          ]
+        },
+        {
+          "ruleId": "user-spec",
+          "kind": "pass",
+          "level": "none",
+          "message": { "text": "freeable." },
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "uri": "libc/stdlib.h",
+                  "uriBaseId": "FRAMAC_SHARE"
+                },
+                "region": {
+                  "startLine": 439,
+                  "startColumn": 23,
+                  "endLine": 439,
+                  "endColumn": 61,
+                  "byteLength": 38
+                }
+              }
+            }
+          ]
+        },
+        {
+          "ruleId": "user-spec",
+          "kind": "pass",
+          "level": "none",
+          "message": { "text": "null_result." },
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "uri": "libc/stdlib.h",
+                  "uriBaseId": "FRAMAC_SHARE"
+                },
+                "region": {
+                  "startLine": 446,
+                  "startColumn": 26,
+                  "endLine": 446,
+                  "endColumn": 42,
+                  "byteLength": 16
+                }
+              }
+            }
+          ]
+        },
+        {
+          "ruleId": "user-spec",
+          "kind": "pass",
+          "level": "none",
+          "message": { "text": "assigns clause in function realloc." },
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "uri": "libc/stdlib.h",
+                  "uriBaseId": "FRAMAC_SHARE"
+                },
+                "region": {
+                  "startLine": 452,
+                  "startColumn": 12,
+                  "endLine": 452,
+                  "endColumn": 13,
+                  "byteLength": 1
+                }
+              }
+            }
+          ]
+        },
+        {
+          "ruleId": "user-spec",
+          "kind": "pass",
+          "level": "none",
+          "message": { "text": "assigns clause in function realloc." },
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "uri": "libc/stdlib.h",
+                  "uriBaseId": "FRAMAC_SHARE"
+                },
+                "region": {
+                  "startLine": 425,
+                  "startColumn": 11,
+                  "endLine": 425,
+                  "endColumn": 27,
+                  "byteLength": 16
+                }
+              }
+            }
+          ]
+        },
+        {
+          "ruleId": "user-spec",
+          "kind": "pass",
+          "level": "none",
+          "message": { "text": "assigns clause in function realloc." },
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "uri": "libc/stdlib.h",
+                  "uriBaseId": "FRAMAC_SHARE"
+                },
+                "region": {
+                  "startLine": 452,
+                  "startColumn": 12,
+                  "endLine": 452,
+                  "endColumn": 13,
+                  "byteLength": 1
+                }
+              }
+            }
+          ]
+        },
+        {
+          "ruleId": "user-spec",
+          "kind": "pass",
+          "level": "none",
+          "message": {
+            "text": "from clause of term \\result in function realloc."
+          },
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "uri": "libc/stdlib.h",
+                  "uriBaseId": "FRAMAC_SHARE"
+                },
+                "region": {
+                  "startLine": 431,
+                  "startColumn": 13,
+                  "endLine": 431,
+                  "endColumn": 20,
+                  "byteLength": 7
+                }
+              }
+            }
+          ]
+        },
+        {
+          "ruleId": "user-spec",
+          "kind": "pass",
+          "level": "none",
+          "message": {
+            "text":
+              "from clause of term __fc_heap_status in function realloc."
+          },
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "uri": "libc/stdlib.h",
+                  "uriBaseId": "FRAMAC_SHARE"
+                },
+                "region": {
+                  "startLine": 425,
+                  "startColumn": 11,
+                  "endLine": 425,
+                  "endColumn": 27,
+                  "byteLength": 16
+                }
+              }
+            }
+          ]
+        },
+        {
+          "ruleId": "user-spec",
+          "kind": "pass",
+          "level": "none",
+          "message": {
+            "text": "from clause of term \\result in function realloc."
+          },
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "uri": "libc/stdlib.h",
+                  "uriBaseId": "FRAMAC_SHARE"
+                },
+                "region": {
+                  "startLine": 426,
+                  "startColumn": 11,
+                  "endLine": 426,
+                  "endColumn": 18,
+                  "byteLength": 7
+                }
+              }
+            }
+          ]
+        },
+        {
+          "ruleId": "user-spec",
+          "kind": "pass",
+          "level": "none",
+          "message": {
+            "text": "from clause of term \\result in function realloc."
+          },
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "uri": "libc/stdlib.h",
+                  "uriBaseId": "FRAMAC_SHARE"
+                },
+                "region": {
+                  "startLine": 445,
+                  "startColumn": 13,
+                  "endLine": 445,
+                  "endColumn": 20,
+                  "byteLength": 7
+                }
+              }
+            }
+          ]
+        },
+        {
+          "ruleId": "user-spec",
+          "kind": "pass",
+          "level": "none",
+          "message": {
+            "text": "allocates/frees clause in function realloc."
+          },
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "uri": "libc/stdlib.h",
+                  "uriBaseId": "FRAMAC_SHARE"
+                },
+                "region": {
+                  "startLine": 430,
+                  "startColumn": 15,
+                  "endLine": 430,
+                  "endColumn": 22,
+                  "byteLength": 7
+                }
+              }
+            }
+          ]
+        },
+        {
+          "ruleId": "user-spec",
+          "kind": "pass",
+          "level": "none",
+          "message": {
+            "text": "allocates/frees clause in function realloc."
+          },
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "uri": "libc/stdlib.h",
+                  "uriBaseId": "FRAMAC_SHARE"
+                },
+                "region": {
+                  "startLine": 437,
+                  "startColumn": 11,
+                  "endLine": 437,
+                  "endColumn": 14,
+                  "byteLength": 3
+                }
+              }
+            }
+          ]
+        },
+        {
+          "ruleId": "user-spec",
+          "kind": "pass",
+          "level": "none",
+          "message": {
+            "text": "allocates/frees clause in function realloc."
+          },
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "uri": "libc/stdlib.h",
+                  "uriBaseId": "FRAMAC_SHARE"
+                },
+                "region": {
+                  "startLine": 424,
+                  "startColumn": 9,
+                  "endLine": 424,
+                  "endColumn": 12,
+                  "byteLength": 3
+                }
+              }
+            }
+          ]
+        },
+        {
+          "ruleId": "user-spec",
+          "kind": "pass",
+          "level": "none",
+          "message": {
+            "text": "allocates/frees clause in function realloc."
+          },
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "uri": "libc/stdlib.h",
+                  "uriBaseId": "FRAMAC_SHARE"
+                },
+                "region": {
+                  "startLine": 452,
+                  "startColumn": 12,
+                  "endLine": 452,
+                  "endColumn": 13,
+                  "byteLength": 1
+                }
+              }
+            }
+          ]
+        },
+        {
+          "ruleId": "user-spec",
+          "kind": "pass",
+          "level": "none",
+          "message": { "text": "complete clause in function realloc." },
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "uri": "libc/stdlib.h",
+                  "uriBaseId": "FRAMAC_SHARE"
+                },
+                "region": {
+                  "startLine": 452,
+                  "startColumn": 12,
+                  "endLine": 452,
+                  "endColumn": 13,
+                  "byteLength": 1
+                }
+              }
+            }
+          ]
+        },
+        {
+          "ruleId": "user-spec",
+          "kind": "pass",
+          "level": "none",
+          "message": { "text": "disjoint clause in function realloc." },
           "locations": [
             {
               "physicalLocation": {
@@ -12901,11 +13541,11 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 281,
-                  "startColumn": 16,
-                  "endLine": 281,
-                  "endColumn": 22,
-                  "byteLength": 6
+                  "startLine": 452,
+                  "startColumn": 12,
+                  "endLine": 452,
+                  "endColumn": 13,
+                  "byteLength": 1
                 }
               }
             }
@@ -12915,9 +13555,7 @@
           "ruleId": "user-spec",
           "kind": "pass",
           "level": "none",
-          "message": {
-            "text": "from clause of term \\result in function random."
-          },
+          "message": { "text": "disjoint clause in function realloc." },
           "locations": [
             {
               "physicalLocation": {
@@ -12926,11 +13564,11 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 278,
-                  "startColumn": 10,
-                  "endLine": 278,
-                  "endColumn": 17,
-                  "byteLength": 7
+                  "startLine": 452,
+                  "startColumn": 12,
+                  "endLine": 452,
+                  "endColumn": 13,
+                  "byteLength": 1
                 }
               }
             }
@@ -12940,7 +13578,9 @@
           "ruleId": "user-spec",
           "kind": "pass",
           "level": "none",
-          "message": { "text": "behavior allocation in function realloc." },
+          "message": {
+            "text": "behavior allocation in function reallocarray."
+          },
           "locations": [
             {
               "physicalLocation": {
@@ -12949,9 +13589,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 452,
+                  "startLine": 488,
                   "startColumn": 12,
-                  "endLine": 452,
+                  "endLine": 488,
                   "endColumn": 13,
                   "byteLength": 1
                 }
@@ -12963,7 +13603,9 @@
           "ruleId": "user-spec",
           "kind": "pass",
           "level": "none",
-          "message": { "text": "behavior deallocation in function realloc." },
+          "message": {
+            "text": "behavior deallocation in function reallocarray."
+          },
           "locations": [
             {
               "physicalLocation": {
@@ -12972,9 +13614,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 452,
+                  "startLine": 488,
                   "startColumn": 12,
-                  "endLine": 452,
+                  "endLine": 488,
                   "endColumn": 13,
                   "byteLength": 1
                 }
@@ -12986,7 +13628,9 @@
           "ruleId": "user-spec",
           "kind": "pass",
           "level": "none",
-          "message": { "text": "behavior default! in function realloc." },
+          "message": {
+            "text": "behavior default! in function reallocarray."
+          },
           "locations": [
             {
               "physicalLocation": {
@@ -12995,9 +13639,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 452,
+                  "startLine": 488,
                   "startColumn": 12,
-                  "endLine": 452,
+                  "endLine": 488,
                   "endColumn": 13,
                   "byteLength": 1
                 }
@@ -13009,7 +13653,7 @@
           "ruleId": "user-spec",
           "kind": "pass",
           "level": "none",
-          "message": { "text": "behavior fail in function realloc." },
+          "message": { "text": "behavior fail in function reallocarray." },
           "locations": [
             {
               "physicalLocation": {
@@ -13018,9 +13662,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 452,
+                  "startLine": 488,
                   "startColumn": 12,
-                  "endLine": 452,
+                  "endLine": 488,
                   "endColumn": 13,
                   "byteLength": 1
                 }
@@ -13041,9 +13685,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 422,
+                  "startLine": 456,
                   "startColumn": 22,
-                  "endLine": 422,
+                  "endLine": 456,
                   "endColumn": 52,
                   "byteLength": 30
                 }
@@ -13064,11 +13708,11 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 429,
+                  "startLine": 465,
                   "startColumn": 27,
-                  "endLine": 429,
-                  "endColumn": 45,
-                  "byteLength": 18
+                  "endLine": 465,
+                  "endColumn": 53,
+                  "byteLength": 26
                 }
               }
             }
@@ -13087,9 +13731,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 435,
+                  "startLine": 470,
                   "startColumn": 26,
-                  "endLine": 435,
+                  "endLine": 470,
                   "endColumn": 38,
                   "byteLength": 12
                 }
@@ -13110,11 +13754,11 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 436,
+                  "startLine": 471,
                   "startColumn": 27,
-                  "endLine": 436,
-                  "endColumn": 45,
-                  "byteLength": 18
+                  "endLine": 471,
+                  "endColumn": 53,
+                  "byteLength": 26
                 }
               }
             }
@@ -13133,11 +13777,11 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 442,
+                  "startLine": 477,
                   "startColumn": 30,
-                  "endLine": 442,
-                  "endColumn": 49,
-                  "byteLength": 19
+                  "endLine": 477,
+                  "endColumn": 57,
+                  "byteLength": 27
                 }
               }
             }
@@ -13156,11 +13800,11 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 432,
+                  "startLine": 467,
                   "startColumn": 25,
-                  "endLine": 432,
-                  "endColumn": 45,
-                  "byteLength": 20
+                  "endLine": 467,
+                  "endColumn": 54,
+                  "byteLength": 29
                 }
               }
             }
@@ -13179,9 +13823,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 438,
+                  "startLine": 473,
                   "startColumn": 20,
-                  "endLine": 438,
+                  "endLine": 473,
                   "endColumn": 35,
                   "byteLength": 15
                 }
@@ -13202,9 +13846,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 439,
+                  "startLine": 474,
                   "startColumn": 23,
-                  "endLine": 439,
+                  "endLine": 474,
                   "endColumn": 61,
                   "byteLength": 38
                 }
@@ -13225,9 +13869,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 446,
+                  "startLine": 482,
                   "startColumn": 26,
-                  "endLine": 446,
+                  "endLine": 482,
                   "endColumn": 42,
                   "byteLength": 16
                 }
@@ -13239,30 +13883,7 @@
           "ruleId": "user-spec",
           "kind": "pass",
           "level": "none",
-          "message": { "text": "assigns clause in function realloc." },
-          "locations": [
-            {
-              "physicalLocation": {
-                "artifactLocation": {
-                  "uri": "libc/stdlib.h",
-                  "uriBaseId": "FRAMAC_SHARE"
-                },
-                "region": {
-                  "startLine": 452,
-                  "startColumn": 12,
-                  "endLine": 452,
-                  "endColumn": 13,
-                  "byteLength": 1
-                }
-              }
-            }
-          ]
-        },
-        {
-          "ruleId": "user-spec",
-          "kind": "pass",
-          "level": "none",
-          "message": { "text": "assigns clause in function realloc." },
+          "message": { "text": "assigns clause in function reallocarray." },
           "locations": [
             {
               "physicalLocation": {
@@ -13271,9 +13892,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 425,
+                  "startLine": 459,
                   "startColumn": 11,
-                  "endLine": 425,
+                  "endLine": 459,
                   "endColumn": 27,
                   "byteLength": 16
                 }
@@ -13285,7 +13906,7 @@
           "ruleId": "user-spec",
           "kind": "pass",
           "level": "none",
-          "message": { "text": "assigns clause in function realloc." },
+          "message": { "text": "assigns clause in function reallocarray." },
           "locations": [
             {
               "physicalLocation": {
@@ -13294,9 +13915,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 452,
+                  "startLine": 488,
                   "startColumn": 12,
-                  "endLine": 452,
+                  "endLine": 488,
                   "endColumn": 13,
                   "byteLength": 1
                 }
@@ -13304,38 +13925,13 @@
             }
           ]
         },
-        {
-          "ruleId": "user-spec",
-          "kind": "pass",
-          "level": "none",
-          "message": {
-            "text": "from clause of term \\result in function realloc."
-          },
-          "locations": [
-            {
-              "physicalLocation": {
-                "artifactLocation": {
-                  "uri": "libc/stdlib.h",
-                  "uriBaseId": "FRAMAC_SHARE"
-                },
-                "region": {
-                  "startLine": 431,
-                  "startColumn": 13,
-                  "endLine": 431,
-                  "endColumn": 20,
-                  "byteLength": 7
-                }
-              }
-            }
-          ]
-        },
         {
           "ruleId": "user-spec",
           "kind": "pass",
           "level": "none",
           "message": {
             "text":
-              "from clause of term __fc_heap_status in function realloc."
+              "from clause of term __fc_heap_status in function reallocarray."
           },
           "locations": [
             {
@@ -13345,9 +13941,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 425,
+                  "startLine": 459,
                   "startColumn": 11,
-                  "endLine": 425,
+                  "endLine": 459,
                   "endColumn": 27,
                   "byteLength": 16
                 }
@@ -13360,7 +13956,7 @@
           "kind": "pass",
           "level": "none",
           "message": {
-            "text": "from clause of term \\result in function realloc."
+            "text": "from clause of term \\result in function reallocarray."
           },
           "locations": [
             {
@@ -13370,9 +13966,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 426,
+                  "startLine": 461,
                   "startColumn": 11,
-                  "endLine": 426,
+                  "endLine": 461,
                   "endColumn": 18,
                   "byteLength": 7
                 }
@@ -13385,7 +13981,7 @@
           "kind": "pass",
           "level": "none",
           "message": {
-            "text": "from clause of term \\result in function realloc."
+            "text": "from clause of term \\result in function reallocarray."
           },
           "locations": [
             {
@@ -13395,9 +13991,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 445,
+                  "startLine": 480,
                   "startColumn": 13,
-                  "endLine": 445,
+                  "endLine": 480,
                   "endColumn": 20,
                   "byteLength": 7
                 }
@@ -13410,7 +14006,7 @@
           "kind": "pass",
           "level": "none",
           "message": {
-            "text": "allocates/frees clause in function realloc."
+            "text": "allocates/frees clause in function reallocarray."
           },
           "locations": [
             {
@@ -13420,9 +14016,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 430,
+                  "startLine": 466,
                   "startColumn": 15,
-                  "endLine": 430,
+                  "endLine": 466,
                   "endColumn": 22,
                   "byteLength": 7
                 }
@@ -13435,7 +14031,7 @@
           "kind": "pass",
           "level": "none",
           "message": {
-            "text": "allocates/frees clause in function realloc."
+            "text": "allocates/frees clause in function reallocarray."
           },
           "locations": [
             {
@@ -13445,9 +14041,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 437,
+                  "startLine": 472,
                   "startColumn": 11,
-                  "endLine": 437,
+                  "endLine": 472,
                   "endColumn": 14,
                   "byteLength": 3
                 }
@@ -13460,7 +14056,7 @@
           "kind": "pass",
           "level": "none",
           "message": {
-            "text": "allocates/frees clause in function realloc."
+            "text": "allocates/frees clause in function reallocarray."
           },
           "locations": [
             {
@@ -13470,9 +14066,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 424,
+                  "startLine": 458,
                   "startColumn": 9,
-                  "endLine": 424,
+                  "endLine": 458,
                   "endColumn": 12,
                   "byteLength": 3
                 }
@@ -13485,7 +14081,7 @@
           "kind": "pass",
           "level": "none",
           "message": {
-            "text": "allocates/frees clause in function realloc."
+            "text": "allocates/frees clause in function reallocarray."
           },
           "locations": [
             {
@@ -13495,9 +14091,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 452,
+                  "startLine": 488,
                   "startColumn": 12,
-                  "endLine": 452,
+                  "endLine": 488,
                   "endColumn": 13,
                   "byteLength": 1
                 }
@@ -13509,7 +14105,7 @@
           "ruleId": "user-spec",
           "kind": "pass",
           "level": "none",
-          "message": { "text": "complete clause in function realloc." },
+          "message": { "text": "complete clause in function reallocarray." },
           "locations": [
             {
               "physicalLocation": {
@@ -13518,9 +14114,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 452,
+                  "startLine": 488,
                   "startColumn": 12,
-                  "endLine": 452,
+                  "endLine": 488,
                   "endColumn": 13,
                   "byteLength": 1
                 }
@@ -13532,7 +14128,7 @@
           "ruleId": "user-spec",
           "kind": "pass",
           "level": "none",
-          "message": { "text": "disjoint clause in function realloc." },
+          "message": { "text": "disjoint clause in function reallocarray." },
           "locations": [
             {
               "physicalLocation": {
@@ -13541,9 +14137,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 452,
+                  "startLine": 488,
                   "startColumn": 12,
-                  "endLine": 452,
+                  "endLine": 488,
                   "endColumn": 13,
                   "byteLength": 1
                 }
@@ -13555,7 +14151,7 @@
           "ruleId": "user-spec",
           "kind": "pass",
           "level": "none",
-          "message": { "text": "disjoint clause in function realloc." },
+          "message": { "text": "disjoint clause in function reallocarray." },
           "locations": [
             {
               "physicalLocation": {
@@ -13564,9 +14160,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 452,
+                  "startLine": 488,
                   "startColumn": 12,
-                  "endLine": 452,
+                  "endLine": 488,
                   "endColumn": 13,
                   "byteLength": 1
                 }
@@ -13779,9 +14375,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 507,
+                  "startLine": 542,
                   "startColumn": 11,
-                  "endLine": 507,
+                  "endLine": 542,
                   "endColumn": 17,
                   "byteLength": 6
                 }
@@ -13802,9 +14398,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 500,
+                  "startLine": 535,
                   "startColumn": 23,
-                  "endLine": 500,
+                  "endLine": 535,
                   "endColumn": 46,
                   "byteLength": 23
                 }
@@ -13825,9 +14421,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 501,
+                  "startLine": 536,
                   "startColumn": 24,
-                  "endLine": 501,
+                  "endLine": 536,
                   "endColumn": 48,
                   "byteLength": 24
                 }
@@ -13848,9 +14444,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 505,
+                  "startLine": 540,
                   "startColumn": 30,
-                  "endLine": 505,
+                  "endLine": 540,
                   "endColumn": 59,
                   "byteLength": 29
                 }
@@ -13871,9 +14467,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 502,
+                  "startLine": 537,
                   "startColumn": 10,
-                  "endLine": 502,
+                  "endLine": 537,
                   "endColumn": 17,
                   "byteLength": 7
                 }
@@ -13896,9 +14492,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 502,
+                  "startLine": 537,
                   "startColumn": 10,
-                  "endLine": 502,
+                  "endLine": 537,
                   "endColumn": 17,
                   "byteLength": 7
                 }
@@ -13921,9 +14517,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 502,
+                  "startLine": 537,
                   "startColumn": 19,
-                  "endLine": 502,
+                  "endLine": 537,
                   "endColumn": 32,
                   "byteLength": 13
                 }
@@ -25342,9 +25938,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 528,
+                  "startLine": 563,
                   "startColumn": 11,
-                  "endLine": 528,
+                  "endLine": 563,
                   "endColumn": 17,
                   "byteLength": 6
                 }
@@ -25365,9 +25961,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 525,
+                  "startLine": 560,
                   "startColumn": 5,
-                  "endLine": 525,
+                  "endLine": 560,
                   "endColumn": 51,
                   "byteLength": 46
                 }
@@ -25388,9 +25984,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 528,
+                  "startLine": 563,
                   "startColumn": 11,
-                  "endLine": 528,
+                  "endLine": 563,
                   "endColumn": 17,
                   "byteLength": 6
                 }
@@ -25413,9 +26009,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 526,
+                  "startLine": 561,
                   "startColumn": 10,
-                  "endLine": 526,
+                  "endLine": 561,
                   "endColumn": 17,
                   "byteLength": 7
                 }
@@ -25436,9 +26032,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 515,
+                  "startLine": 550,
                   "startColumn": 11,
-                  "endLine": 515,
+                  "endLine": 550,
                   "endColumn": 19,
                   "byteLength": 8
                 }
@@ -25459,9 +26055,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 510,
+                  "startLine": 545,
                   "startColumn": 23,
-                  "endLine": 510,
+                  "endLine": 545,
                   "endColumn": 46,
                   "byteLength": 23
                 }
@@ -25482,9 +26078,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 513,
+                  "startLine": 548,
                   "startColumn": 30,
-                  "endLine": 513,
+                  "endLine": 548,
                   "endColumn": 59,
                   "byteLength": 29
                 }
@@ -25505,9 +26101,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 511,
+                  "startLine": 546,
                   "startColumn": 10,
-                  "endLine": 511,
+                  "endLine": 546,
                   "endColumn": 17,
                   "byteLength": 7
                 }
@@ -25530,9 +26126,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 511,
+                  "startLine": 546,
                   "startColumn": 10,
-                  "endLine": 511,
+                  "endLine": 546,
                   "endColumn": 17,
                   "byteLength": 7
                 }
@@ -25556,9 +26152,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 511,
+                  "startLine": 546,
                   "startColumn": 19,
-                  "endLine": 511,
+                  "endLine": 546,
                   "endColumn": 32,
                   "byteLength": 13
                 }
@@ -25579,9 +26175,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 659,
+                  "startLine": 694,
                   "startColumn": 14,
-                  "endLine": 659,
+                  "endLine": 694,
                   "endColumn": 22,
                   "byteLength": 8
                 }
@@ -25602,9 +26198,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 655,
+                  "startLine": 690,
                   "startColumn": 23,
-                  "endLine": 655,
+                  "endLine": 690,
                   "endColumn": 42,
                   "byteLength": 19
                 }
@@ -25625,9 +26221,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 656,
+                  "startLine": 691,
                   "startColumn": 10,
-                  "endLine": 656,
+                  "endLine": 691,
                   "endColumn": 17,
                   "byteLength": 7
                 }
@@ -25650,9 +26246,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 656,
+                  "startLine": 691,
                   "startColumn": 10,
-                  "endLine": 656,
+                  "endLine": 691,
                   "endColumn": 17,
                   "byteLength": 7
                 }
@@ -25676,9 +26272,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 657,
+                  "startLine": 692,
                   "startColumn": 10,
-                  "endLine": 657,
+                  "endLine": 692,
                   "endColumn": 21,
                   "byteLength": 11
                 }
@@ -25699,9 +26295,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 641,
+                  "startLine": 676,
                   "startColumn": 11,
-                  "endLine": 641,
+                  "endLine": 676,
                   "endColumn": 17,
                   "byteLength": 6
                 }
@@ -25722,9 +26318,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 638,
+                  "startLine": 673,
                   "startColumn": 10,
-                  "endLine": 638,
+                  "endLine": 673,
                   "endColumn": 17,
                   "byteLength": 7
                 }
@@ -25747,9 +26343,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 638,
+                  "startLine": 673,
                   "startColumn": 10,
-                  "endLine": 638,
+                  "endLine": 673,
                   "endColumn": 17,
                   "byteLength": 7
                 }
@@ -25772,9 +26368,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 639,
+                  "startLine": 674,
                   "startColumn": 10,
-                  "endLine": 639,
+                  "endLine": 674,
                   "endColumn": 17,
                   "byteLength": 7
                 }
@@ -25798,9 +26394,9 @@
                   "uriBaseId": "FRAMAC_SHARE"
                 },
                 "region": {
-                  "startLine": 639,
+                  "startLine": 674,
                   "startColumn": 19,
-                  "endLine": 639,
+                  "endLine": 674,
                   "endColumn": 36,
                   "byteLength": 17
                 }
diff --git a/src/plugins/value/domains/cvalue/builtins_malloc.ml b/src/plugins/value/domains/cvalue/builtins_malloc.ml
index 33d1cae23d6..e63d26c35de 100644
--- a/src/plugins/value/domains/cvalue/builtins_malloc.ml
+++ b/src/plugins/value/domains/cvalue/builtins_malloc.ml
@@ -817,12 +817,7 @@ let choose_bases_reallocation () =
   | By_stack -> realloc_alloc_copy Weak
   | Imprecise -> realloc_imprecise_weakest
 
-let realloc_builtin state args =
-  let ptr, size =
-    match args with
-    | [ (_, ptr); (_, size) ] -> ptr, size
-    | _ -> raise (Builtins.Invalid_nb_of_args 2)
-  in
+let realloc_builtin_aux state ptr size =
   let bases, card_ok, null = resolve_bases_to_free ptr in
   if card_ok > 0 then
     let realloc = choose_bases_reallocation () in
@@ -839,12 +834,60 @@ let realloc_builtin state args =
     let c_clobbered = Base.SetLattice.bottom in
     Builtins.Full { c_values = []; c_clobbered; c_from = None; }
 
+let realloc_builtin state args =
+  let ptr, size =
+    match args with
+    | [ (_, ptr); (_, size) ] -> ptr, size
+    | _ -> raise (Builtins.Invalid_nb_of_args 2)
+  in
+  realloc_builtin_aux state ptr size
+
 let () =
   let name = "Frama_C_realloc" in
   let replace = "realloc" in
   let typ () = Cil.(voidPtrType, [voidPtrType; theMachine.typeOfSizeOf]) in
   Builtins.register_builtin ~replace name NoCacheCallers realloc_builtin ~typ
 
+let reallocarray_builtin state args =
+  let ptr, nmemb, sizev =
+    match args with
+    | [ (_, ptr); (_, nmemb); (_, sizev) ] -> ptr, nmemb, sizev
+    | _ -> raise (Builtins.Invalid_nb_of_args 3)
+  in
+  let size = Cvalue.V.mul nmemb sizev in
+  let size_ok = alloc_size_ok size in
+  if size_ok <> Alarmset.True then
+    Eva_utils.warning_once_current
+      "reallocarray out of bounds: assert(nmemb * size <= SIZE_MAX)";
+  if size_ok = Alarmset.False (* size always overflows *)
+  then
+    let c_values = [Some Cvalue.V.singleton_zero, state] in
+    let c_clobbered = Base.SetLattice.bottom in
+    Builtins.Full { c_values; c_clobbered; c_from = None; }
+  else
+    let valid_size =
+      Cvalue.V.narrow (Cvalue.V.inject_ival (zero_to_max_bytes ())) size
+    in
+    let res = realloc_builtin_aux state ptr valid_size in
+    if size_ok = Alarmset.Unknown then
+      (* include failure case among possible results *)
+      match res with
+      | Builtins.Full cr ->
+        let c_values = (Some Cvalue.V.singleton_zero, state) :: cr.c_values in
+        Builtins.Full { cr with c_values }
+      | _ -> assert false (* realloc_builtin_aux always returns Full *)
+    else res
+
+let () =
+  let name = "Frama_C_reallocarray" in
+  let replace = "reallocarray" in
+  let typ () =
+    Cil.(voidPtrType,
+         [voidPtrType; theMachine.typeOfSizeOf; theMachine.typeOfSizeOf])
+  in
+  Builtins.register_builtin
+    ~replace name NoCacheCallers reallocarray_builtin ~typ
+
 (* ----------------------------- Leak detection ----------------------------- *)
 
 (* Experimental, not to be released, leak detection built-in. *)
diff --git a/src/plugins/wp/tests/wp_acsl/oracle/terminates_call_options.1.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle/terminates_call_options.1.res.oracle
index c34c3155dc5..917497f430e 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle/terminates_call_options.1.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle/terminates_call_options.1.res.oracle
@@ -11,9 +11,9 @@
   Missing terminates clause for declaration, populates 'terminates \true'
 [wp] terminates_call_options.c:33: Warning: 
   Missing assigns clause (assigns 'everything' instead)
-[wp] FRAMAC_SHARE/libc/stdlib.h:475: Warning: 
+[wp] FRAMAC_SHARE/libc/stdlib.h:510: Warning: 
   Missing terminates clause for exit, populates 'terminates \true'
-[wp] FRAMAC_SHARE/libc/stdlib.h:606: Warning: 
+[wp] FRAMAC_SHARE/libc/stdlib.h:641: Warning: 
   Missing terminates clause for div, populates 'terminates \true'
 ------------------------------------------------------------
   Function call_declaration
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/terminates_call_options.1.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/terminates_call_options.1.res.oracle
index fc71ff0b795..255e0df6d99 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/terminates_call_options.1.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/terminates_call_options.1.res.oracle
@@ -11,9 +11,9 @@
   Missing terminates clause for declaration, populates 'terminates \true'
 [wp] terminates_call_options.c:33: Warning: 
   Missing assigns clause (assigns 'everything' instead)
-[wp] FRAMAC_SHARE/libc/stdlib.h:475: Warning: 
+[wp] FRAMAC_SHARE/libc/stdlib.h:510: Warning: 
   Missing terminates clause for exit, populates 'terminates \true'
-[wp] FRAMAC_SHARE/libc/stdlib.h:606: Warning: 
+[wp] FRAMAC_SHARE/libc/stdlib.h:641: Warning: 
   Missing terminates clause for div, populates 'terminates \true'
 [wp] 5 goals scheduled
 [wp] [Qed] Goal typed_definition_assigns : Valid
diff --git a/tests/builtins/oracle/realloc.res.oracle b/tests/builtins/oracle/realloc.res.oracle
index d92b1ad7dcd..3441c23c27b 100644
--- a/tests/builtins/oracle/realloc.res.oracle
+++ b/tests/builtins/oracle/realloc.res.oracle
@@ -5,7 +5,7 @@
 [eva:initial-state] Values of globals at initialization
   v ∈ [--..--]
 [eva] computing for function main1 <- main.
-  Called from realloc.c:160.
+  Called from realloc.c:177.
 [eva] realloc.c:12: Call to builtin malloc
 [eva] realloc.c:12: allocating variable __malloc_main1_l12
 [eva] realloc.c:15: 
@@ -67,7 +67,7 @@
 [eva] Recording results for main1
 [eva] Done for function main1
 [eva] computing for function main2 <- main.
-  Called from realloc.c:161.
+  Called from realloc.c:178.
 [eva] computing for function Frama_C_interval <- main2 <- main.
   Called from realloc.c:22.
 [eva] using specification for function Frama_C_interval
@@ -114,7 +114,7 @@
 [eva] Recording results for main2
 [eva] Done for function main2
 [eva] computing for function main3 <- main.
-  Called from realloc.c:162.
+  Called from realloc.c:179.
 [eva] realloc.c:32: Call to builtin malloc
 [eva] realloc.c:32: allocating variable __malloc_main3_l32
 [eva] realloc.c:35: Call to builtin malloc
@@ -204,7 +204,7 @@
 [eva] Recording results for main3
 [eva] Done for function main3
 [eva] computing for function main4 <- main.
-  Called from realloc.c:163.
+  Called from realloc.c:180.
 [eva] computing for function Frama_C_interval <- main4 <- main.
   Called from realloc.c:53.
 [eva] realloc.c:53: 
@@ -329,7 +329,7 @@
 [eva] Recording results for main4
 [eva] Done for function main4
 [eva] computing for function main5 <- main.
-  Called from realloc.c:164.
+  Called from realloc.c:181.
 [eva] realloc.c:76: Call to builtin malloc
 [eva] realloc.c:76: allocating variable __malloc_main5_l76
 [eva] computing for function Frama_C_interval <- main5 <- main.
@@ -405,7 +405,7 @@
 [eva] Recording results for main5
 [eva] Done for function main5
 [eva] computing for function main6 <- main.
-  Called from realloc.c:165.
+  Called from realloc.c:182.
 [eva] computing for function Frama_C_interval <- main6 <- main.
   Called from realloc.c:92.
 [eva] realloc.c:92: 
@@ -423,7 +423,7 @@
 [eva] Recording results for main6
 [eva] Done for function main6
 [eva] computing for function main7 <- main.
-  Called from realloc.c:166.
+  Called from realloc.c:183.
 [eva] realloc.c:110: Call to builtin malloc
 [eva] realloc.c:110: allocating variable __malloc_main7_l110
 [eva] realloc.c:115: Call to builtin realloc
@@ -488,7 +488,7 @@
 [eva] Recording results for main7
 [eva] Done for function main7
 [eva] computing for function main8 <- main.
-  Called from realloc.c:167.
+  Called from realloc.c:184.
 [eva] realloc.c:123: Call to builtin malloc
 [eva] realloc.c:123: allocating variable __malloc_main8_l123
 [eva] realloc.c:126: Call to builtin realloc
@@ -525,7 +525,7 @@
 [eva] Recording results for main8
 [eva] Done for function main8
 [eva] computing for function main9 <- main.
-  Called from realloc.c:168.
+  Called from realloc.c:185.
 [eva] realloc.c:132: Call to builtin malloc
 [eva] realloc.c:132: allocating variable __malloc_main9_l132
 [eva] realloc.c:135: Call to builtin realloc
@@ -562,7 +562,7 @@
 [eva] Recording results for main9
 [eva] Done for function main9
 [eva] computing for function main10 <- main.
-  Called from realloc.c:169.
+  Called from realloc.c:186.
 [eva] realloc.c:147: Call to builtin malloc
 [eva] realloc.c:147: allocating variable __malloc_main10_l147
 [eva] realloc.c:152: Call to builtin realloc
@@ -627,6 +627,73 @@
   ==END OF DUMP==
 [eva] Recording results for main10
 [eva] Done for function main10
+[eva] computing for function main11 <- main.
+  Called from realloc.c:187.
+[eva] realloc.c:160: Call to builtin malloc
+[eva] realloc.c:160: allocating variable __malloc_main11_l160
+[eva] realloc.c:165: Call to builtin reallocarray
+[eva] realloc.c:165: 
+  function reallocarray: precondition 'freeable' got status valid.
+[eva:malloc] bases_to_realloc: {__malloc_main11_l160}
+[eva] realloc.c:165: allocating variable __realloc_main11_l165
+[eva:malloc] realloc.c:165: strong free on bases: {__malloc_main11_l160}
+[eva] realloc.c:167: Call to builtin reallocarray
+[eva] realloc.c:167: 
+  function reallocarray: precondition 'freeable' got status valid.
+[eva] realloc.c:167: Warning: 
+  reallocarray out of bounds: assert(nmemb * size <= SIZE_MAX)
+[eva] realloc.c:168: assertion got status valid.
+[eva] computing for function Frama_C_interval <- main11 <- main.
+  Called from realloc.c:169.
+[eva] realloc.c:169: 
+  function Frama_C_interval: precondition 'order' got status valid.
+[eva] Done for function Frama_C_interval
+[eva] realloc.c:171: Call to builtin reallocarray
+[eva] realloc.c:171: 
+  function reallocarray: precondition 'freeable' got status valid.
+[eva] realloc.c:171: Warning: 
+  reallocarray out of bounds: assert(nmemb * size <= SIZE_MAX)
+[eva:malloc] bases_to_realloc: {}
+[eva] realloc.c:171: allocating variable __realloc_main11_l171
+[eva:malloc] realloc.c:171: strong free on bases: {}
+[eva] realloc.c:172: Frama_C_show_each_p: {0}
+[eva] realloc.c:172: Frama_C_show_each_p: {{ &__realloc_main11_l171 }}
+[eva] realloc.c:165: Call to builtin reallocarray
+[eva:malloc] bases_to_realloc: {__realloc_main11_l171}
+[eva:malloc:weak] realloc.c:165: 
+  marking variable `__realloc_main11_l165' as weak
+[eva:malloc] realloc.c:165: strong free on bases: {__realloc_main11_l171}
+[eva] realloc.c:165: Call to builtin reallocarray
+[eva:malloc] bases_to_realloc: {}
+[eva:malloc] realloc.c:165: strong free on bases: {}
+[eva:alarm] realloc.c:166: Warning: 
+  accessing uninitialized left-value. assert \initialized(p);
+[eva] realloc.c:167: Call to builtin reallocarray
+[eva] realloc.c:167: Call to builtin reallocarray
+[eva] computing for function Frama_C_interval <- main11 <- main.
+  Called from realloc.c:169.
+[eva] Done for function Frama_C_interval
+[eva] computing for function Frama_C_interval <- main11 <- main.
+  Called from realloc.c:169.
+[eva] Done for function Frama_C_interval
+[eva] realloc.c:171: Call to builtin reallocarray
+[eva:malloc] bases_to_realloc: {}
+[eva:malloc] realloc.c:171: strong free on bases: {}
+[eva] realloc.c:171: Call to builtin reallocarray
+[eva:malloc] bases_to_realloc: {}
+[eva:malloc] realloc.c:171: strong free on bases: {}
+[eva] realloc.c:172: Frama_C_show_each_p: {0}
+[eva] realloc.c:172: Frama_C_show_each_p: {{ &__realloc_main11_l171 }}
+[eva] realloc.c:172: Frama_C_show_each_p: {0}
+[eva] realloc.c:172: Frama_C_show_each_p: {{ &__realloc_main11_l171 }}
+[eva] realloc.c:165: Call to builtin reallocarray
+[eva:malloc] bases_to_realloc: {__realloc_main11_l171}
+[eva:malloc] realloc.c:165: strong free on bases: {__realloc_main11_l171}
+[eva] realloc.c:165: Call to builtin reallocarray
+[eva:malloc] bases_to_realloc: {}
+[eva:malloc] realloc.c:165: strong free on bases: {}
+[eva] Recording results for main11
+[eva] Done for function main11
 [eva] Recording results for main
 [eva] done for function main
 [eva] ====== VALUES COMPUTED ======
@@ -689,12 +756,23 @@
   __fc_heap_status ∈ [--..--]
   p ∈ ESCAPINGADDR
   q ∈ ESCAPINGADDR
+[eva:final-states] Values at end of function main11:
+  __fc_heap_status ∈ [--..--]
+  Frama_C_entropy_source ∈ [--..--]
+  p ∈ {{ NULL ; &__malloc_main11_l160 ; (int *)&__realloc_main11_l171 }}
+  q ∈ {0} or UNINITIALIZED or ESCAPINGADDR
+  __malloc_main11_l160 ∈ {4}
+  __realloc_w_main11_l165[0] ∈ {4} or UNINITIALIZED
+                         [1] ∈ UNINITIALIZED
 [eva:final-states] Values at end of function main:
   __fc_heap_status ∈ [--..--]
   Frama_C_entropy_source ∈ [--..--]
   __malloc_main10_l147 ∈ {4}
   __realloc_w_main10_l152[0] ∈ {4}
                          [1] ∈ UNINITIALIZED
+  __malloc_main11_l160 ∈ {4}
+  __realloc_w_main11_l165[0] ∈ {4} or UNINITIALIZED
+                         [1] ∈ UNINITIALIZED
 [from] Computing for function main1
 [from] Computing for function malloc <-main1
 [from] Done for function malloc
@@ -723,6 +801,10 @@
 [from] Done for function main8
 [from] Computing for function main9
 [from] Done for function main9
+[from] Computing for function main11
+[from] Computing for function reallocarray <-main11
+[from] Done for function reallocarray
+[from] Done for function main11
 [from] Computing for function main
 [from] Done for function main
 [from] ====== DEPENDENCIES COMPUTED ======
@@ -780,10 +862,21 @@
 [from] Function main9:
   __fc_heap_status FROM __fc_heap_status (and SELF)
   __malloc_main9_l132[0..1] FROM __fc_heap_status
+[from] Function reallocarray:
+  __fc_heap_status FROM __fc_heap_status; nmemb; size (and SELF)
+  \result FROM __fc_heap_status; ptr; nmemb; size
+[from] Function main11:
+  __fc_heap_status FROM __fc_heap_status; Frama_C_entropy_source;
+                        v (and SELF)
+  Frama_C_entropy_source FROM Frama_C_entropy_source; v (and SELF)
+  __malloc_main11_l160 FROM __fc_heap_status
+  __realloc_w_main11_l165[0]
+                         FROM __fc_heap_status; Frama_C_entropy_source; 
+                              v; __realloc_w_main11_l165[0] (and SELF)
 [from] Function main:
   __fc_heap_status FROM __fc_heap_status; Frama_C_entropy_source;
                         v (and SELF)
-  Frama_C_entropy_source FROM Frama_C_entropy_source (and SELF)
+  Frama_C_entropy_source FROM Frama_C_entropy_source; v (and SELF)
   __malloc_main1_l12 FROM __fc_heap_status
   __malloc_main2_l23[0..3]
                     FROM __fc_heap_status; Frama_C_entropy_source (and SELF)
@@ -803,6 +896,10 @@
   __realloc_w_main10_l152[0]
                          FROM __fc_heap_status; Frama_C_entropy_source; 
                               v; __realloc_w_main10_l152[0] (and SELF)
+  __malloc_main11_l160 FROM __fc_heap_status; Frama_C_entropy_source; v
+  __realloc_w_main11_l165[0]
+                         FROM __fc_heap_status; Frama_C_entropy_source; 
+                              v; __realloc_w_main11_l165[0] (and SELF)
 [from] ====== END OF DEPENDENCIES ======
 [inout] Out (internal) for function main1:
     __fc_heap_status; p; pp; q; __malloc_main1_l12
@@ -847,12 +944,19 @@
     __fc_heap_status; p; q; __malloc_main9_l132[0..1]
 [inout] Inputs for function main9:
     __fc_heap_status
+[inout] Out (internal) for function main11:
+    __fc_heap_status; Frama_C_entropy_source; p; q; nmemb;
+    __malloc_main11_l160; __realloc_w_main11_l165[0]
+[inout] Inputs for function main11:
+    __fc_heap_status; Frama_C_entropy_source; v; __realloc_w_main11_l165[0]
 [inout] Out (internal) for function main:
     __fc_heap_status; Frama_C_entropy_source; __malloc_main1_l12;
     __malloc_main2_l23[0..3]; __malloc_main3_l32[0..4];
     __malloc_main3_l35[0..5]; __malloc_main4_l55[0..9];
     __malloc_main4_l56[0..9]; __malloc_main5_l76; __malloc_main7_l110;
     __malloc_main8_l123[0..1]; __malloc_main9_l132[0..1]; __malloc_main10_l147;
-    __realloc_w_main10_l152[0]
+    __realloc_w_main10_l152[0]; __malloc_main11_l160;
+    __realloc_w_main11_l165[0]
 [inout] Inputs for function main:
-    __fc_heap_status; Frama_C_entropy_source; v; __realloc_w_main10_l152[0]
+    __fc_heap_status; Frama_C_entropy_source; v; __realloc_w_main10_l152[0];
+    __realloc_w_main11_l165[0]
diff --git a/tests/builtins/oracle_gauges/realloc.res.oracle b/tests/builtins/oracle_gauges/realloc.res.oracle
index 069f27f2969..05fc14b03b3 100644
--- a/tests/builtins/oracle_gauges/realloc.res.oracle
+++ b/tests/builtins/oracle_gauges/realloc.res.oracle
@@ -336,3 +336,76 @@
 >   __realloc_w_main10_l152[0] ∈ {4}
 >                          [1] ∈ UNINITIALIZED
 >   ==END OF DUMP==
+694a1032,1096
+> [eva] realloc.c:167: Call to builtin reallocarray
+> [eva] realloc.c:167: Call to builtin reallocarray
+> [eva] computing for function Frama_C_interval <- main11 <- main.
+>   Called from realloc.c:169.
+> [eva] Done for function Frama_C_interval
+> [eva] computing for function Frama_C_interval <- main11 <- main.
+>   Called from realloc.c:169.
+> [eva] Done for function Frama_C_interval
+> [eva] realloc.c:171: Call to builtin reallocarray
+> [eva:malloc] bases_to_realloc: {}
+> [eva:malloc] realloc.c:171: strong free on bases: {}
+> [eva] realloc.c:171: Call to builtin reallocarray
+> [eva:malloc] bases_to_realloc: {}
+> [eva:malloc] realloc.c:171: strong free on bases: {}
+> [eva] realloc.c:172: Frama_C_show_each_p: {0}
+> [eva] realloc.c:172: Frama_C_show_each_p: {{ &__realloc_main11_l171 }}
+> [eva] realloc.c:172: Frama_C_show_each_p: {0}
+> [eva] realloc.c:172: Frama_C_show_each_p: {{ &__realloc_main11_l171 }}
+> [eva] realloc.c:165: Call to builtin reallocarray
+> [eva:malloc] bases_to_realloc: {__realloc_main11_l171}
+> [eva:malloc] realloc.c:165: weak free on bases: {__realloc_main11_l171}
+> [eva] realloc.c:167: Call to builtin reallocarray
+> [eva] computing for function Frama_C_interval <- main11 <- main.
+>   Called from realloc.c:169.
+> [eva] Done for function Frama_C_interval
+> [eva] realloc.c:171: Call to builtin reallocarray
+> [eva:malloc] bases_to_realloc: {}
+> [eva:malloc:weak] realloc.c:171: 
+>   marking variable `__realloc_main11_l171' as weak
+> [eva:malloc] realloc.c:171: strong free on bases: {}
+> [eva] realloc.c:172: Frama_C_show_each_p: {{ NULL ; &__realloc_w_main11_l171 }}
+> [eva] realloc.c:163: starting to merge loop iterations
+> [eva] realloc.c:165: Call to builtin reallocarray
+> [eva:malloc] bases_to_realloc: {__realloc_w_main11_l171}
+> [eva:malloc] realloc.c:165: weak free on bases: {__realloc_w_main11_l171}
+> [eva] realloc.c:167: Call to builtin reallocarray
+> [eva] computing for function Frama_C_interval <- main11 <- main.
+>   Called from realloc.c:169.
+> [eva] Done for function Frama_C_interval
+> [eva] realloc.c:171: Call to builtin reallocarray
+> [eva:malloc] bases_to_realloc: {}
+> [eva:malloc] realloc.c:171: strong free on bases: {}
+> [eva] realloc.c:172: Frama_C_show_each_p: {{ NULL ; &__realloc_w_main11_l171 }}
+> [eva] realloc.c:165: Call to builtin reallocarray
+> [eva:malloc] bases_to_realloc: {__realloc_w_main11_l171}
+> [eva:malloc] realloc.c:165: weak free on bases: {__realloc_w_main11_l171}
+> [eva] realloc.c:167: Call to builtin reallocarray
+> [eva] computing for function Frama_C_interval <- main11 <- main.
+>   Called from realloc.c:169.
+> [eva] Done for function Frama_C_interval
+> [eva] realloc.c:171: Call to builtin reallocarray
+> [eva:malloc] bases_to_realloc: {}
+> [eva:malloc] realloc.c:171: strong free on bases: {}
+> [eva] realloc.c:172: Frama_C_show_each_p: {{ NULL ; &__realloc_w_main11_l171 }}
+> [eva] realloc.c:165: Call to builtin reallocarray
+> [eva:malloc] bases_to_realloc: {__realloc_w_main11_l171}
+> [eva:malloc] realloc.c:165: weak free on bases: {__realloc_w_main11_l171}
+> [eva] realloc.c:167: Call to builtin reallocarray
+> [eva] computing for function Frama_C_interval <- main11 <- main.
+>   Called from realloc.c:169.
+> [eva] Done for function Frama_C_interval
+> [eva] realloc.c:171: Call to builtin reallocarray
+> [eva:malloc] bases_to_realloc: {}
+> [eva:malloc] realloc.c:171: strong free on bases: {}
+> [eva] realloc.c:172: Frama_C_show_each_p: {{ NULL ; &__realloc_w_main11_l171 }}
+762,763c1164,1166
+<   p ∈ {{ NULL ; &__malloc_main11_l160 ; (int *)&__realloc_main11_l171 }}
+<   q ∈ {0} or UNINITIALIZED or ESCAPINGADDR
+---
+>   p ∈ {{ NULL ; &__malloc_main11_l160 ; (int *)&__realloc_w_main11_l171 }}
+>   q ∈
+>    {{ NULL ; (int *)&__realloc_w_main11_l171 }} or UNINITIALIZED or ESCAPINGADDR
diff --git a/tests/builtins/realloc.c b/tests/builtins/realloc.c
index bb11b50a7a7..b67d078b18d 100644
--- a/tests/builtins/realloc.c
+++ b/tests/builtins/realloc.c
@@ -1,7 +1,7 @@
 /* run.config*
    STDOPT: +"-eva-slevel 10 -eva-alloc-builtin by_stack -eva-warn-copy-indeterminate @all"
 */
-
+#include <stdint.h>
 #include <stdlib.h>
 #include "__fc_builtin.h"
 
@@ -156,6 +156,23 @@ void main10() {
   }
 }
 
+void main11() {
+  int *p = malloc(sizeof(int));
+  int *q;
+  *p = 4;
+  while (v) {
+    q = p;
+    p = reallocarray(p, 2, sizeof(int));
+    *p = *p; // always succeeds (provided realloc does not return NULL)
+    p = reallocarray(p, SIZE_MAX, sizeof(int)); // always fails
+    //@ assert p == \null;
+    int nmemb = Frama_C_interval(3,10);
+    // succeeds sometimes, fails sometimes
+    p = reallocarray(p, nmemb, SIZE_MAX/6); // always fails
+    Frama_C_show_each_p(p);
+  }
+}
+
 void main() {
   main1();
   main2();
@@ -167,5 +184,5 @@ void main() {
   main8();
   main9();
   main10();
+  main11();
 }
-
diff --git a/tests/libc/oracle/argz_c.res.oracle b/tests/libc/oracle/argz_c.res.oracle
index c423da43955..b3215f8143a 100644
--- a/tests/libc/oracle/argz_c.res.oracle
+++ b/tests/libc/oracle/argz_c.res.oracle
@@ -18,6 +18,7 @@
   \return(calloc) == 0 (auto)
   \return(malloc) == 0 (auto)
   \return(realloc) == 0 (auto)
+  \return(reallocarray) == 0 (auto)
   \return(getenv) == 0 (auto)
   \return(bsearch) == 0 (auto)
   \return(memchr) == 0 (auto)
diff --git a/tests/libc/oracle/coverage.res.oracle b/tests/libc/oracle/coverage.res.oracle
index 8f5441c585c..d09173f9031 100644
--- a/tests/libc/oracle/coverage.res.oracle
+++ b/tests/libc/oracle/coverage.res.oracle
@@ -28,7 +28,7 @@
   main: 4 stmts out of 4 (100.0%)
 [metrics] Eva coverage statistics
   =======================
-  Syntactically reachable functions = 2 (out of 115)
+  Syntactically reachable functions = 2 (out of 116)
   Semantically reached functions = 2
   Coverage estimation = 100.0%
 [metrics] Statements analyzed by Eva
diff --git a/tests/libc/oracle/fc_libc.1.res.oracle b/tests/libc/oracle/fc_libc.1.res.oracle
index a2690ea17ce..db63ecd0f20 100644
--- a/tests/libc/oracle/fc_libc.1.res.oracle
+++ b/tests/libc/oracle/fc_libc.1.res.oracle
@@ -1481,6 +1481,44 @@ extern void free(void *p);
  */
 extern void *realloc(void *ptr, size_t size);
 
+/*@ requires freeable: ptr ≡ \null ∨ \freeable(ptr);
+    assigns __fc_heap_status, \result;
+    assigns __fc_heap_status
+      \from (indirect: nmemb), (indirect: size), __fc_heap_status;
+    assigns \result
+      \from ptr, (indirect: nmemb), (indirect: size),
+            (indirect: __fc_heap_status);
+    frees ptr;
+    allocates \result;
+    
+    behavior allocation:
+      assumes can_allocate: is_allocable(nmemb * size);
+      ensures
+        allocation: \fresh{Old, Here}(\result,\old(nmemb) * \old(size));
+      allocates \result;
+    
+    behavior deallocation:
+      assumes nonnull_ptr: ptr ≢ \null;
+      assumes can_allocate: is_allocable(nmemb * size);
+      ensures freed: \allocable(\old(ptr));
+      ensures freeable: \result ≡ \null ∨ \freeable(\result);
+      frees ptr;
+    
+    behavior fail:
+      assumes cannot_allocate: ¬is_allocable(nmemb * size);
+      ensures null_result: \result ≡ \null;
+      assigns \result;
+      assigns \result
+        \from (indirect: nmemb), (indirect: size),
+              (indirect: __fc_heap_status);
+      allocates \nothing;
+    
+    complete behaviors fail, deallocation, allocation;
+    disjoint behaviors allocation, fail;
+    disjoint behaviors deallocation, fail;
+ */
+extern void *reallocarray(void *ptr, size_t nmemb, size_t size);
+
 /*@ exits status: \exit_status ≢ 0;
     ensures never_terminates: \false;
     
diff --git a/tests/libc/oracle/netdb_c.res.oracle b/tests/libc/oracle/netdb_c.res.oracle
index 7f18a97a720..dd5fb9f0607 100644
--- a/tests/libc/oracle/netdb_c.res.oracle
+++ b/tests/libc/oracle/netdb_c.res.oracle
@@ -13,6 +13,7 @@
   \return(calloc) == 0 (auto)
   \return(malloc) == 0 (auto)
   \return(realloc) == 0 (auto)
+  \return(reallocarray) == 0 (auto)
   \return(getenv) == 0 (auto)
   \return(bsearch) == 0 (auto)
   \return(getcwd) == 0 (auto)
-- 
GitLab