From 742450a6cb00098e32503d90f79c9144e1762686 Mon Sep 17 00:00:00 2001
From: Virgile Prevosto <virgile.prevosto@m4x.org>
Date: Thu, 18 Jun 2020 16:53:17 +0200
Subject: [PATCH] [tests] update oracles

---
 tests/stl/oracle/stl_algorithm.res.oracle            | 12 +++++++++++-
 tests/stl/oracle/stl_functional.res.oracle           | 12 +++++++++++-
 tests/stl/oracle/stl_memory.res.oracle               | 12 +++++++++++-
 tests/stl/oracle/stl_shared_ptr_mistake10.res.oracle | 12 +++++++++++-
 tests/stl/oracle/stl_shared_ptr_mistake5.res.oracle  | 12 +++++++++++-
 tests/stl/oracle/stl_shared_ptr_mistake6.res.oracle  | 12 +++++++++++-
 tests/stl/oracle/stl_system_error.err.oracle         |  2 +-
 tests/stl/oracle/stl_system_error.res.oracle         | 12 +++++++++++-
 tests/stl/oracle/stl_typeinfo.res.oracle             | 12 +++++++++++-
 9 files changed, 89 insertions(+), 9 deletions(-)

diff --git a/tests/stl/oracle/stl_algorithm.res.oracle b/tests/stl/oracle/stl_algorithm.res.oracle
index e9f59a74..22f01d33 100644
--- a/tests/stl/oracle/stl_algorithm.res.oracle
+++ b/tests/stl/oracle/stl_algorithm.res.oracle
@@ -1149,7 +1149,8 @@ int strcoll(char const *s1, char const *s2);
 
 /*@ requires valid_string_s: valid_read_string(s);
     assigns \result;
-    assigns \result \from s, *(s + (0 ..)), c;
+    assigns \result
+      \from s, (indirect: *(s + (0 .. strlen{Old}(s)))), (indirect: c);
     
     behavior found:
       assumes char_found: strchr(s, c) ≢ (0 ≢ 0);
@@ -1173,6 +1174,15 @@ int strcoll(char const *s1, char const *s2);
  */
 char *strchr(char const *s, int c);
 
+/*@ requires valid_string_s: valid_read_string(s);
+    ensures
+      result_same_base: \subset(\result, \old(s) + (0 .. strlen(\old(s))));
+    assigns \result;
+    assigns \result
+      \from s, (indirect: *(s + (0 .. strlen{Old}(s)))), (indirect: c);
+ */
+char *strchrnul(char const *s, int c);
+
 /*@ requires valid_string_s: valid_read_string(s);
     assigns \result;
     assigns \result \from s, *(s + (0 ..)), c;
diff --git a/tests/stl/oracle/stl_functional.res.oracle b/tests/stl/oracle/stl_functional.res.oracle
index 834f4bcf..8abe1c09 100644
--- a/tests/stl/oracle/stl_functional.res.oracle
+++ b/tests/stl/oracle/stl_functional.res.oracle
@@ -878,7 +878,8 @@ int strcoll(char const *s1, char const *s2);
 
 /*@ requires valid_string_s: valid_read_string(s);
     assigns \result;
-    assigns \result \from s, *(s + (0 ..)), c;
+    assigns \result
+      \from s, (indirect: *(s + (0 .. strlen{Old}(s)))), (indirect: c);
     
     behavior found:
       assumes char_found: strchr(s, c) ≢ (0 ≢ 0);
@@ -902,6 +903,15 @@ int strcoll(char const *s1, char const *s2);
  */
 char *strchr(char const *s, int c);
 
+/*@ requires valid_string_s: valid_read_string(s);
+    ensures
+      result_same_base: \subset(\result, \old(s) + (0 .. strlen(\old(s))));
+    assigns \result;
+    assigns \result
+      \from s, (indirect: *(s + (0 .. strlen{Old}(s)))), (indirect: c);
+ */
+char *strchrnul(char const *s, int c);
+
 /*@ requires valid_string_s: valid_read_string(s);
     assigns \result;
     assigns \result \from s, *(s + (0 ..)), c;
diff --git a/tests/stl/oracle/stl_memory.res.oracle b/tests/stl/oracle/stl_memory.res.oracle
index a28010d7..8b5a0ab0 100644
--- a/tests/stl/oracle/stl_memory.res.oracle
+++ b/tests/stl/oracle/stl_memory.res.oracle
@@ -881,7 +881,8 @@ int strcoll(char const *s1, char const *s2);
 
 /*@ requires valid_string_s: valid_read_string(s);
     assigns \result;
-    assigns \result \from s, *(s + (0 ..)), c;
+    assigns \result
+      \from s, (indirect: *(s + (0 .. strlen{Old}(s)))), (indirect: c);
     
     behavior found:
       assumes char_found: strchr(s, c) ≢ (0 ≢ 0);
@@ -905,6 +906,15 @@ int strcoll(char const *s1, char const *s2);
  */
 char *strchr(char const *s, int c);
 
