From f93dc3a8d82e8c1c5e12d6525d7a20c2bbfde127 Mon Sep 17 00:00:00 2001
From: Andre Maroneze <andre.oliveiramaroneze@cea.fr>
Date: Fri, 30 Aug 2019 17:58:44 +0200
Subject: [PATCH] [Libc] add specs for ftello/fseeko

---
 share/libc/stdio.h                            |  19 ++-
 .../tests/arith/oracle_ci/gen_functions.c     |  10 +-
 .../tests/gmp-only/oracle_ci/gen_functions.c  |  10 +-
 .../tests/erroneous/oracle/printf.res.oracle  |   2 +-
 .../tests/known/oracle/printf.res.oracle      |   2 +-
 .../oracle/printf_garbled_mix.res.oracle      |   2 +-
 .../oracle/printf_wrong_arity.res.oracle      |   2 +-
 .../oracle/printf_wrong_pointers.res.oracle   |   2 +-
 .../oracle/printf_wrong_types.res.oracle      |   4 +-
 .../tests/known/oracle/scanf.res.oracle       |   2 +-
 .../tests/known/oracle/scanf_loop.res.oracle  |   2 +-
 .../tests/known/oracle/scanf_wrong.res.oracle |   2 +-
 .../tests/known/oracle/snprintf.res.oracle    |   2 +-
 .../tests/known/oracle/stdio_print.res.oracle |   2 +-
 .../tests/known/oracle/stdio_scan.res.oracle  |   2 +-
 .../tests/known/oracle/swprintf.res.oracle    |   2 +-
 .../tests/known/oracle/wchar.res.oracle       |   2 +-
 tests/idct/oracle/ieee_1180_1990.res.oracle   | 134 ++++++++++++------
 tests/libc/oracle/fc_libc.0.res.oracle        |  10 +-
 tests/libc/oracle/fc_libc.1.res.oracle        |  22 +++
 tests/libc/oracle/stdio_h.res.oracle          |  56 +++++---
 tests/libc/stdio_h.c                          |   3 +
 tests/metrics/oracle/libc.1.res.oracle        |  34 ++---
 tests/rte/oracle/value_rte.res.oracle         | 116 +++++++++------
 24 files changed, 293 insertions(+), 151 deletions(-)