+/*@ requires valid_string_s: valid_read_string(s);
+    ensures
+      result_same_base: \subset(\result, \old(s) + (0 .. strlen(\old(s))));
+    assigns \result;
+    assigns \result
+      \from s, (indirect: *(s + (0 .. strlen{Old}(s)))), (indirect: c);
+ */
+char *strchrnul(char const *s, int c);
+
 /*@ requires valid_string_s: valid_read_string(s);
     assigns \result;
     assigns \result \from s, *(s + (0 ..)), c;
diff --git a/tests/stl/oracle/stl_shared_ptr_mistake10.res.oracle b/tests/stl/oracle/stl_shared_ptr_mistake10.res.oracle
index d44adcde..f02c0bd0 100644
--- a/tests/stl/oracle/stl_shared_ptr_mistake10.res.oracle
+++ b/tests/stl/oracle/stl_shared_ptr_mistake10.res.oracle
@@ -878,7 +878,8 @@ int strcoll(char const *s1, char const *s2);
 
 /*@ requires valid_string_s: valid_read_string(s);
     assigns \result;
-    assigns \result \from s, *(s + (0 ..)), c;
+    assigns \result
+      \from s, (indirect: *(s + (0 .. strlen{Old}(s)))), (indirect: c);
     
     behavior found:
       assumes char_found: strchr(s, c) ≢ (0 ≢ 0);
@@ -902,6 +903,15 @@ int strcoll(char const *s1, char const *s2);
  */
 char *strchr(char const *s, int c);
 
+/*@ requires valid_string_s: valid_read_string(s);
+    ensures
+      result_same_base: \subset(\result, \old(s) + (0 .. strlen(\old(s))));
+    assigns \result;
+    assigns \result
+      \from s, (indirect: *(s + (0 .. strlen{Old}(s)))), (indirect: c);
+ */
+char *strchrnul(char const *s, int c);
+
 /*@ requires valid_string_s: valid_read_string(s);
     assigns \result;
     assigns \result \from s, *(s + (0 ..)), c;
diff --git a/tests/stl/oracle/stl_shared_ptr_mistake5.res.oracle b/tests/stl/oracle/stl_shared_ptr_mistake5.res.oracle
index e979a9ec..f1e95a07 100644
--- a/tests/stl/oracle/stl_shared_ptr_mistake5.res.oracle
+++ b/tests/stl/oracle/stl_shared_ptr_mistake5.res.oracle
@@ -859,7 +859,8 @@ int strcoll(char const *s1, char const *s2);
 
 /*@ requires valid_string_s: valid_read_string(s);
     assigns \result;
-    assigns \result \from s, *(s + (0 ..)), c;
+    assigns \result
+      \from s, (indirect: *(s + (0 .. strlen{Old}(s)))), (indirect: c);
     
     behavior found:
       assumes char_found: strchr(s, c) ≢ (0 ≢ 0);
@@ -883,6 +884,15 @@ int strcoll(char const *s1, char const *s2);
  */
 char *strchr(char const *s, int c);
 
+/*@ requires valid_string_s: valid_read_string(s);
+    ensures
+      result_same_base: \subset(\result, \old(s) + (0 .. strlen(\old(s))));
+    assigns \result;
+    assigns \result
+      \from s, (indirect: *(s + (0 .. strlen{Old}(s)))), (indirect: c);
+ */
+char *strchrnul(char const *s, int c);
+
 /*@ requires valid_string_s: valid_read_string(s);
     assigns \result;
     assigns \result \from s, *(s + (0 ..)), c;
diff --git a/tests/stl/oracle/stl_shared_ptr_mistake6.res.oracle b/tests/stl/oracle/stl_shared_ptr_mistake6.res.oracle
index b3e59ee2..0e7e54f8 100644
--- a/tests/stl/oracle/stl_shared_ptr_mistake6.res.oracle
+++ b/tests/stl/oracle/stl_shared_ptr_mistake6.res.oracle
@@ -860,7 +860,8 @@ int strcoll(char const *s1, char const *s2);
 
 /*@ requires valid_string_s: valid_read_string(s);
     assigns \result;
-    assigns \result \from s, *(s + (0 ..)), c;
+    assigns \result
+      \from s, (indirect: *(s + (0 .. strlen{Old}(s)))), (indirect: c);
     
     behavior found:
       assumes char_found: strchr(s, c) ≢ (0 ≢ 0);
@@ -884,6 +885,15 @@ int strcoll(char const *s1, char const *s2);
  */
 char *strchr(char const *s, int c);
 
+/*@ requires valid_string_s: valid_read_string(s);
+    ensures
+      result_same_base: \subset(\result, \old(s) + (0 .. strlen(\old(s))));
+    assigns \result;
+    assigns \result
+      \from s, (indirect: *(s + (0 .. strlen{Old}(s)))), (indirect: c);
+ */
+char *strchrnul(char const *s, int c);
+
 /*@ requires valid_string_s: valid_read_string(s);
     assigns \result;
     assigns \result \from s, *(s + (0 ..)), c;
diff --git a/tests/stl/oracle/stl_system_error.err.oracle b/tests/stl/oracle/stl_system_error.err.oracle
index 9712de6c..d8af1fa6 100644
--- a/tests/stl/oracle/stl_system_error.err.oracle
+++ b/tests/stl/oracle/stl_system_error.err.oracle
@@ -1,4 +1,4 @@
-FRAMAC_SHARE/libc/signal.h:223:28: Expecting ';' after requires clause
+FRAMAC_SHARE/libc/signal.h:227:28: Expecting ';' after requires clause
 FRAMAC_SHARE/libc/wchar.h:55:5: No suitable candidate found for function valid_read_or_empty.
 FRAMAC_SHARE/libc/wchar.h:69:74: No suitable candidate found for function valid_read_or_empty.
 FRAMAC_SHARE/libc/wchar.h:80:73: No suitable candidate found for function valid_or_empty.
diff --git a/tests/stl/oracle/stl_system_error.res.oracle b/tests/stl/oracle/stl_system_error.res.oracle
index b2169e75..94668511 100644
--- a/tests/stl/oracle/stl_system_error.res.oracle
+++ b/tests/stl/oracle/stl_system_error.res.oracle
@@ -734,7 +734,8 @@ int strcoll(char const *s1, char const *s2);
 
 /*@ requires valid_string_s: valid_read_string(s);
     assigns \result;
-    assigns \result \from s, *(s + (0 ..)), c;
+    assigns \result
+      \from s, (indirect: *(s + (0 .. strlen{Old}(s)))), (indirect: c);
     
     behavior found:
       assumes char_found: strchr(s, c) ≢ (0 ≢ 0);
@@ -758,6 +759,15 @@ int strcoll(char const *s1, char const *s2);
  */
 char *strchr(char const *s, int c);
 
+/*@ requires valid_string_s: valid_read_string(s);
+    ensures
+      result_same_base: \subset(\result, \old(s) + (0 .. strlen(\old(s))));
+    assigns \result;
+    assigns \result
+      \from s, (indirect: *(s + (0 .. strlen{Old}(s)))), (indirect: c);
+ */
+char *strchrnul(char const *s, int c);
+
 /*@ requires valid_string_s: valid_read_string(s);
     assigns \result;
     assigns \result \from s, *(s + (0 ..)), c;
diff --git a/tests/stl/oracle/stl_typeinfo.res.oracle b/tests/stl/oracle/stl_typeinfo.res.oracle
index a5b1a5d1..1b39f2c2 100644
--- a/tests/stl/oracle/stl_typeinfo.res.oracle
+++ b/tests/stl/oracle/stl_typeinfo.res.oracle
@@ -569,7 +569,8 @@ int strcoll(char const *s1, char const *s2);
 
 /*@ requires valid_string_s: valid_read_string(s);
     assigns \result;
-    assigns \result \from s, *(s + (0 ..)), c;
+    assigns \result
+      \from s, (indirect: *(s + (0 .. strlen{Old}(s)))), (indirect: c);
     
     behavior found:
       assumes char_found: strchr(s, c) ≢ (0 ≢ 0);
@@ -593,6 +594,15 @@ int strcoll(char const *s1, char const *s2);
  */
 char *strchr(char const *s, int c);
 
+/*@ requires valid_string_s: valid_read_string(s);
+    ensures
+      result_same_base: \subset(\result, \old(s) + (0 .. strlen(\old(s))));
+    assigns \result;
+    assigns \result
+      \from s, (indirect: *(s + (0 .. strlen{Old}(s)))), (indirect: c);
+ */
+char *strchrnul(char const *s, int c);
+
 /*@ requires valid_string_s: valid_read_string(s);
     assigns \result;
     assigns \result \from s, *(s + (0 ..)), c;
-- 
GitLab