diff --git a/share/libc/stdio.h b/share/libc/stdio.h
index c0dd5448ba9..c3fa3488a76 100644
--- a/share/libc/stdio.h
+++ b/share/libc/stdio.h
@@ -389,6 +389,15 @@ extern int fgetpos(FILE * restrict stream,
 */
 extern int fseek(FILE *stream, long int offset, int whence);
 
+/*@
+  requires valid_stream: \valid(stream);
+  requires whence_enum: whence == SEEK_SET || whence == SEEK_CUR || whence == SEEK_END;
+  assigns *stream \from *stream, indirect:offset, indirect:whence;
+  assigns \result, __fc_errno \from indirect:*stream, indirect:offset,
+                                    indirect:whence;
+*/
+extern int fseeko(FILE *stream, off_t offset, int whence);
+
 /*@
   requires valid_stream: \valid(stream);
   requires valid_pos: \valid_read(pos);
@@ -397,7 +406,7 @@ extern int fseek(FILE *stream, long int offset, int whence);
 */
 extern int fsetpos(FILE *stream, const fpos_t *pos);
 
-/*@
+/*@ // missing: assigns errno: EBADF, EOVERFLOW, ESPIPE
   requires valid_stream: \valid(stream);
   assigns \result, __fc_errno \from indirect:*stream ;
   ensures success_or_error:
@@ -405,6 +414,14 @@ extern int fsetpos(FILE *stream, const fpos_t *pos);
 */
 extern long int ftell(FILE *stream);
 
+/*@ // missing: assigns errno: EBADF, EOVERFLOW, ESPIPE
+  requires valid_stream: \valid(stream);
+  assigns \result, __fc_errno \from indirect:*stream ;
+  ensures success_or_error:
+    \result == -1 || (\result >= 0 && __fc_errno == \old(__fc_errno));
+*/
+extern off_t ftello(FILE *stream);
+
 /*@
   requires valid_stream: \valid(stream);
   assigns *stream \from \nothing;
diff --git a/src/plugins/e-acsl/tests/arith/oracle_ci/gen_functions.c b/src/plugins/e-acsl/tests/arith/oracle_ci/gen_functions.c
index 457ff5d2aa2..42381d641e8 100644
--- a/src/plugins/e-acsl/tests/arith/oracle_ci/gen_functions.c
+++ b/src/plugins/e-acsl/tests/arith/oracle_ci/gen_functions.c
@@ -232,6 +232,11 @@ void __gen_e_acsl_k(int x)
   return;
 }
 
+int __gen_e_acsl_h_short(int s)
+{
+  return s;
+}
+
 int __gen_e_acsl_g_hidden(int x)
 {
   return x;
@@ -379,9 +384,4 @@ int __gen_e_acsl_h_char(int c)
   return c;
 }
 
-int __gen_e_acsl_h_short(int s)
-{
-  return s;
-}
-
 
diff --git a/src/plugins/e-acsl/tests/gmp-only/oracle_ci/gen_functions.c b/src/plugins/e-acsl/tests/gmp-only/oracle_ci/gen_functions.c
index f7f9708c3cc..2bdf4cd9f28 100644
--- a/src/plugins/e-acsl/tests/gmp-only/oracle_ci/gen_functions.c
+++ b/src/plugins/e-acsl/tests/gmp-only/oracle_ci/gen_functions.c
@@ -277,6 +277,11 @@ void __gen_e_acsl_k(int x)
   return;
 }
 
+int __gen_e_acsl_h_short(int s)
+{
+  return s;
+}
+
 int __gen_e_acsl_g_hidden(int x)
 {
   return x;
@@ -472,9 +477,4 @@ int __gen_e_acsl_h_char(int c)
   return c;
 }
 
-int __gen_e_acsl_h_short(int s)
-{
-  return s;
-}
-
 
diff --git a/src/plugins/variadic/tests/erroneous/oracle/printf.res.oracle b/src/plugins/variadic/tests/erroneous/oracle/printf.res.oracle
index ebb217fac02..bf32832912e 100644
--- a/src/plugins/variadic/tests/erroneous/oracle/printf.res.oracle
+++ b/src/plugins/variadic/tests/erroneous/oracle/printf.res.oracle
@@ -12,7 +12,7 @@
   Declaration of variadic function sprintf.
 [variadic] FRAMAC_SHARE/libc/stdio.h:217: 
   Declaration of variadic function sscanf.
-[variadic] FRAMAC_SHARE/libc/stdio.h:521: 
+[variadic] FRAMAC_SHARE/libc/stdio.h:538: 
   Declaration of variadic function dprintf.
 [variadic] tests/erroneous/printf.c:8: Warning: Multiple usage of flag '-'.
 [variadic] tests/erroneous/printf.c:8: Warning: 
diff --git a/src/plugins/variadic/tests/known/oracle/printf.res.oracle b/src/plugins/variadic/tests/known/oracle/printf.res.oracle
index f04b44a2b44..d7102dda0aa 100644
--- a/src/plugins/variadic/tests/known/oracle/printf.res.oracle
+++ b/src/plugins/variadic/tests/known/oracle/printf.res.oracle
@@ -24,7 +24,7 @@
   Declaration of variadic function sprintf.
 [variadic] FRAMAC_SHARE/libc/stdio.h:217: 
   Declaration of variadic function sscanf.
-[variadic] FRAMAC_SHARE/libc/stdio.h:521: 
+[variadic] FRAMAC_SHARE/libc/stdio.h:538: 
   Declaration of variadic function dprintf.
 [variadic] tests/known/printf.c:37: 
   Translating call to printf to a call to the specialized version printf_va_1.
diff --git a/src/plugins/variadic/tests/known/oracle/printf_garbled_mix.res.oracle b/src/plugins/variadic/tests/known/oracle/printf_garbled_mix.res.oracle
index 545c7824113..e7591173023 100644
--- a/src/plugins/variadic/tests/known/oracle/printf_garbled_mix.res.oracle
+++ b/src/plugins/variadic/tests/known/oracle/printf_garbled_mix.res.oracle
@@ -12,7 +12,7 @@
   Declaration of variadic function sprintf.
 [variadic] FRAMAC_SHARE/libc/stdio.h:217: 
   Declaration of variadic function sscanf.
-[variadic] FRAMAC_SHARE/libc/stdio.h:521: 
+[variadic] FRAMAC_SHARE/libc/stdio.h:538: 
   Declaration of variadic function dprintf.
 [variadic] tests/known/printf_garbled_mix.c:8: 
   Variadic builtin Frama_C_show_each_nb_printed left untransformed.
diff --git a/src/plugins/variadic/tests/known/oracle/printf_wrong_arity.res.oracle b/src/plugins/variadic/tests/known/oracle/printf_wrong_arity.res.oracle
index d7f8115fec3..4ee27be4661 100644
--- a/src/plugins/variadic/tests/known/oracle/printf_wrong_arity.res.oracle
+++ b/src/plugins/variadic/tests/known/oracle/printf_wrong_arity.res.oracle
@@ -12,7 +12,7 @@
   Declaration of variadic function sprintf.
 [variadic] FRAMAC_SHARE/libc/stdio.h:217: 
   Declaration of variadic function sscanf.
-[variadic] FRAMAC_SHARE/libc/stdio.h:521: 
+[variadic] FRAMAC_SHARE/libc/stdio.h:538: 
   Declaration of variadic function dprintf.
 [variadic] tests/known/printf_wrong_arity.c:8: 
   Translating call to printf to a call to the specialized version printf_va_1.
diff --git a/src/plugins/variadic/tests/known/oracle/printf_wrong_pointers.res.oracle b/src/plugins/variadic/tests/known/oracle/printf_wrong_pointers.res.oracle
index 48af02448ee..2c72bbbab04 100644
--- a/src/plugins/variadic/tests/known/oracle/printf_wrong_pointers.res.oracle
+++ b/src/plugins/variadic/tests/known/oracle/printf_wrong_pointers.res.oracle
@@ -12,7 +12,7 @@
   Declaration of variadic function sprintf.
 [variadic] FRAMAC_SHARE/libc/stdio.h:217: 
   Declaration of variadic function sscanf.
-[variadic] FRAMAC_SHARE/libc/stdio.h:521: 
+[variadic] FRAMAC_SHARE/libc/stdio.h:538: 
   Declaration of variadic function dprintf.
 [variadic] tests/known/printf_wrong_pointers.c:14: 
   Translating call to printf to a call to the specialized version printf_va_1.
diff --git a/src/plugins/variadic/tests/known/oracle/printf_wrong_types.res.oracle b/src/plugins/variadic/tests/known/oracle/printf_wrong_types.res.oracle
index b720645e934..5d41306e7d7 100644
--- a/src/plugins/variadic/tests/known/oracle/printf_wrong_types.res.oracle
+++ b/src/plugins/variadic/tests/known/oracle/printf_wrong_types.res.oracle
@@ -12,7 +12,7 @@
   Declaration of variadic function sprintf.
 [variadic] FRAMAC_SHARE/libc/stdio.h:217: 
   Declaration of variadic function sscanf.
-[variadic] FRAMAC_SHARE/libc/stdio.h:521: 
+[variadic] FRAMAC_SHARE/libc/stdio.h:538: 
   Declaration of variadic function dprintf.
 [variadic] tests/known/printf_wrong_types.c:18: 
   Translating call to printf to a call to the specialized version printf_va_1.
@@ -424,7 +424,7 @@ int main(void)
   Declaration of variadic function sprintf.
 [variadic] FRAMAC_SHARE/libc/stdio.h:217: 
   Declaration of variadic function sscanf.
-[variadic] FRAMAC_SHARE/libc/stdio.h:521: 
+[variadic] FRAMAC_SHARE/libc/stdio.h:538: 
   Declaration of variadic function dprintf.
 [variadic] tests/known/printf_wrong_types.c:18: 
   Translating call to printf to a call to the specialized version printf_va_1.
diff --git a/src/plugins/variadic/tests/known/oracle/scanf.res.oracle b/src/plugins/variadic/tests/known/oracle/scanf.res.oracle
index cd8ae9652f3..bf4a9d81548 100644
--- a/src/plugins/variadic/tests/known/oracle/scanf.res.oracle
+++ b/src/plugins/variadic/tests/known/oracle/scanf.res.oracle
@@ -12,7 +12,7 @@
   Declaration of variadic function sprintf.
 [variadic] FRAMAC_SHARE/libc/stdio.h:217: 
   Declaration of variadic function sscanf.
-[variadic] FRAMAC_SHARE/libc/stdio.h:521: 
+[variadic] FRAMAC_SHARE/libc/stdio.h:538: 
   Declaration of variadic function dprintf.
 [variadic] tests/known/scanf.c:7: 
   Translating call to scanf to a call to the specialized version scanf_va_1.
diff --git a/src/plugins/variadic/tests/known/oracle/scanf_loop.res.oracle b/src/plugins/variadic/tests/known/oracle/scanf_loop.res.oracle
index db959e60948..e563ba2f274 100644
--- a/src/plugins/variadic/tests/known/oracle/scanf_loop.res.oracle
+++ b/src/plugins/variadic/tests/known/oracle/scanf_loop.res.oracle
@@ -12,7 +12,7 @@
   Declaration of variadic function sprintf.
 [variadic] FRAMAC_SHARE/libc/stdio.h:217: 
   Declaration of variadic function sscanf.
-[variadic] FRAMAC_SHARE/libc/stdio.h:521: 
+[variadic] FRAMAC_SHARE/libc/stdio.h:538: 
   Declaration of variadic function dprintf.
 [variadic] tests/known/scanf_loop.c:6: 
   Translating call to scanf to a call to the specialized version scanf_va_1.
diff --git a/src/plugins/variadic/tests/known/oracle/scanf_wrong.res.oracle b/src/plugins/variadic/tests/known/oracle/scanf_wrong.res.oracle
index b468aea8aca..704b3de7532 100644
--- a/src/plugins/variadic/tests/known/oracle/scanf_wrong.res.oracle
+++ b/src/plugins/variadic/tests/known/oracle/scanf_wrong.res.oracle
@@ -12,7 +12,7 @@
   Declaration of variadic function sprintf.
 [variadic] FRAMAC_SHARE/libc/stdio.h:217: 
   Declaration of variadic function sscanf.
-[variadic] FRAMAC_SHARE/libc/stdio.h:521: 
+[variadic] FRAMAC_SHARE/libc/stdio.h:538: 
   Declaration of variadic function dprintf.
 [variadic] tests/known/scanf_wrong.c:8: 
   Translating call to scanf to a call to the specialized version scanf_va_1.
diff --git a/src/plugins/variadic/tests/known/oracle/snprintf.res.oracle b/src/plugins/variadic/tests/known/oracle/snprintf.res.oracle
index 2b2dd3e7684..cecc5cc5431 100644
--- a/src/plugins/variadic/tests/known/oracle/snprintf.res.oracle
+++ b/src/plugins/variadic/tests/known/oracle/snprintf.res.oracle
@@ -12,7 +12,7 @@
   Declaration of variadic function sprintf.
 [variadic] FRAMAC_SHARE/libc/stdio.h:217: 
   Declaration of variadic function sscanf.
-[variadic] FRAMAC_SHARE/libc/stdio.h:521: 
+[variadic] FRAMAC_SHARE/libc/stdio.h:538: 
   Declaration of variadic function dprintf.
 [variadic] tests/known/snprintf.c:12: 
   Translating call to snprintf to a call to the specialized version snprintf_va_1.
diff --git a/src/plugins/variadic/tests/known/oracle/stdio_print.res.oracle b/src/plugins/variadic/tests/known/oracle/stdio_print.res.oracle
index 0cacefc0330..cc3c40be6d6 100644
--- a/src/plugins/variadic/tests/known/oracle/stdio_print.res.oracle
+++ b/src/plugins/variadic/tests/known/oracle/stdio_print.res.oracle
@@ -12,7 +12,7 @@
   Declaration of variadic function sprintf.
 [variadic] FRAMAC_SHARE/libc/stdio.h:217: 
   Declaration of variadic function sscanf.
-[variadic] FRAMAC_SHARE/libc/stdio.h:521: 
+[variadic] FRAMAC_SHARE/libc/stdio.h:538: 
   Declaration of variadic function dprintf.
 [variadic] tests/known/stdio_print.c:9: Warning: 
   Call to function fprintf with non-static format argument:
diff --git a/src/plugins/variadic/tests/known/oracle/stdio_scan.res.oracle b/src/plugins/variadic/tests/known/oracle/stdio_scan.res.oracle
index 671f5bf3f35..f157c9d36bf 100644
--- a/src/plugins/variadic/tests/known/oracle/stdio_scan.res.oracle
+++ b/src/plugins/variadic/tests/known/oracle/stdio_scan.res.oracle
@@ -12,7 +12,7 @@
   Declaration of variadic function sprintf.
 [variadic] FRAMAC_SHARE/libc/stdio.h:217: 
   Declaration of variadic function sscanf.
-[variadic] FRAMAC_SHARE/libc/stdio.h:521: 
+[variadic] FRAMAC_SHARE/libc/stdio.h:538: 
   Declaration of variadic function dprintf.
 [variadic] tests/known/stdio_scan.c:10: Warning: 
   Call to function fscanf with non-static format argument:
diff --git a/src/plugins/variadic/tests/known/oracle/swprintf.res.oracle b/src/plugins/variadic/tests/known/oracle/swprintf.res.oracle
index 79025ff0d26..585983473b2 100644
--- a/src/plugins/variadic/tests/known/oracle/swprintf.res.oracle
+++ b/src/plugins/variadic/tests/known/oracle/swprintf.res.oracle
@@ -24,7 +24,7 @@
   Declaration of variadic function sprintf.
 [variadic] FRAMAC_SHARE/libc/stdio.h:217: 
   Declaration of variadic function sscanf.
-[variadic] FRAMAC_SHARE/libc/stdio.h:521: 
+[variadic] FRAMAC_SHARE/libc/stdio.h:538: 
   Declaration of variadic function dprintf.
 [variadic] tests/known/swprintf.c:12: 
   Translating call to swprintf to a call to the specialized version swprintf_va_1.
diff --git a/src/plugins/variadic/tests/known/oracle/wchar.res.oracle b/src/plugins/variadic/tests/known/oracle/wchar.res.oracle
index 0e93065e23f..b85bb1c1d06 100644
--- a/src/plugins/variadic/tests/known/oracle/wchar.res.oracle
+++ b/src/plugins/variadic/tests/known/oracle/wchar.res.oracle
@@ -24,7 +24,7 @@
   Declaration of variadic function sprintf.
 [variadic] FRAMAC_SHARE/libc/stdio.h:217: 
   Declaration of variadic function sscanf.
-[variadic] FRAMAC_SHARE/libc/stdio.h:521: 
+[variadic] FRAMAC_SHARE/libc/stdio.h:538: 
   Declaration of variadic function dprintf.
 [variadic] tests/known/wchar.c:11: 
   Translating call to wprintf to a call to the specialized version wprintf_va_1.
diff --git a/tests/idct/oracle/ieee_1180_1990.res.oracle b/tests/idct/oracle/ieee_1180_1990.res.oracle
index 73d8292ef2d..6019d52b697 100644
--- a/tests/idct/oracle/ieee_1180_1990.res.oracle
+++ b/tests/idct/oracle/ieee_1180_1990.res.oracle
@@ -1938,14 +1938,39 @@
             default behavior
             by Frama-C kernel.
 
+--------------------------------------------------------------------------------
+--- Properties of Function 'fseeko'
+--------------------------------------------------------------------------------
+
+[ Extern  ] Assigns (file share/libc/stdio.h, line 395)
+            assigns *stream, \result, __fc_errno;
+            Unverifiable but considered Valid.
+[ Extern  ] Froms (file share/libc/stdio.h, line 395)
+            assigns *stream
+              \from *stream, (indirect: offset), (indirect: whence);
+            Unverifiable but considered Valid.
+[ Extern  ] Froms (file share/libc/stdio.h, line 396)
+            assigns \result
+              \from (indirect: *stream), (indirect: offset),
+                    (indirect: whence);
+            Unverifiable but considered Valid.
+[ Extern  ] Froms (file share/libc/stdio.h, line 396)
+            assigns __fc_errno
+              \from (indirect: *stream), (indirect: offset),
+                    (indirect: whence);
+            Unverifiable but considered Valid.
+[  Valid  ] Default behavior
+            default behavior
+            by Frama-C kernel.
+
 --------------------------------------------------------------------------------
 --- Properties of Function 'fsetpos'
 --------------------------------------------------------------------------------
 
-[ Extern  ] Assigns (file share/libc/stdio.h, line 396)
+[ Extern  ] Assigns (file share/libc/stdio.h, line 405)
             assigns *stream;
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 396)
+[ Extern  ] Froms (file share/libc/stdio.h, line 405)
             assigns *stream \from *pos;
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
@@ -1962,13 +1987,36 @@
               \result ≡ -1 ∨
               (\result ≥ 0 ∧ __fc_errno ≡ \old(__fc_errno))
             Unverifiable but considered Valid.
-[ Extern  ] Assigns (file share/libc/stdio.h, line 402)
+[ Extern  ] Assigns (file share/libc/stdio.h, line 411)
             assigns \result, __fc_errno;
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 402)
+[ Extern  ] Froms (file share/libc/stdio.h, line 411)
             assigns \result \from (indirect: *stream);
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 402)
+[ Extern  ] Froms (file share/libc/stdio.h, line 411)
+            assigns __fc_errno \from (indirect: *stream);
+            Unverifiable but considered Valid.
+[  Valid  ] Default behavior
+            default behavior
+            by Frama-C kernel.
+
+--------------------------------------------------------------------------------
+--- Properties of Function 'ftello'
+--------------------------------------------------------------------------------
+
+[ Extern  ] Post-condition 'success_or_error'
+            ensures
+            success_or_error:
+              \result ≡ -1 ∨
+              (\result ≥ 0 ∧ __fc_errno ≡ \old(__fc_errno))
+            Unverifiable but considered Valid.
+[ Extern  ] Assigns (file share/libc/stdio.h, line 419)
+            assigns \result, __fc_errno;
+            Unverifiable but considered Valid.
+[ Extern  ] Froms (file share/libc/stdio.h, line 419)
+            assigns \result \from (indirect: *stream);
+            Unverifiable but considered Valid.
+[ Extern  ] Froms (file share/libc/stdio.h, line 419)
             assigns __fc_errno \from (indirect: *stream);
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
@@ -1979,10 +2027,10 @@
 --- Properties of Function 'rewind'
 --------------------------------------------------------------------------------
 
-[ Extern  ] Assigns (file share/libc/stdio.h, line 410)
+[ Extern  ] Assigns (file share/libc/stdio.h, line 427)
             assigns *stream;
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 410)
+[ Extern  ] Froms (file share/libc/stdio.h, line 427)
             assigns *stream \from \nothing;
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
@@ -1993,10 +2041,10 @@
 --- Properties of Function 'clearerr'
 --------------------------------------------------------------------------------
 
-[ Extern  ] Assigns (file share/libc/stdio.h, line 416)
+[ Extern  ] Assigns (file share/libc/stdio.h, line 433)
             assigns *stream;
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 416)
+[ Extern  ] Froms (file share/libc/stdio.h, line 433)
             assigns *stream \from \nothing;
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
@@ -2010,7 +2058,7 @@
 [ Extern  ] Assigns nothing
             assigns \nothing;
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 422)
+[ Extern  ] Froms (file share/libc/stdio.h, line 439)
             assigns \result \from (indirect: *stream);
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
@@ -2024,7 +2072,7 @@
 [ Extern  ] Assigns nothing
             assigns \nothing;
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 428)
+[ Extern  ] Froms (file share/libc/stdio.h, line 445)
             assigns \result \from (indirect: *stream);
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
@@ -2035,10 +2083,10 @@
 --- Properties of Function 'flockfile'
 --------------------------------------------------------------------------------
 
-[ Extern  ] Assigns (file share/libc/stdio.h, line 434)
+[ Extern  ] Assigns (file share/libc/stdio.h, line 451)
             assigns *stream;
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 434)
+[ Extern  ] Froms (file share/libc/stdio.h, line 451)
             assigns *stream \from \nothing;
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
@@ -2049,10 +2097,10 @@
 --- Properties of Function 'funlockfile'
 --------------------------------------------------------------------------------
 
-[ Extern  ] Assigns (file share/libc/stdio.h, line 440)
+[ Extern  ] Assigns (file share/libc/stdio.h, line 457)
             assigns *stream;
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 440)
+[ Extern  ] Froms (file share/libc/stdio.h, line 457)
             assigns *stream \from \nothing;
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
@@ -2063,13 +2111,13 @@
 --- Properties of Function 'ftrylockfile'
 --------------------------------------------------------------------------------
 
-[ Extern  ] Assigns (file share/libc/stdio.h, line 446)
+[ Extern  ] Assigns (file share/libc/stdio.h, line 463)
             assigns \result, *stream;
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 446)
+[ Extern  ] Froms (file share/libc/stdio.h, line 463)
             assigns \result \from \nothing;
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 446)
+[ Extern  ] Froms (file share/libc/stdio.h, line 463)
             assigns *stream \from \nothing;
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
@@ -2083,7 +2131,7 @@
 [ Extern  ] Assigns nothing
             assigns \nothing;
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 452)
+[ Extern  ] Froms (file share/libc/stdio.h, line 469)
             assigns \result \from (indirect: *stream);
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
@@ -2094,10 +2142,10 @@
 --- Properties of Function 'perror'
 --------------------------------------------------------------------------------
 
-[ Extern  ] Assigns (file share/libc/stdio.h, line 458)
+[ Extern  ] Assigns (file share/libc/stdio.h, line 475)
             assigns __fc_stdout;
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 458)
+[ Extern  ] Froms (file share/libc/stdio.h, line 475)
             assigns __fc_stdout
               \from __fc_errno, *(s + (0 .. strlen{Old}(s)));
             Unverifiable but considered Valid.
@@ -2109,13 +2157,13 @@
 --- Properties of Function 'getc_unlocked'
 --------------------------------------------------------------------------------
 
-[ Extern  ] Assigns (file share/libc/stdio.h, line 464)
+[ Extern  ] Assigns (file share/libc/stdio.h, line 481)
             assigns \result, *stream;
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 464)
+[ Extern  ] Froms (file share/libc/stdio.h, line 481)
             assigns \result \from *stream;
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 464)
+[ Extern  ] Froms (file share/libc/stdio.h, line 481)
             assigns *stream \from *stream;
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
@@ -2129,7 +2177,7 @@
 [ Extern  ] Assigns nothing
             assigns \nothing;
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 469)
+[ Extern  ] Froms (file share/libc/stdio.h, line 486)
             assigns \result \from *__fc_stdin;
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
@@ -2140,13 +2188,13 @@
 --- Properties of Function 'putc_unlocked'
 --------------------------------------------------------------------------------
 
-[ Extern  ] Assigns (file share/libc/stdio.h, line 475)
+[ Extern  ] Assigns (file share/libc/stdio.h, line 492)
             assigns *stream, \result;
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 475)
+[ Extern  ] Froms (file share/libc/stdio.h, line 492)
             assigns *stream \from c;
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 476)
+[ Extern  ] Froms (file share/libc/stdio.h, line 493)
             assigns \result \from (indirect: *stream);
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
@@ -2157,13 +2205,13 @@
 --- Properties of Function 'putchar_unlocked'
 --------------------------------------------------------------------------------
 
-[ Extern  ] Assigns (file share/libc/stdio.h, line 481)
+[ Extern  ] Assigns (file share/libc/stdio.h, line 498)
             assigns *__fc_stdout, \result;
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 481)
+[ Extern  ] Froms (file share/libc/stdio.h, line 498)
             assigns *__fc_stdout \from c;
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 482)
+[ Extern  ] Froms (file share/libc/stdio.h, line 499)
             assigns \result \from (indirect: *__fc_stdout);
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
@@ -2174,10 +2222,10 @@
 --- Properties of Function 'clearerr_unlocked'
 --------------------------------------------------------------------------------
 
-[ Extern  ] Assigns (file share/libc/stdio.h, line 488)
+[ Extern  ] Assigns (file share/libc/stdio.h, line 505)
             assigns *stream;
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 488)
+[ Extern  ] Froms (file share/libc/stdio.h, line 505)
             assigns *stream \from \nothing;
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
@@ -2191,7 +2239,7 @@
 [ Extern  ] Assigns nothing
             assigns \nothing;
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 494)
+[ Extern  ] Froms (file share/libc/stdio.h, line 511)
             assigns \result \from (indirect: *stream);
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
@@ -2205,7 +2253,7 @@
 [ Extern  ] Assigns nothing
             assigns \nothing;
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 500)
+[ Extern  ] Froms (file share/libc/stdio.h, line 517)
             assigns \result \from (indirect: *stream);
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
@@ -2219,7 +2267,7 @@
 [ Extern  ] Assigns nothing
             assigns \nothing;
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 506)
+[ Extern  ] Froms (file share/libc/stdio.h, line 523)
             assigns \result \from (indirect: *stream);
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
@@ -2237,14 +2285,14 @@
               (\subset(\result, &__fc_fopen[0 .. 16 - 1]) ∧
                is_open_pipe(\result))
             Unverifiable but considered Valid.
-[ Extern  ] Assigns (file share/libc/stdio.h, line 533)
+[ Extern  ] Assigns (file share/libc/stdio.h, line 550)
             assigns \result, __fc_fopen[0 ..];
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 533)
+[ Extern  ] Froms (file share/libc/stdio.h, line 550)
             assigns \result
               \from (indirect: *command), (indirect: *type), __fc_p_fopen;
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 535)
+[ Extern  ] Froms (file share/libc/stdio.h, line 552)
             assigns __fc_fopen[0 ..]
               \from (indirect: *command), (indirect: *type), __fc_fopen[0 ..];
             Unverifiable but considered Valid.
@@ -2262,7 +2310,7 @@
 [ Extern  ] Assigns nothing
             assigns \nothing;
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 547)
+[ Extern  ] Froms (file share/libc/stdio.h, line 564)
             assigns \result \from (indirect: *stream);
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
@@ -4058,9 +4106,9 @@
 --------------------------------------------------------------------------------
 --- Status Report Summary
 --------------------------------------------------------------------------------
-   179 Completely validated
+   181 Completely validated
     16 Locally validated
-   486 Considered valid
+   494 Considered valid
     56 To be validated
-   737 Total
+   747 Total
 --------------------------------------------------------------------------------
diff --git a/tests/libc/oracle/fc_libc.0.res.oracle b/tests/libc/oracle/fc_libc.0.res.oracle
index 413b1aee0f0..f0d8a56d9da 100644
--- a/tests/libc/oracle/fc_libc.0.res.oracle
+++ b/tests/libc/oracle/fc_libc.0.res.oracle
@@ -40,7 +40,7 @@
    unsetenv (0 call); wcscat (0 call); wcscpy (0 call); wcslen (2 calls);
    wcsncat (0 call); wcsncpy (0 call); wmemcpy (0 call); wmemset (0 call); 
   
-  Undefined functions (395)
+  Undefined functions (397)
   =========================
    FD_CLR (0 call); FD_ISSET (0 call); FD_SET (0 call); FD_ZERO (0 call);
    Frama_C_int_interval (0 call); Frama_C_long_interval (0 call);
@@ -91,9 +91,9 @@
    flockfile (0 call); floor (0 call); floorf (0 call); floorl (0 call);
    fmod (0 call); fmodf (0 call); fopen (0 call); fork (0 call);
    fputc (0 call); fputs (0 call); fread (0 call); free (1 call);
-   freeaddrinfo (0 call); freopen (0 call); fseek (0 call); fsetpos (0 call);
-   ftell (0 call); ftrylockfile (0 call); funlockfile (0 call);
-   fwrite (0 call); gai_strerror (0 call); getc (0 call);
+   freeaddrinfo (0 call); freopen (0 call); fseek (0 call); fseeko (0 call);
+   fsetpos (0 call); ftell (0 call); ftello (0 call); ftrylockfile (0 call);
+   funlockfile (0 call); fwrite (0 call); gai_strerror (0 call); getc (0 call);
    getc_unlocked (0 call); getchar (0 call); getchar_unlocked (0 call);
    getcwd (0 call); getegid (0 call); geteuid (0 call); getgid (0 call);
    gethostname (0 call); getitimer (0 call); getopt (0 call);
@@ -181,7 +181,7 @@
   Goto = 89
   Assignment = 438
   Exit point = 82
-  Function = 477
+  Function = 479
   Function call = 89
   Pointer dereferencing = 158
   Cyclomatic complexity = 286
diff --git a/tests/libc/oracle/fc_libc.1.res.oracle b/tests/libc/oracle/fc_libc.1.res.oracle
index 34abdcbb6ed..c4e0a539a60 100644
--- a/tests/libc/oracle/fc_libc.1.res.oracle
+++ b/tests/libc/oracle/fc_libc.1.res.oracle
@@ -4811,6 +4811,17 @@ extern int fgetpos(FILE * __restrict stream, fpos_t * __restrict pos);
  */
 extern int fseek(FILE *stream, long offset, int whence);
 
+/*@ requires valid_stream: \valid(stream);
+    requires whence_enum: whence ≡ 0 ∨ whence ≡ 1 ∨ whence ≡ 2;
+    assigns *stream, \result, __fc_errno;
+    assigns *stream \from *stream, (indirect: offset), (indirect: whence);
+    assigns \result
+      \from (indirect: *stream), (indirect: offset), (indirect: whence);
+    assigns __fc_errno
+      \from (indirect: *stream), (indirect: offset), (indirect: whence);
+ */
+extern int fseeko(FILE *stream, off_t offset, int whence);
+
 /*@ requires valid_stream: \valid(stream);
     requires valid_pos: \valid_read(pos);
     requires initialization: pos: \initialized(pos);
@@ -4830,6 +4841,17 @@ extern int fsetpos(FILE *stream, fpos_t const *pos);
  */
 extern long ftell(FILE *stream);
 
+/*@ requires valid_stream: \valid(stream);
+    ensures
+      success_or_error:
+        \result ≡ -1 ∨
+        (\result ≥ 0 ∧ __fc_errno ≡ \old(__fc_errno));
+    assigns \result, __fc_errno;
+    assigns \result \from (indirect: *stream);
+    assigns __fc_errno \from (indirect: *stream);
+ */
+extern off_t ftello(FILE *stream);
+
 /*@ requires valid_stream: \valid(stream);
     assigns *stream;
     assigns *stream \from \nothing;
diff --git a/tests/libc/oracle/stdio_h.res.oracle b/tests/libc/oracle/stdio_h.res.oracle
index 8262aa6c408..e839ecd549f 100644
--- a/tests/libc/oracle/stdio_h.res.oracle
+++ b/tests/libc/oracle/stdio_h.res.oracle
@@ -51,47 +51,67 @@
 [eva] tests/libc/stdio_h.c:25: 
   function fseek: precondition 'whence_enum' got status valid.
 [eva] Done for function fseek
-[eva] computing for function fclose <- main.
+[eva] computing for function fseeko <- main.
   Called from tests/libc/stdio_h.c:26.
-[eva] using specification for function fclose
+[eva] using specification for function fseeko
+[eva] tests/libc/stdio_h.c:26: 
+  function fseeko: precondition 'valid_stream' got status valid.
 [eva] tests/libc/stdio_h.c:26: 
+  function fseeko: precondition 'whence_enum' got status valid.
+[eva] Done for function fseeko
+[eva] computing for function ftell <- main.
+  Called from tests/libc/stdio_h.c:27.
+[eva] using specification for function ftell
+[eva] tests/libc/stdio_h.c:27: 
+  function ftell: precondition 'valid_stream' got status valid.
+[eva] Done for function ftell
+[eva] computing for function ftello <- main.
+  Called from tests/libc/stdio_h.c:28.
+[eva] using specification for function ftello
+[eva] tests/libc/stdio_h.c:28: 
+  function ftello: precondition 'valid_stream' got status valid.
+[eva] Done for function ftello
+[eva] computing for function fclose <- main.
+  Called from tests/libc/stdio_h.c:29.
+[eva] using specification for function fclose
+[eva] tests/libc/stdio_h.c:29: 
   function fclose: precondition 'valid_stream' got status valid.
 [eva] Done for function fclose
 [eva] computing for function freopen <- main.
-  Called from tests/libc/stdio_h.c:28.
+  Called from tests/libc/stdio_h.c:31.
 [eva] using specification for function freopen
-[eva] tests/libc/stdio_h.c:28: 
+[eva] tests/libc/stdio_h.c:31: 
   function freopen: precondition 'valid_filename' got status valid.
-[eva] tests/libc/stdio_h.c:28: 
+[eva] tests/libc/stdio_h.c:31: 
   function freopen: precondition 'valid_mode' got status valid.
-[eva:alarm] tests/libc/stdio_h.c:28: Warning: 
+[eva:alarm] tests/libc/stdio_h.c:31: Warning: 
   function freopen: precondition 'valid_stream' got status unknown.
 [eva] Done for function freopen
 [eva] computing for function printf_va_1 <- main.
-  Called from tests/libc/stdio_h.c:30.
+  Called from tests/libc/stdio_h.c:33.
 [eva] using specification for function printf_va_1
-[eva] tests/libc/stdio_h.c:30: 
+[eva] tests/libc/stdio_h.c:33: 
   function printf_va_1: precondition got status valid.
 [eva] Done for function printf_va_1
 [eva] computing for function fclose <- main.
-  Called from tests/libc/stdio_h.c:31.
-[eva] tests/libc/stdio_h.c:31: 
+  Called from tests/libc/stdio_h.c:34.
+[eva] tests/libc/stdio_h.c:34: 
   function fclose: precondition 'valid_stream' got status valid.
 [eva] Done for function fclose
 [eva] computing for function fgets <- main.
-  Called from tests/libc/stdio_h.c:34.
+  Called from tests/libc/stdio_h.c:37.
 [eva] using specification for function fgets
-[eva] tests/libc/stdio_h.c:34: 
+[eva] tests/libc/stdio_h.c:37: 
   function fgets: precondition 'valid_stream' got status valid.
-[eva] tests/libc/stdio_h.c:34: 
+[eva] tests/libc/stdio_h.c:37: 
   function fgets: precondition 'room_s' got status valid.
 [eva] Done for function fgets
-[eva:alarm] tests/libc/stdio_h.c:36: Warning: check got status unknown.
+[eva:alarm] tests/libc/stdio_h.c:39: Warning: check got status unknown.
 [eva] computing for function fgets <- main.
-  Called from tests/libc/stdio_h.c:38.
-[eva] tests/libc/stdio_h.c:38: 
+  Called from tests/libc/stdio_h.c:41.
+[eva] tests/libc/stdio_h.c:41: 
   function fgets: precondition 'valid_stream' got status valid.
-[eva:alarm] tests/libc/stdio_h.c:38: Warning: 
+[eva:alarm] tests/libc/stdio_h.c:41: Warning: 
   function fgets: precondition 'room_s' got status invalid.
 [eva] Done for function fgets
 [eva] Recording results for main
@@ -104,6 +124,8 @@
   f ∈ {{ NULL ; &__fc_fopen + [0..120],0%8 }}
   r ∈ [--..--]
   tmp_2 ∈ {{ NULL ; &__fc_fopen + [0..120],0%8 }}
+  told ∈ [-1..2147483647]
+  toldo ∈ [-1..2147483647]
   redirected ∈ {{ NULL ; &__fc_fopen + [0..120],0%8 }}
   fgets_buf0[0] ∈ [--..--] or UNINITIALIZED
   fgets_res ∈ {{ NULL ; &fgets_buf0[0] }}
diff --git a/tests/libc/stdio_h.c b/tests/libc/stdio_h.c
index a1d6f3fa161..1150500b6cb 100644
--- a/tests/libc/stdio_h.c
+++ b/tests/libc/stdio_h.c
@@ -23,6 +23,9 @@ int main() {
   FILE *tmp = tmpfile();
   if (!tmp) return 2;
   fseek(tmp, 0L, SEEK_SET);
+  fseeko(tmp, 0, SEEK_SET);
+  long told = ftell(tmp);
+  off_t toldo = ftello(tmp);
   fclose(tmp);
 
   FILE *redirected = freopen("/tmp/mytmp.txt", "w+", stdout);
diff --git a/tests/metrics/oracle/libc.1.res.oracle b/tests/metrics/oracle/libc.1.res.oracle
index 24cfd8d35b1..b00598fd71a 100644
--- a/tests/metrics/oracle/libc.1.res.oracle
+++ b/tests/metrics/oracle/libc.1.res.oracle
@@ -4,7 +4,7 @@
    bar (1 call); f (0 call); foo (1 call); g (address taken) (0 call);
    getopt (1 call); main (0 call); 
   
-  Undefined functions (120)
+  Undefined functions (122)
   =========================
    _exit (0 call); access (0 call); chdir (0 call); chown (0 call);
    chroot (0 call); clearerr (0 call); clearerr_unlocked (0 call);
@@ -15,20 +15,20 @@
    fflush (0 call); fgetc (0 call); fgetpos (0 call); fgets (0 call);
    fileno (0 call); fileno_unlocked (0 call); flockfile (0 call);
    fopen (0 call); fork (0 call); fputc (0 call); fputs (0 call);
-   fread (0 call); freopen (0 call); fseek (0 call); fsetpos (0 call);
-   ftell (0 call); ftrylockfile (0 call); funlockfile (0 call);
-   fwrite (0 call); getc (0 call); getc_unlocked (0 call); getchar (1 call);
-   getchar_unlocked (0 call); getcwd (0 call); getegid (0 call);
-   geteuid (0 call); getgid (0 call); gethostname (0 call);
-   getopt_long (0 call); getopt_long_only (0 call); getpgid (0 call);
-   getpgrp (0 call); getpid (0 call); getppid (0 call); getresgid (0 call);
-   getresuid (0 call); gets (0 call); getsid (0 call); getuid (0 call);
-   isalnum (0 call); isalpha (1 call); isascii (0 call); isatty (0 call);
-   isblank (1 call); iscntrl (0 call); isdigit (0 call); isgraph (0 call);
-   islower (0 call); isprint (0 call); ispunct (0 call); isspace (0 call);
-   isupper (0 call); isxdigit (0 call); lseek (0 call); pathconf (0 call);
-   pclose (0 call); perror (0 call); pipe (0 call); popen (0 call);
-   putc (0 call); putc_unlocked (0 call); putchar (0 call);
+   fread (0 call); freopen (0 call); fseek (0 call); fseeko (0 call);
+   fsetpos (0 call); ftell (0 call); ftello (0 call); ftrylockfile (0 call);
+   funlockfile (0 call); fwrite (0 call); getc (0 call);
+   getc_unlocked (0 call); getchar (1 call); getchar_unlocked (0 call);
+   getcwd (0 call); getegid (0 call); geteuid (0 call); getgid (0 call);
+   gethostname (0 call); getopt_long (0 call); getopt_long_only (0 call);
+   getpgid (0 call); getpgrp (0 call); getpid (0 call); getppid (0 call);
+   getresgid (0 call); getresuid (0 call); gets (0 call); getsid (0 call);
+   getuid (0 call); isalnum (0 call); isalpha (1 call); isascii (0 call);
+   isatty (0 call); isblank (1 call); iscntrl (0 call); isdigit (0 call);
+   isgraph (0 call); islower (0 call); isprint (0 call); ispunct (0 call);
+   isspace (0 call); isupper (0 call); isxdigit (0 call); lseek (0 call);
+   pathconf (0 call); pclose (0 call); perror (0 call); pipe (0 call);
+   popen (0 call); putc (0 call); putc_unlocked (0 call); putchar (0 call);
    putchar_unlocked (0 call); puts (0 call); read (0 call); remove (0 call);
    rename (0 call); rewind (0 call); setbuf (0 call); setegid (0 call);
    seteuid (0 call); setgid (0 call); sethostname (0 call); setpgid (0 call);
@@ -59,7 +59,7 @@
   Goto = 0
   Assignment = 8
   Exit point = 6
-  Function = 126
+  Function = 128
   Function call = 7
   Pointer dereferencing = 1
   Cyclomatic complexity = 6
@@ -87,7 +87,7 @@
   ----------------------------------------------------------------------------
 [metrics] Eva coverage statistics
   =======================
-  Syntactically reachable functions = 7 (out of 126)
+  Syntactically reachable functions = 7 (out of 128)
   Semantically reached functions = 7
   Coverage estimation = 100.0%
 [metrics] References to non-analyzed functions
diff --git a/tests/rte/oracle/value_rte.res.oracle b/tests/rte/oracle/value_rte.res.oracle
index 2cf4947a7f1..1fa05cbf8c6 100644
--- a/tests/rte/oracle/value_rte.res.oracle
+++ b/tests/rte/oracle/value_rte.res.oracle
@@ -603,13 +603,28 @@
             by Frama-C kernel.
 
 --------------------------------------------------------------------------------
---- Properties of Function 'fsetpos'
+--- Properties of Function 'fseeko'
 --------------------------------------------------------------------------------
 
-[ Extern  ] Assigns (file share/libc/stdio.h, line 396)
+[ Extern  ] Assigns (file share/libc/stdio.h, line 395)
+            Unverifiable but considered Valid.
+[ Extern  ] Froms (file share/libc/stdio.h, line 395)
             Unverifiable but considered Valid.
 [ Extern  ] Froms (file share/libc/stdio.h, line 396)
             Unverifiable but considered Valid.
+[ Extern  ] Froms (file share/libc/stdio.h, line 396)
+            Unverifiable but considered Valid.
+[  Valid  ] Default behavior
+            by Frama-C kernel.
+
+--------------------------------------------------------------------------------
+--- Properties of Function 'fsetpos'
+--------------------------------------------------------------------------------
+
+[ Extern  ] Assigns (file share/libc/stdio.h, line 405)
+            Unverifiable but considered Valid.
+[ Extern  ] Froms (file share/libc/stdio.h, line 405)
+            Unverifiable but considered Valid.
 [  Valid  ] Default behavior
             by Frama-C kernel.
 
@@ -619,11 +634,26 @@
 
 [ Extern  ] Post-condition 'success_or_error'
             Unverifiable but considered Valid.
-[ Extern  ] Assigns (file share/libc/stdio.h, line 402)
+[ Extern  ] Assigns (file share/libc/stdio.h, line 411)
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 402)
+[ Extern  ] Froms (file share/libc/stdio.h, line 411)
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 402)
+[ Extern  ] Froms (file share/libc/stdio.h, line 411)
+            Unverifiable but considered Valid.
+[  Valid  ] Default behavior
+            by Frama-C kernel.
+
+--------------------------------------------------------------------------------
+--- Properties of Function 'ftello'
+--------------------------------------------------------------------------------
+
+[ Extern  ] Post-condition 'success_or_error'
+            Unverifiable but considered Valid.
+[ Extern  ] Assigns (file share/libc/stdio.h, line 419)
+            Unverifiable but considered Valid.
+[ Extern  ] Froms (file share/libc/stdio.h, line 419)
+            Unverifiable but considered Valid.
+[ Extern  ] Froms (file share/libc/stdio.h, line 419)
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
             by Frama-C kernel.
@@ -632,9 +662,9 @@
 --- Properties of Function 'rewind'
 --------------------------------------------------------------------------------
 
-[ Extern  ] Assigns (file share/libc/stdio.h, line 410)
+[ Extern  ] Assigns (file share/libc/stdio.h, line 427)
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 410)
+[ Extern  ] Froms (file share/libc/stdio.h, line 427)
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
             by Frama-C kernel.
@@ -643,9 +673,9 @@
 --- Properties of Function 'clearerr'
 --------------------------------------------------------------------------------
 
-[ Extern  ] Assigns (file share/libc/stdio.h, line 416)
+[ Extern  ] Assigns (file share/libc/stdio.h, line 433)
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 416)
+[ Extern  ] Froms (file share/libc/stdio.h, line 433)
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
             by Frama-C kernel.
@@ -656,7 +686,7 @@
 
 [ Extern  ] Assigns nothing
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 422)
+[ Extern  ] Froms (file share/libc/stdio.h, line 439)
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
             by Frama-C kernel.
@@ -667,7 +697,7 @@
 
 [ Extern  ] Assigns nothing
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 428)
+[ Extern  ] Froms (file share/libc/stdio.h, line 445)
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
             by Frama-C kernel.
@@ -676,9 +706,9 @@
 --- Properties of Function 'flockfile'
 --------------------------------------------------------------------------------
 
-[ Extern  ] Assigns (file share/libc/stdio.h, line 434)
+[ Extern  ] Assigns (file share/libc/stdio.h, line 451)
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 434)
+[ Extern  ] Froms (file share/libc/stdio.h, line 451)
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
             by Frama-C kernel.
@@ -687,9 +717,9 @@
 --- Properties of Function 'funlockfile'
 --------------------------------------------------------------------------------
 
-[ Extern  ] Assigns (file share/libc/stdio.h, line 440)
+[ Extern  ] Assigns (file share/libc/stdio.h, line 457)
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 440)
+[ Extern  ] Froms (file share/libc/stdio.h, line 457)
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
             by Frama-C kernel.
@@ -698,11 +728,11 @@
 --- Properties of Function 'ftrylockfile'
 --------------------------------------------------------------------------------
 
-[ Extern  ] Assigns (file share/libc/stdio.h, line 446)
+[ Extern  ] Assigns (file share/libc/stdio.h, line 463)
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 446)
+[ Extern  ] Froms (file share/libc/stdio.h, line 463)
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 446)
+[ Extern  ] Froms (file share/libc/stdio.h, line 463)
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
             by Frama-C kernel.
@@ -713,7 +743,7 @@
 
 [ Extern  ] Assigns nothing
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 452)
+[ Extern  ] Froms (file share/libc/stdio.h, line 469)
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
             by Frama-C kernel.
@@ -722,9 +752,9 @@
 --- Properties of Function 'perror'
 --------------------------------------------------------------------------------
 
-[ Extern  ] Assigns (file share/libc/stdio.h, line 458)
+[ Extern  ] Assigns (file share/libc/stdio.h, line 475)
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 458)
+[ Extern  ] Froms (file share/libc/stdio.h, line 475)
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
             by Frama-C kernel.
@@ -733,11 +763,11 @@
 --- Properties of Function 'getc_unlocked'
 --------------------------------------------------------------------------------
 
-[ Extern  ] Assigns (file share/libc/stdio.h, line 464)
+[ Extern  ] Assigns (file share/libc/stdio.h, line 481)
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 464)
+[ Extern  ] Froms (file share/libc/stdio.h, line 481)
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 464)
+[ Extern  ] Froms (file share/libc/stdio.h, line 481)
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
             by Frama-C kernel.
@@ -748,7 +778,7 @@
 
 [ Extern  ] Assigns nothing
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 469)
+[ Extern  ] Froms (file share/libc/stdio.h, line 486)
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
             by Frama-C kernel.
@@ -757,11 +787,11 @@
 --- Properties of Function 'putc_unlocked'
 --------------------------------------------------------------------------------
 
-[ Extern  ] Assigns (file share/libc/stdio.h, line 475)
+[ Extern  ] Assigns (file share/libc/stdio.h, line 492)
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 475)
+[ Extern  ] Froms (file share/libc/stdio.h, line 492)
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 476)
+[ Extern  ] Froms (file share/libc/stdio.h, line 493)
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
             by Frama-C kernel.
@@ -770,11 +800,11 @@
 --- Properties of Function 'putchar_unlocked'
 --------------------------------------------------------------------------------
 
-[ Extern  ] Assigns (file share/libc/stdio.h, line 481)
+[ Extern  ] Assigns (file share/libc/stdio.h, line 498)
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 481)
+[ Extern  ] Froms (file share/libc/stdio.h, line 498)
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 482)
+[ Extern  ] Froms (file share/libc/stdio.h, line 499)
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
             by Frama-C kernel.
@@ -783,9 +813,9 @@
 --- Properties of Function 'clearerr_unlocked'
 --------------------------------------------------------------------------------
 
-[ Extern  ] Assigns (file share/libc/stdio.h, line 488)
+[ Extern  ] Assigns (file share/libc/stdio.h, line 505)
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 488)
+[ Extern  ] Froms (file share/libc/stdio.h, line 505)
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
             by Frama-C kernel.
@@ -796,7 +826,7 @@
 
 [ Extern  ] Assigns nothing
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 494)
+[ Extern  ] Froms (file share/libc/stdio.h, line 511)
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
             by Frama-C kernel.
@@ -807,7 +837,7 @@
 
 [ Extern  ] Assigns nothing
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 500)
+[ Extern  ] Froms (file share/libc/stdio.h, line 517)
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
             by Frama-C kernel.
@@ -818,7 +848,7 @@
 
 [ Extern  ] Assigns nothing
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 506)
+[ Extern  ] Froms (file share/libc/stdio.h, line 523)
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
             by Frama-C kernel.
@@ -829,11 +859,11 @@
 
 [ Extern  ] Post-condition 'result_error_or_valid_open_pipe'
             Unverifiable but considered Valid.
-[ Extern  ] Assigns (file share/libc/stdio.h, line 533)
+[ Extern  ] Assigns (file share/libc/stdio.h, line 550)
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 533)
+[ Extern  ] Froms (file share/libc/stdio.h, line 550)
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 535)
+[ Extern  ] Froms (file share/libc/stdio.h, line 552)
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
             by Frama-C kernel.
@@ -846,7 +876,7 @@
             Unverifiable but considered Valid.
 [ Extern  ] Assigns nothing
             Unverifiable but considered Valid.
-[ Extern  ] Froms (file share/libc/stdio.h, line 547)
+[ Extern  ] Froms (file share/libc/stdio.h, line 564)
             Unverifiable but considered Valid.
 [  Valid  ] Default behavior
             by Frama-C kernel.
@@ -865,8 +895,8 @@
 --------------------------------------------------------------------------------
 --- Status Report Summary
 --------------------------------------------------------------------------------
-    72 Completely validated
-   198 Considered valid
+    74 Completely validated
+   206 Considered valid
      1 To be validated
-   271 Total
+   281 Total
 --------------------------------------------------------------------------------
-- 
GitLab