diff --git a/share/libc/__fc_gcc_builtins.h b/share/libc/__fc_gcc_builtins.h index 6de0859076e9a5872c97fa40170976037446ec74..bf47a4f812296434ab94b067ad460cd3b7e99f7f 100644 --- a/share/libc/__fc_gcc_builtins.h +++ b/share/libc/__fc_gcc_builtins.h @@ -25,8 +25,8 @@ #ifndef __FC_GCC_BUILTINS #define __FC_GCC_BUILTINS -#include "features.h" #include "__fc_machdep.h" +#include "features.h" __PUSH_FC_STDLIB @@ -39,7 +39,7 @@ __BEGIN_DECLS ensures res_wrapped: *res == (int)(a + b); ensures result_overflow: a + b == (int)(a + b) ? \result == 0 : \result == 1; */ -_Bool __builtin_sadd_overflow (int a, int b, int *res); +_Bool __builtin_sadd_overflow(int a, int b, int* res); /*@ requires valid_res: \valid(res); @@ -48,7 +48,7 @@ _Bool __builtin_sadd_overflow (int a, int b, int *res); ensures res_wrapped: *res == (long)(a + b); ensures result_overflow: a + b == (long)(a + b) ? \result == 0 : \result == 1; */ -_Bool __builtin_saddl_overflow (long a, long b, long *res); +_Bool __builtin_saddl_overflow(long a, long b, long* res); /*@ requires valid_res: \valid(res); @@ -57,7 +57,7 @@ _Bool __builtin_saddl_overflow (long a, long b, long *res); ensures res_wrapped: *res == (long long)(a + b); ensures result_overflow: a + b == (long long)(a + b) ? \result == 0 : \result == 1; */ -_Bool __builtin_saddll_overflow (long long a, long long b, long long *res); +_Bool __builtin_saddll_overflow(long long a, long long b, long long* res); /*@ requires valid_res: \valid(res); @@ -66,7 +66,7 @@ _Bool __builtin_saddll_overflow (long long a, long long b, long long *res); ensures res_wrapped: *res == (unsigned)(a + b); ensures result_overflow: a + b == (unsigned)(a + b) ? \result == 0 : \result == 1; */ -_Bool __builtin_uadd_overflow (unsigned a, unsigned b, unsigned *res); +_Bool __builtin_uadd_overflow(unsigned a, unsigned b, unsigned* res); /*@ requires valid_res: \valid(res); @@ -75,7 +75,7 @@ _Bool __builtin_uadd_overflow (unsigned a, unsigned b, unsigned *res); ensures res_wrapped: *res == (unsigned long)(a + b); ensures result_overflow: a + b == (unsigned long)(a + b) ? \result == 0 : \result == 1; */ -_Bool __builtin_uaddl_overflow (unsigned long a, unsigned long b, unsigned long *res); +_Bool __builtin_uaddl_overflow(unsigned long a, unsigned long b, unsigned long* res); /*@ requires valid_res: \valid(res); @@ -84,7 +84,7 @@ _Bool __builtin_uaddl_overflow (unsigned long a, unsigned long b, unsigned long ensures res_wrapped: *res == (unsigned long long)(a + b); ensures result_overflow: a + b == (unsigned long long)(a + b) ? \result == 0 : \result == 1; */ -_Bool __builtin_uaddll_overflow (unsigned long long a, unsigned long long b, unsigned long long *res); +_Bool __builtin_uaddll_overflow(unsigned long long a, unsigned long long b, unsigned long long* res); /*@ requires valid_res: \valid(res); @@ -93,7 +93,7 @@ _Bool __builtin_uaddll_overflow (unsigned long long a, unsigned long long b, uns ensures res_wrapped: *res == (int)(a - b); ensures result_overflow: a - b == (int)(a - b) ? \result == 0 : \result == 1; */ -_Bool __builtin_ssub_overflow (int a, int b, int *res); +_Bool __builtin_ssub_overflow(int a, int b, int* res); /*@ requires valid_res: \valid(res); @@ -102,7 +102,7 @@ _Bool __builtin_ssub_overflow (int a, int b, int *res); ensures res_wrapped: *res == (long)(a - b); ensures result_overflow: a - b == (long)(a - b) ? \result == 0 : \result == 1; */ -_Bool __builtin_ssubl_overflow (long a, long b, long *res); +_Bool __builtin_ssubl_overflow(long a, long b, long* res); /*@ requires valid_res: \valid(res); @@ -111,7 +111,7 @@ _Bool __builtin_ssubl_overflow (long a, long b, long *res); ensures res_wrapped: *res == (long long)(a - b); ensures result_overflow: a - b == (long long)(a - b) ? \result == 0 : \result == 1; */ -_Bool __builtin_ssubll_overflow (long long a, long long b, long long *res); +_Bool __builtin_ssubll_overflow(long long a, long long b, long long* res); /*@ requires valid_res: \valid(res); @@ -120,7 +120,7 @@ _Bool __builtin_ssubll_overflow (long long a, long long b, long long *res); ensures res_wrapped: *res == (unsigned)(a - b); ensures result_overflow: a - b == (unsigned)(a - b) ? \result == 0 : \result == 1; */ -_Bool __builtin_usub_overflow (unsigned a, unsigned b, unsigned *res); +_Bool __builtin_usub_overflow(unsigned a, unsigned b, unsigned* res); /*@ requires valid_res: \valid(res); @@ -129,7 +129,7 @@ _Bool __builtin_usub_overflow (unsigned a, unsigned b, unsigned *res); ensures res_wrapped: *res == (unsigned long)(a - b); ensures result_overflow: a - b == (unsigned long)(a - b) ? \result == 0 : \result == 1; */ -_Bool __builtin_usubl_overflow (unsigned long a, unsigned long b, unsigned long *res); +_Bool __builtin_usubl_overflow(unsigned long a, unsigned long b, unsigned long* res); /*@ requires valid_res: \valid(res); @@ -138,7 +138,7 @@ _Bool __builtin_usubl_overflow (unsigned long a, unsigned long b, unsigned long ensures res_wrapped: *res == (unsigned long long)(a - b); ensures result_overflow: a - b == (unsigned long long)(a - b) ? \result == 0 : \result == 1; */ -_Bool __builtin_usubll_overflow (unsigned long long a, unsigned long long b, unsigned long long *res); +_Bool __builtin_usubll_overflow(unsigned long long a, unsigned long long b, unsigned long long* res); /*@ requires valid_res: \valid(res); @@ -147,7 +147,7 @@ _Bool __builtin_usubll_overflow (unsigned long long a, unsigned long long b, uns ensures res_wrapped: *res == (int)(a * b); ensures result_overflow: a * b == (int)(a * b) ? \result == 0 : \result == 1; */ -_Bool __builtin_smul_overflow (int a, int b, int *res); +_Bool __builtin_smul_overflow(int a, int b, int* res); /*@ requires valid_res: \valid(res); @@ -156,7 +156,7 @@ _Bool __builtin_smul_overflow (int a, int b, int *res); ensures res_wrapped: *res == (long)(a * b); ensures result_overflow: a * b == (long)(a * b) ? \result == 0 : \result == 1; */ -_Bool __builtin_smull_overflow (long a, long b, long *res); +_Bool __builtin_smull_overflow(long a, long b, long* res); /*@ requires valid_res: \valid(res); @@ -165,7 +165,7 @@ _Bool __builtin_smull_overflow (long a, long b, long *res); ensures res_wrapped: *res == (long long)(a * b); ensures result_overflow: a * b == (long long)(a * b) ? \result == 0 : \result == 1; */ -_Bool __builtin_smulll_overflow (long long a, long long b, long long *res); +_Bool __builtin_smulll_overflow(long long a, long long b, long long* res); /*@ requires valid_res: \valid(res); @@ -174,7 +174,7 @@ _Bool __builtin_smulll_overflow (long long a, long long b, long long *res); ensures res_wrapped: *res == (unsigned)(a * b); ensures result_overflow: a * b == (unsigned)(a * b) ? \result == 0 : \result == 1; */ -_Bool __builtin_umul_overflow (unsigned a, unsigned b, unsigned *res); +_Bool __builtin_umul_overflow(unsigned a, unsigned b, unsigned* res); /*@ requires valid_res: \valid(res); @@ -183,7 +183,7 @@ _Bool __builtin_umul_overflow (unsigned a, unsigned b, unsigned *res); ensures res_wrapped: *res == (unsigned long)(a * b); ensures result_overflow: a * b == (unsigned long)(a * b) ? \result == 0 : \result == 1; */ -_Bool __builtin_umull_overflow (unsigned long a, unsigned long b, unsigned long *res); +_Bool __builtin_umull_overflow(unsigned long a, unsigned long b, unsigned long* res); /*@ requires valid_res: \valid(res); @@ -192,67 +192,543 @@ _Bool __builtin_umull_overflow (unsigned long a, unsigned long b, unsigned long ensures res_wrapped: *res == (unsigned long long)(a * b); ensures result_overflow: a * b == (unsigned long long)(a * b) ? \result == 0 : \result == 1; */ -_Bool __builtin_umulll_overflow (unsigned long long a, unsigned long long b, unsigned long long *res); +_Bool __builtin_umulll_overflow(unsigned long long a, unsigned long long b, unsigned long long* res); /*@ requires x_nonzero: x != 0; assigns \result \from indirect:x; ensures result_is_bit_count: 0 <= \result < __CHAR_BIT * sizeof(x); */ -int __builtin_clz (unsigned int x); +int __builtin_clz(unsigned int x); /*@ requires x_nonzero: x != 0; assigns \result \from indirect:x; ensures result_is_bit_count: 0 <= \result < __CHAR_BIT * sizeof(x); */ -int __builtin_clzl (unsigned long x); +int __builtin_clzl(unsigned long x); /*@ requires x_nonzero: x != 0; assigns \result \from indirect:x; ensures result_is_bit_count: 0 <= \result < __CHAR_BIT * sizeof(x); */ -int __builtin_clzll (unsigned long long x); +int __builtin_clzll(unsigned long long x); /*@ requires x_nonzero: x != 0; assigns \result \from indirect:x; ensures result_is_bit_count: 0 <= \result < __CHAR_BIT * sizeof(x); */ -int __builtin_ctz (unsigned int x); +int __builtin_ctz(unsigned int x); /*@ requires x_nonzero: x != 0; assigns \result \from indirect:x; ensures result_is_bit_count: 0 <= \result < __CHAR_BIT * sizeof(x); */ -int __builtin_ctzl (unsigned long x); +int __builtin_ctzl(unsigned long x); /*@ requires x_nonzero: x != 0; assigns \result \from indirect:x; ensures result_is_bit_count: 0 <= \result < __CHAR_BIT * sizeof(x); */ -int __builtin_ctzll (unsigned long long x); +int __builtin_ctzll(unsigned long long x); /*@ assigns \result \from indirect:x; ensures result_is_bit_count: 0 <= \result <= __CHAR_BIT * sizeof(x); */ -int __builtin_popcount (unsigned int x); +int __builtin_popcount(unsigned int x); /*@ assigns \result \from indirect:x; ensures result_is_bit_count: 0 <= \result <= __CHAR_BIT * sizeof(x); */ -int __builtin_popcountl (unsigned long x); +int __builtin_popcountl(unsigned long x); /*@ assigns \result \from indirect:x; ensures result_is_bit_count: 0 <= \result <= __CHAR_BIT * sizeof(x); */ -int __builtin_popcountll (unsigned long long x); +int __builtin_popcountll(unsigned long long x); + +// GCC specialized __atomic_* functions. +// TODO: add generic counterpart with some help from cabs2cil for typing +// NB: __atomic_* operations do not seem to make a distinction between +// signed and unsigned: this may lead to some warnings by Frama-C + +/*@ + requires validity: \valid_read(mem); + requires initialization: \initialized(mem); + assigns \result \from *mem, indirect:model; + ensures load_value: \result == *mem; +*/ +__UINT8_T __atomic_load_1(const __UINT8_T* mem, int model); + +/*@ + requires validity: \valid_read(mem); + requires initialization: \initialized(mem); + assigns \result \from *mem, indirect: model; + ensures load_value: \result == *mem; +*/ +__UINT16_T __atomic_load_2(const __UINT16_T* mem, int model); + +/*@ + requires validity: \valid_read(mem); + requires initialization: \initialized(mem); + assigns \result \from *mem, indirect:model; + ensures load_value: \result == *mem; +*/ +__UINT32_T __atomic_load_4(const __UINT32_T* mem, int model); + +/*@ + requires validity: \valid_read(mem); + requires initialization: \initialized(mem); + assigns \result \from *mem, indirect:model; + ensures load_value: \result == *mem; +*/ +__UINT64_T __atomic_load_8(const __UINT64_T* mem, int model); + +/*@ + requires validity: \valid(mem); + assigns *mem \from val, indirect: model; + ensures initialization: \initialized(mem); + ensures store_value: *mem == val; +*/ +void __atomic_store_1(__UINT8_T* mem, __UINT8_T val, int model); + +/*@ + requires validity: \valid(mem); + assigns *mem \from val, indirect: model; + ensures initialization: \initialized(mem); + ensures store_value: *mem == val; +*/ +void __atomic_store_2(__UINT16_T* mem, __UINT16_T val, int model); + +/*@ + requires validity: \valid(mem); + assigns *mem \from val, indirect: model; + ensures initialization: \initialized(mem); + ensures store_value: *mem == val; +*/ +void __atomic_store_4(__UINT32_T* mem, __UINT32_T val, int model); + +/*@ + requires validity: \valid(mem); + assigns *mem \from val, indirect: model; + ensures initialization: \initialized(mem); + ensures store_value: *mem == val; +*/ +void __atomic_store_8(__UINT64_T* mem, __UINT64_T val, int model); + +/*@ requires validity: \valid(mem); + requires initialization: \initialized(mem); + assigns *mem \from val, indirect:model; + assigns \result \from *mem, indirect:model; + */ +__UINT8_T __atomic_exchange_1(__UINT8_T* mem, __UINT8_T val, int model); + +/*@ requires validity: \valid(mem); + requires initialization: \initialized(mem); + assigns *mem \from val, indirect:model; + assigns \result \from *mem, indirect:model; + */ +__UINT16_T __atomic_exchange_2(__UINT16_T* mem, __UINT16_T val, int model); + +/*@ requires validity: \valid(mem); + requires initialization: \initialized(mem); + assigns *mem \from val, indirect:model; + assigns \result \from *mem, indirect:model; + */ +__UINT32_T __atomic_exchange_4(__UINT32_T* mem, __UINT32_T val, int model); + +/*@ requires validity: \valid(mem); + requires initialization: \initialized(mem); + assigns *mem \from val, indirect:model; + assigns \result \from *mem, indirect:model; + */ +__UINT64_T __atomic_exchange_8(__UINT64_T* mem, __UINT64_T val, int model); + +/*@ + requires validity: \valid(mem) && \valid(expected); + requires initialization:mem: \initialized(mem); + requires initialization:expected: \initialized(expected); + assigns *mem \from *mem, desired, indirect: *expected, + indirect: success_model, indirect: weak; + assigns *expected \from *expected, *mem, indirect: desired, + indirect: failure_model, indirect: weak; + assigns \result \from indirect: *mem, indirect: *expected; +*/ +_Bool __atomic_compare_exchange_1(__UINT8_T* mem, + __UINT8_T* expected, + __UINT8_T desired, + _Bool weak, + int success_model, + int failure_model); + +/*@ + requires validity: \valid(mem) && \valid(expected); + requires initialization:mem: \initialized(mem); + requires initialization:expected: \initialized(expected); + assigns *mem \from *mem, desired, indirect: *expected, + indirect: success_model, indirect: weak; + assigns *expected \from *expected, *mem, indirect: desired, + indirect: failure_model, indirect: weak; + assigns \result \from indirect: *mem, indirect: *expected; +*/ +_Bool __atomic_compare_exchange_2(__UINT16_T* mem, + __UINT16_T* expected, + __UINT16_T desired, + _Bool weak, + int success_model, + int failure_model); + +/*@ + requires validity: \valid(mem) && \valid(expected); + requires initialization:mem: \initialized(mem); + requires initialization:expected: \initialized(expected); + assigns *mem \from *mem, desired, indirect: *expected, + indirect: success_model, indirect: weak; + assigns *expected \from *expected, *mem, indirect: desired, + indirect: failure_model, indirect: weak; + assigns \result \from indirect: *mem, indirect: *expected; +*/ +_Bool __atomic_compare_exchange_4(__UINT32_T* mem, + __UINT32_T* expected, + __UINT32_T desired, + _Bool weak, + int success_model, + int failure_model); + +/*@ + requires validity: \valid(mem) && \valid(expected); + requires initialization:mem: \initialized(mem); + requires initialization:expected: \initialized(expected); + assigns *mem \from *mem, desired, indirect: *expected, + indirect: success_model, indirect: weak; + assigns *expected \from *expected, *mem, indirect: desired, + indirect: failure_model, indirect: weak; + assigns \result \from indirect: *mem, indirect: *expected; +*/ +_Bool __atomic_compare_exchange_8(__UINT64_T* mem, + __UINT64_T* expected, + __UINT64_T desired, + _Bool weak, + int success_model, + int failure_model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT8_T __atomic_add_fetch_1(__UINT8_T* ptr, __UINT8_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT8_T __atomic_sub_fetch_1(__UINT8_T* ptr, __UINT8_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT8_T __atomic_and_fetch_1(__UINT8_T* ptr, __UINT8_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT8_T __atomic_xor_fetch_1(__UINT8_T* ptr, __UINT8_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT8_T __atomic_or_fetch_1(__UINT8_T* ptr, __UINT8_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT8_T __atomic_nand_fetch_1(__UINT8_T* ptr, __UINT8_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT16_T __atomic_add_fetch_2(__UINT16_T* ptr, __UINT16_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT16_T __atomic_sub_fetch_2(__UINT16_T* ptr, __UINT16_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT16_T __atomic_and_fetch_2(__UINT16_T* ptr, __UINT16_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT16_T __atomic_xor_fetch_2(__UINT16_T* ptr, __UINT16_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT16_T __atomic_or_fetch_2(__UINT16_T* ptr, __UINT16_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT16_T __atomic_nand_fetch_2(__UINT16_T* ptr, __UINT16_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT32_T __atomic_add_fetch_4(__UINT32_T* ptr, __UINT32_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT32_T __atomic_sub_fetch_4(__UINT32_T* ptr, __UINT32_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT32_T __atomic_and_fetch_4(__UINT32_T* ptr, __UINT32_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT32_T __atomic_xor_fetch_4(__UINT32_T* ptr, __UINT32_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT32_T __atomic_or_fetch_4(__UINT32_T* ptr, __UINT32_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT32_T __atomic_nand_fetch_4(__UINT32_T* ptr, __UINT32_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT64_T __atomic_add_fetch_8(__UINT64_T* ptr, __UINT64_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT64_T __atomic_sub_fetch_8(__UINT64_T* ptr, __UINT64_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT64_T __atomic_and_fetch_8(__UINT64_T* ptr, __UINT64_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT64_T __atomic_xor_fetch_8(__UINT64_T* ptr, __UINT64_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT64_T __atomic_or_fetch_8(__UINT64_T* ptr, __UINT64_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT64_T __atomic_nand_fetch_8(__UINT64_T* ptr, __UINT64_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT8_T __atomic_fetch_add_1(__UINT8_T* ptr, __UINT8_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT8_T __atomic_fetch_sub_1(__UINT8_T* ptr, __UINT8_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT8_T __atomic_fetch_and_1(__UINT8_T* ptr, __UINT8_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT8_T __atomic_fetch_xor_1(__UINT8_T* ptr, __UINT8_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT8_T __atomic_fetch_or_1(__UINT8_T* ptr, __UINT8_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT8_T __atomic_fetch_nand_1(__UINT8_T* ptr, __UINT8_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT16_T __atomic_fetch_add_2(__UINT16_T* ptr, __UINT16_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT16_T __atomic_fetch_sub_2(__UINT16_T* ptr, __UINT16_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT16_T __atomic_fetch_and_2(__UINT16_T* ptr, __UINT16_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT16_T __atomic_fetch_xor_2(__UINT16_T* ptr, __UINT16_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT16_T __atomic_fetch_or_2(__UINT16_T* ptr, __UINT16_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT16_T __atomic_fetch_nand_2(__UINT16_T* ptr, __UINT16_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT32_T __atomic_fetch_add_4(__UINT32_T* ptr, __UINT32_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT32_T __atomic_fetch_sub_4(__UINT32_T* ptr, __UINT32_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT32_T __atomic_fetch_and_4(__UINT32_T* ptr, __UINT32_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT32_T __atomic_fetch_xor_4(__UINT32_T* ptr, __UINT32_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT32_T __atomic_fetch_or_4(__UINT32_T* ptr, __UINT32_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT32_T __atomic_fetch_nand_4(__UINT32_T* ptr, __UINT32_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT64_T __atomic_fetch_add_8(__UINT64_T* ptr, __UINT64_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT64_T __atomic_fetch_sub__8(__UINT64_T* ptr, __UINT64_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT64_T __atomic_fetch_and_8(__UINT64_T* ptr, __UINT64_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT64_T __atomic_fetch_xor_8(__UINT64_T* ptr, __UINT64_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT64_T __atomic_fetch_or_8(__UINT64_T* ptr, __UINT64_T val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr \from *ptr, val, indirect: model; +*/ +__UINT64_T __atomic_fetch_nand_8(__UINT64_T* ptr, __UINT64_T val, int model); + +/*@ requires validity: \valid((char*)ptr); + assigns \result \from *((char*)ptr); + assigns *((char*)ptr) \from \nothing; +*/ +_Bool __atomic_test_and_set(void* ptr, int model); + +/*@ requires validity: \valid(ptr); + assigns *ptr \from \nothing; +*/ +void __atomic_clear(_Bool* ptr, int model); + +/*@ assigns \nothing; */ +void __atomic_thread_fence(int model); + +/*@ assigns \nothing; */ +void __atomic_signal_fence(int model); + +/*@ assigns \result \from indirect: size, indirect: ptr; */ +_Bool __atomic_always_lock_free(__SIZE_T size, void* ptr); + +/*@ assigns \result \from indirect: size, indirect: ptr; */ +_Bool __atomic_is_lock_free(__SIZE_T size, void* ptr); // According to the GCC docs // (https://gcc.gnu.org/onlinedocs/gcc/_005f_005fsync-Builtins.html), diff --git a/share/libc/stdio.h b/share/libc/stdio.h index 0b38e916296180787c2b51d7d57bf3555475df2a..eb9282338d5d02a068833c6b89765bf6cac52ff3 100644 --- a/share/libc/stdio.h +++ b/share/libc/stdio.h @@ -217,7 +217,9 @@ extern int sprintf(char * restrict s, extern int sscanf(const char * restrict s, const char * restrict format, ...); -/*@ assigns *stream \from format[..], arg; */ +/*@ assigns *stream \from format[..], indirect: arg; + assigns \result \from indirect:format[..], indirect:arg; +*/ extern int vfprintf(FILE * restrict stream, const char * restrict format, va_list arg); diff --git a/share/libc/time.h b/share/libc/time.h index 217669b778a757c79d5c5e2c1a407a8111bfb8e3..a0958995d762046f0bbb91844369da0b190750b9 100644 --- a/share/libc/time.h +++ b/share/libc/time.h @@ -158,7 +158,9 @@ extern struct tm *localtime(const time_t *timer); requires valid_tm: \valid_read(tm); assigns s[0 .. max-1] \from indirect:max, indirect:format[0..], indirect:*tm; assigns \result \from indirect:max, indirect:format[0..], indirect:*tm; - ensures result_bounded: \result <= max; + ensures result_bounded: \result < max; + ensures result_valid_string: \result > 0 ==> valid_string(s); + ensures result_length: \result > 0 ==> s[\result] == 0; */ extern size_t strftime(char * restrict s, size_t max, diff --git a/src/kernel_internals/typing/cabs2cil.ml b/src/kernel_internals/typing/cabs2cil.ml index b673e39e428a92ac009e9444945c57a289235c6e..f483a6695bbc582f8bf4d4fa5f2b1a74d0d009e4 100644 --- a/src/kernel_internals/typing/cabs2cil.ml +++ b/src/kernel_internals/typing/cabs2cil.ml @@ -6722,6 +6722,43 @@ and doExp local_env "Too few arguments for builtin %s" n; n end + + (* contrarily to the other builtins, __atomic_load and + __atomic_exchange generic versions do not share the same + signature as their specialized counterparts. + Hence, we'd have to change the args list as well. + *) + | "__atomic_load" | "__atomic_exchange" -> + Kernel.error ~once:true ~current:true + "Generic %s is not yet supported" n; + n + (* for store and compare_exchange, the generic version is also + able to handle types of arbitrary size, via an external + function that takes the size of the type as argument as well. + Here too, we'd need to change the args list to support that. + *) + | "__atomic_store" | "__atomic_compare_exchange" + | "__atomic_add_fetch" + | "__atomic_sub_fetch" | "__atomic_and_fetch" + | "__atomic_xor_fetch" | "__atomic_or_fetch" + | "__atomic_nand_fetch" | "__atomic_fetch_add" + | "__atomic_fetch_sub" | "__atomic_fetch_and" + | "__atomic_fetch_xor" | "__atomic_fetch_or" + | "__atomic_fetch_nand" -> + begin + match args with + | a1 :: _ -> + let _,c,_,t = + doExp (no_paren_local_env local_env) CNoConst a1 AType + in + clean_up_chunk_locals c; + let t = typeOf_pointed t in + Format.sprintf "%s_%d" n (bytesSizeOf t) + | [] -> + Kernel.error ~once:true ~current:true + "Too few arguments for builtin %s" n; + n + end | _ -> n in let vi, _ = lookupVar ghost n in diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-40.c b/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-40.c index ff974a15990493fc1ff382718a01ec6baa6ba8f1..3929c369e311404b5864331f7b2cd16d1fa41f72 100644 --- a/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-40.c +++ b/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-40.c @@ -145,7 +145,7 @@ size_t __gen_e_acsl_fread(void * restrict ptr, size_t size, size_t nmemb, __gen_e_acsl_assert_data_2.pred_txt = "(\\let size = sizeof(char) * (((nmemb * size - 1) - 0) + 1);\n size <= 0? 0: size)\n<= 18446744073709551615"; __gen_e_acsl_assert_data_2.file = "FRAMAC_SHARE/libc/stdio.h"; __gen_e_acsl_assert_data_2.fct = "fread"; - __gen_e_acsl_assert_data_2.line = 351; + __gen_e_acsl_assert_data_2.line = 353; __gen_e_acsl_assert_data_2.name = "offset_lesser_or_eq_than_SIZE_MAX"; __e_acsl_assert(__gen_e_acsl_le_2 <= 0,& __gen_e_acsl_assert_data_2); __e_acsl_assert_clean(& __gen_e_acsl_assert_data_2); @@ -176,7 +176,7 @@ size_t __gen_e_acsl_fread(void * restrict ptr, size_t size, size_t nmemb, __gen_e_acsl_assert_data.pred_txt = "\\valid((char *)ptr + (0 .. nmemb * size - 1))"; __gen_e_acsl_assert_data.file = "FRAMAC_SHARE/libc/stdio.h"; __gen_e_acsl_assert_data.fct = "fread"; - __gen_e_acsl_assert_data.line = 351; + __gen_e_acsl_assert_data.line = 353; __gen_e_acsl_assert_data.name = "valid_ptr_block"; __e_acsl_assert(__gen_e_acsl_valid,& __gen_e_acsl_assert_data); __e_acsl_assert_clean(& __gen_e_acsl_assert_data); @@ -195,7 +195,7 @@ size_t __gen_e_acsl_fread(void * restrict ptr, size_t size, size_t nmemb, __gen_e_acsl_assert_data_3.pred_txt = "\\valid(stream)"; __gen_e_acsl_assert_data_3.file = "FRAMAC_SHARE/libc/stdio.h"; __gen_e_acsl_assert_data_3.fct = "fread"; - __gen_e_acsl_assert_data_3.line = 352; + __gen_e_acsl_assert_data_3.line = 354; __gen_e_acsl_assert_data_3.name = "valid_stream"; __e_acsl_assert(__gen_e_acsl_valid_2,& __gen_e_acsl_assert_data_3); __e_acsl_assert_clean(& __gen_e_acsl_assert_data_3); @@ -242,7 +242,7 @@ size_t __gen_e_acsl_fread(void * restrict ptr, size_t size, size_t nmemb, __gen_e_acsl_assert_data_4.pred_txt = "__retres * size <= 18446744073709551615"; __gen_e_acsl_assert_data_4.file = "FRAMAC_SHARE/libc/stdio.h"; __gen_e_acsl_assert_data_4.fct = "fread"; - __gen_e_acsl_assert_data_4.line = 350; + __gen_e_acsl_assert_data_4.line = 352; __gen_e_acsl_assert_data_4.name = "size_lesser_or_eq_than_SIZE_MAX"; __e_acsl_assert(__gen_e_acsl_le_3 <= 0,& __gen_e_acsl_assert_data_4); __e_acsl_assert_clean(& __gen_e_acsl_assert_data_4); @@ -281,7 +281,7 @@ size_t __gen_e_acsl_fread(void * restrict ptr, size_t size, size_t nmemb, __gen_e_acsl_assert_data_5.pred_txt = "\\result <= \\old(nmemb)"; __gen_e_acsl_assert_data_5.file = "FRAMAC_SHARE/libc/stdio.h"; __gen_e_acsl_assert_data_5.fct = "fread"; - __gen_e_acsl_assert_data_5.line = 356; + __gen_e_acsl_assert_data_5.line = 358; __gen_e_acsl_assert_data_5.name = "size_read"; __e_acsl_assert(__retres <= __gen_e_acsl_at_3, & __gen_e_acsl_assert_data_5); @@ -338,7 +338,7 @@ size_t __gen_e_acsl_fread(void * restrict ptr, size_t size, size_t nmemb, __gen_e_acsl_assert_data_7.pred_txt = "(\\let size = sizeof(char) * (((\\result * \\old(size) - 1) - 0) + 1);\n size <= 0? 0: size)\n<= 18446744073709551615"; __gen_e_acsl_assert_data_7.file = "FRAMAC_SHARE/libc/stdio.h"; __gen_e_acsl_assert_data_7.fct = "fread"; - __gen_e_acsl_assert_data_7.line = 357; + __gen_e_acsl_assert_data_7.line = 359; __gen_e_acsl_assert_data_7.name = "offset_lesser_or_eq_than_SIZE_MAX"; __e_acsl_assert(__gen_e_acsl_le_5 <= 0,& __gen_e_acsl_assert_data_7); __e_acsl_assert_clean(& __gen_e_acsl_assert_data_7); @@ -372,7 +372,7 @@ size_t __gen_e_acsl_fread(void * restrict ptr, size_t size, size_t nmemb, __gen_e_acsl_assert_data_6.pred_txt = "\\initialized((char *)\\old(ptr) + (0 .. \\result * \\old(size) - 1))"; __gen_e_acsl_assert_data_6.file = "FRAMAC_SHARE/libc/stdio.h"; __gen_e_acsl_assert_data_6.fct = "fread"; - __gen_e_acsl_assert_data_6.line = 357; + __gen_e_acsl_assert_data_6.line = 359; __gen_e_acsl_assert_data_6.name = "initialization"; __e_acsl_assert(__gen_e_acsl_initialized,& __gen_e_acsl_assert_data_6); __e_acsl_assert_clean(& __gen_e_acsl_assert_data_6); diff --git a/src/plugins/e-acsl/tests/bts/oracle/issue-eacsl-40.0.res.oracle b/src/plugins/e-acsl/tests/bts/oracle/issue-eacsl-40.0.res.oracle index 42cba99e4ca3d95a97530e0abced583e29429625..184cc7c43cb0d75f71518fbf5bb280f1f106c08c 100644 --- a/src/plugins/e-acsl/tests/bts/oracle/issue-eacsl-40.0.res.oracle +++ b/src/plugins/e-acsl/tests/bts/oracle/issue-eacsl-40.0.res.oracle @@ -5,7 +5,7 @@ [e-acsl] Warning: annotating undefined function `fopen': the generated program may miss memory instrumentation if there are memory-related annotations. -[e-acsl] FRAMAC_SHARE/libc/stdio.h:350: Warning: +[e-acsl] FRAMAC_SHARE/libc/stdio.h:352: Warning: E-ACSL construct `assigns clause in behavior' is not yet supported. Ignoring annotation. [e-acsl] FRAMAC_SHARE/libc/stdio.h:150: Warning: @@ -30,51 +30,51 @@ 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/stdio.h:351: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:353: Warning: function __e_acsl_assert, behavior blocking: precondition got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:351: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:353: Warning: function __e_acsl_assert_register_int: precondition data->values == \null || \valid(data->values) got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:351: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:353: Warning: function __e_acsl_assert_register_ulong: precondition data->values == \null || \valid(data->values) got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:351: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:353: Warning: function __e_acsl_assert_register_ulong: precondition data->values == \null || \valid(data->values) got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:351: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:353: Warning: function __e_acsl_assert_register_mpz: precondition data->values == \null || \valid(data->values) got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:352: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:354: Warning: function __e_acsl_assert_register_ulong: precondition data->values == \null || \valid(data->values) got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:352: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:354: Warning: function __e_acsl_assert_register_int: precondition data->values == \null || \valid(data->values) got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:352: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:354: Warning: function __e_acsl_assert, behavior blocking: precondition got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:350: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:352: Warning: function __e_acsl_assert_register_ulong: precondition data->values == \null || \valid(data->values) got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:350: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:352: Warning: function __e_acsl_assert, behavior blocking: precondition got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:356: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:358: Warning: function __e_acsl_assert_register_ulong: precondition data->values == \null || \valid(data->values) got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:357: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:359: Warning: function __e_acsl_assert, behavior blocking: precondition got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:357: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:359: Warning: function __e_acsl_assert_register_int: precondition data->values == \null || \valid(data->values) got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:357: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:359: Warning: function __e_acsl_assert_register_ulong: precondition data->values == \null || \valid(data->values) got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:357: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:359: Warning: function __e_acsl_assert_register_mpz: precondition data->values == \null || \valid(data->values) got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:357: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:359: Warning: function __e_acsl_assert_register_mpz: precondition data->values == \null || \valid(data->values) got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:357: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:359: Warning: function __gen_e_acsl_fread: postcondition 'initialization' got status unknown. [eva:alarm] FRAMAC_SHARE/libc/stdio.h:120: Warning: function __e_acsl_assert_register_ulong: precondition data->values == \null || 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 1dfe0498bed0112fac1d2f66b88acc3283fc62d6..2c771c66bd1bdcf46f73936f65aea84f732108ff 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 @@ -45,13 +45,13 @@ E-ACSL construct `abnormal termination case in behavior' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/stdio.h:484: Warning: +[e-acsl] FRAMAC_SHARE/libc/stdio.h:486: Warning: no assigns clause generated for function valid_read_string because pointers as arguments is not yet supported [e-acsl] FRAMAC_SHARE/libc/__fc_string_axiomatic.h:281: Warning: E-ACSL construct `logic functions or predicates performing read accesses' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/stdio.h:483: Warning: +[e-acsl] FRAMAC_SHARE/libc/stdio.h:485: Warning: E-ACSL construct `assigns clause in behavior' is not yet supported. Ignoring annotation. [e-acsl] FRAMAC_SHARE/libc/pthread.h:312: Warning: 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 1dfe0498bed0112fac1d2f66b88acc3283fc62d6..2c771c66bd1bdcf46f73936f65aea84f732108ff 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 @@ -45,13 +45,13 @@ E-ACSL construct `abnormal termination case in behavior' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/stdio.h:484: Warning: +[e-acsl] FRAMAC_SHARE/libc/stdio.h:486: Warning: no assigns clause generated for function valid_read_string because pointers as arguments is not yet supported [e-acsl] FRAMAC_SHARE/libc/__fc_string_axiomatic.h:281: Warning: E-ACSL construct `logic functions or predicates performing read accesses' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/stdio.h:483: Warning: +[e-acsl] FRAMAC_SHARE/libc/stdio.h:485: Warning: E-ACSL construct `assigns clause in behavior' is not yet supported. Ignoring annotation. [e-acsl] FRAMAC_SHARE/libc/pthread.h:312: Warning: diff --git a/src/plugins/e-acsl/tests/libc/oracle/file.res.oracle b/src/plugins/e-acsl/tests/libc/oracle/file.res.oracle index 7b2ac7b3ecfaaee74530b636fd6fe37f6ab863e8..8dca9f2bac2c97a2596b057ccf813cdcda652172 100644 --- a/src/plugins/e-acsl/tests/libc/oracle/file.res.oracle +++ b/src/plugins/e-acsl/tests/libc/oracle/file.res.oracle @@ -5,7 +5,7 @@ [e-acsl] Warning: annotating undefined function `fopen': the generated program may miss memory instrumentation if there are memory-related annotations. -[e-acsl] FRAMAC_SHARE/libc/stdio.h:350: Warning: +[e-acsl] FRAMAC_SHARE/libc/stdio.h:352: Warning: E-ACSL construct `assigns clause in behavior' is not yet supported. Ignoring annotation. [e-acsl] FRAMAC_SHARE/libc/stdio.h:150: Warning: @@ -32,51 +32,51 @@ [e-acsl] translation done in project "e-acsl". [eva:alarm] file.c:12: Warning: function __gen_e_acsl_fread: precondition 'valid_stream' got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:351: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:353: Warning: function __e_acsl_assert, behavior blocking: precondition got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:351: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:353: Warning: function __e_acsl_assert_register_int: precondition data->values == \null || \valid(data->values) got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:351: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:353: Warning: function __e_acsl_assert_register_ulong: precondition data->values == \null || \valid(data->values) got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:351: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:353: Warning: function __e_acsl_assert_register_ulong: precondition data->values == \null || \valid(data->values) got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:351: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:353: Warning: function __e_acsl_assert_register_mpz: precondition data->values == \null || \valid(data->values) got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:352: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:354: Warning: function __e_acsl_assert_register_ulong: precondition data->values == \null || \valid(data->values) got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:352: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:354: Warning: function __e_acsl_assert_register_int: precondition data->values == \null || \valid(data->values) got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:352: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:354: Warning: function __e_acsl_assert, behavior blocking: precondition got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:350: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:352: Warning: function __e_acsl_assert_register_ulong: precondition data->values == \null || \valid(data->values) got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:350: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:352: Warning: function __e_acsl_assert, behavior blocking: precondition got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:356: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:358: Warning: function __e_acsl_assert_register_ulong: precondition data->values == \null || \valid(data->values) got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:357: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:359: Warning: function __e_acsl_assert, behavior blocking: precondition got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:357: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:359: Warning: function __e_acsl_assert_register_int: precondition data->values == \null || \valid(data->values) got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:357: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:359: Warning: function __e_acsl_assert_register_ulong: precondition data->values == \null || \valid(data->values) got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:357: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:359: Warning: function __e_acsl_assert_register_mpz: precondition data->values == \null || \valid(data->values) got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:357: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:359: Warning: function __e_acsl_assert_register_mpz: precondition data->values == \null || \valid(data->values) got status unknown. -[eva:alarm] FRAMAC_SHARE/libc/stdio.h:357: Warning: +[eva:alarm] FRAMAC_SHARE/libc/stdio.h:359: Warning: function __gen_e_acsl_fread: postcondition 'initialization' got status unknown. [eva:alarm] file.c:13: Warning: function __e_acsl_assert_register_ulong: precondition data->values == \null || diff --git a/src/plugins/e-acsl/tests/libc/oracle/gen_file.c b/src/plugins/e-acsl/tests/libc/oracle/gen_file.c index 7f8b5b42d2cca3a1925dcd51153a2e8dbaf72484..c71892de48014543d30c8555794adacf3a65e450 100644 --- a/src/plugins/e-acsl/tests/libc/oracle/gen_file.c +++ b/src/plugins/e-acsl/tests/libc/oracle/gen_file.c @@ -145,7 +145,7 @@ size_t __gen_e_acsl_fread(void * restrict ptr, size_t size, size_t nmemb, __gen_e_acsl_assert_data_2.pred_txt = "(\\let size = sizeof(char) * (((nmemb * size - 1) - 0) + 1);\n size <= 0? 0: size)\n<= 18446744073709551615"; __gen_e_acsl_assert_data_2.file = "FRAMAC_SHARE/libc/stdio.h"; __gen_e_acsl_assert_data_2.fct = "fread"; - __gen_e_acsl_assert_data_2.line = 351; + __gen_e_acsl_assert_data_2.line = 353; __gen_e_acsl_assert_data_2.name = "offset_lesser_or_eq_than_SIZE_MAX"; __e_acsl_assert(__gen_e_acsl_le_2 <= 0,& __gen_e_acsl_assert_data_2); __e_acsl_assert_clean(& __gen_e_acsl_assert_data_2); @@ -176,7 +176,7 @@ size_t __gen_e_acsl_fread(void * restrict ptr, size_t size, size_t nmemb, __gen_e_acsl_assert_data.pred_txt = "\\valid((char *)ptr + (0 .. nmemb * size - 1))"; __gen_e_acsl_assert_data.file = "FRAMAC_SHARE/libc/stdio.h"; __gen_e_acsl_assert_data.fct = "fread"; - __gen_e_acsl_assert_data.line = 351; + __gen_e_acsl_assert_data.line = 353; __gen_e_acsl_assert_data.name = "valid_ptr_block"; __e_acsl_assert(__gen_e_acsl_valid,& __gen_e_acsl_assert_data); __e_acsl_assert_clean(& __gen_e_acsl_assert_data); @@ -195,7 +195,7 @@ size_t __gen_e_acsl_fread(void * restrict ptr, size_t size, size_t nmemb, __gen_e_acsl_assert_data_3.pred_txt = "\\valid(stream)"; __gen_e_acsl_assert_data_3.file = "FRAMAC_SHARE/libc/stdio.h"; __gen_e_acsl_assert_data_3.fct = "fread"; - __gen_e_acsl_assert_data_3.line = 352; + __gen_e_acsl_assert_data_3.line = 354; __gen_e_acsl_assert_data_3.name = "valid_stream"; __e_acsl_assert(__gen_e_acsl_valid_2,& __gen_e_acsl_assert_data_3); __e_acsl_assert_clean(& __gen_e_acsl_assert_data_3); @@ -242,7 +242,7 @@ size_t __gen_e_acsl_fread(void * restrict ptr, size_t size, size_t nmemb, __gen_e_acsl_assert_data_4.pred_txt = "__retres * size <= 18446744073709551615"; __gen_e_acsl_assert_data_4.file = "FRAMAC_SHARE/libc/stdio.h"; __gen_e_acsl_assert_data_4.fct = "fread"; - __gen_e_acsl_assert_data_4.line = 350; + __gen_e_acsl_assert_data_4.line = 352; __gen_e_acsl_assert_data_4.name = "size_lesser_or_eq_than_SIZE_MAX"; __e_acsl_assert(__gen_e_acsl_le_3 <= 0,& __gen_e_acsl_assert_data_4); __e_acsl_assert_clean(& __gen_e_acsl_assert_data_4); @@ -281,7 +281,7 @@ size_t __gen_e_acsl_fread(void * restrict ptr, size_t size, size_t nmemb, __gen_e_acsl_assert_data_5.pred_txt = "\\result <= \\old(nmemb)"; __gen_e_acsl_assert_data_5.file = "FRAMAC_SHARE/libc/stdio.h"; __gen_e_acsl_assert_data_5.fct = "fread"; - __gen_e_acsl_assert_data_5.line = 356; + __gen_e_acsl_assert_data_5.line = 358; __gen_e_acsl_assert_data_5.name = "size_read"; __e_acsl_assert(__retres <= __gen_e_acsl_at_3, & __gen_e_acsl_assert_data_5); @@ -338,7 +338,7 @@ size_t __gen_e_acsl_fread(void * restrict ptr, size_t size, size_t nmemb, __gen_e_acsl_assert_data_7.pred_txt = "(\\let size = sizeof(char) * (((\\result * \\old(size) - 1) - 0) + 1);\n size <= 0? 0: size)\n<= 18446744073709551615"; __gen_e_acsl_assert_data_7.file = "FRAMAC_SHARE/libc/stdio.h"; __gen_e_acsl_assert_data_7.fct = "fread"; - __gen_e_acsl_assert_data_7.line = 357; + __gen_e_acsl_assert_data_7.line = 359; __gen_e_acsl_assert_data_7.name = "offset_lesser_or_eq_than_SIZE_MAX"; __e_acsl_assert(__gen_e_acsl_le_5 <= 0,& __gen_e_acsl_assert_data_7); __e_acsl_assert_clean(& __gen_e_acsl_assert_data_7); @@ -372,7 +372,7 @@ size_t __gen_e_acsl_fread(void * restrict ptr, size_t size, size_t nmemb, __gen_e_acsl_assert_data_6.pred_txt = "\\initialized((char *)\\old(ptr) + (0 .. \\result * \\old(size) - 1))"; __gen_e_acsl_assert_data_6.file = "FRAMAC_SHARE/libc/stdio.h"; __gen_e_acsl_assert_data_6.fct = "fread"; - __gen_e_acsl_assert_data_6.line = 357; + __gen_e_acsl_assert_data_6.line = 359; __gen_e_acsl_assert_data_6.name = "initialization"; __e_acsl_assert(__gen_e_acsl_initialized,& __gen_e_acsl_assert_data_6); __e_acsl_assert_clean(& __gen_e_acsl_assert_data_6); diff --git a/src/plugins/variadic/tests/erroneous/oracle/printf.res.oracle b/src/plugins/variadic/tests/erroneous/oracle/printf.res.oracle index d29a81d76920c34343277a707a916abced463703..709eade7c321855ea7a2963541cef50217e5691a 100644 --- a/src/plugins/variadic/tests/erroneous/oracle/printf.res.oracle +++ b/src/plugins/variadic/tests/erroneous/oracle/printf.res.oracle @@ -12,9 +12,9 @@ Declaration of variadic function sprintf. [variadic] FRAMAC_SHARE/libc/stdio.h:217: Declaration of variadic function sscanf. -[variadic] FRAMAC_SHARE/libc/stdio.h:548: +[variadic] FRAMAC_SHARE/libc/stdio.h:550: Declaration of variadic function dprintf. -[variadic] FRAMAC_SHARE/libc/stdio.h:608: +[variadic] FRAMAC_SHARE/libc/stdio.h:610: Declaration of variadic function asprintf. [variadic:libc:format] printf.c:8: Warning: Multiple usage of flag '-'. [variadic:libc:format] 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 1dbb2458c3ded4562958a33ca52c675718794048..7ee761f24d504c42269186b8ff7fffa29191c376 100644 --- a/src/plugins/variadic/tests/known/oracle/printf.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/printf.res.oracle @@ -24,9 +24,9 @@ Declaration of variadic function sprintf. [variadic] FRAMAC_SHARE/libc/stdio.h:217: Declaration of variadic function sscanf. -[variadic] FRAMAC_SHARE/libc/stdio.h:548: +[variadic] FRAMAC_SHARE/libc/stdio.h:550: Declaration of variadic function dprintf. -[variadic] FRAMAC_SHARE/libc/stdio.h:608: +[variadic] FRAMAC_SHARE/libc/stdio.h:610: Declaration of variadic function asprintf. [variadic] 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 bea7ff5f3c9a6b7d349387951d468a7bdde94cd7..80bb3f1eae266b322096f78f4f179906b72f6833 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,9 +12,9 @@ Declaration of variadic function sprintf. [variadic] FRAMAC_SHARE/libc/stdio.h:217: Declaration of variadic function sscanf. -[variadic] FRAMAC_SHARE/libc/stdio.h:548: +[variadic] FRAMAC_SHARE/libc/stdio.h:550: Declaration of variadic function dprintf. -[variadic] FRAMAC_SHARE/libc/stdio.h:608: +[variadic] FRAMAC_SHARE/libc/stdio.h:610: Declaration of variadic function asprintf. [variadic] printf_garbled_mix.c:7: 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_arity.res.oracle b/src/plugins/variadic/tests/known/oracle/printf_wrong_arity.res.oracle index 14583255222c01351a04906e414a25235e3cc49d..0769b43d1d763736adff4dc7b500113f45e6e56f 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,9 +12,9 @@ Declaration of variadic function sprintf. [variadic] FRAMAC_SHARE/libc/stdio.h:217: Declaration of variadic function sscanf. -[variadic] FRAMAC_SHARE/libc/stdio.h:548: +[variadic] FRAMAC_SHARE/libc/stdio.h:550: Declaration of variadic function dprintf. -[variadic] FRAMAC_SHARE/libc/stdio.h:608: +[variadic] FRAMAC_SHARE/libc/stdio.h:610: Declaration of variadic function asprintf. [variadic] 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 71e13f3012fb292ad49009070d7409db1037a452..61261c69b7f3e3af3676c8f2ecadcda889a2b9fa 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,9 +12,9 @@ Declaration of variadic function sprintf. [variadic] FRAMAC_SHARE/libc/stdio.h:217: Declaration of variadic function sscanf. -[variadic] FRAMAC_SHARE/libc/stdio.h:548: +[variadic] FRAMAC_SHARE/libc/stdio.h:550: Declaration of variadic function dprintf. -[variadic] FRAMAC_SHARE/libc/stdio.h:608: +[variadic] FRAMAC_SHARE/libc/stdio.h:610: Declaration of variadic function asprintf. [variadic] 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 2e9b9b017a577139a5a2b11eba96fa49ee979bcd..3b67607452bdcfe8fa313f2f737c266505abb507 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,9 +12,9 @@ Declaration of variadic function sprintf. [variadic] FRAMAC_SHARE/libc/stdio.h:217: Declaration of variadic function sscanf. -[variadic] FRAMAC_SHARE/libc/stdio.h:548: +[variadic] FRAMAC_SHARE/libc/stdio.h:550: Declaration of variadic function dprintf. -[variadic] FRAMAC_SHARE/libc/stdio.h:608: +[variadic] FRAMAC_SHARE/libc/stdio.h:610: Declaration of variadic function asprintf. [variadic] printf_wrong_types.c:18: Translating call to printf to a call to the specialized version printf_va_1. @@ -426,9 +426,9 @@ 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:548: +[variadic] FRAMAC_SHARE/libc/stdio.h:550: Declaration of variadic function dprintf. -[variadic] FRAMAC_SHARE/libc/stdio.h:608: +[variadic] FRAMAC_SHARE/libc/stdio.h:610: Declaration of variadic function asprintf. [variadic] 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 15799fe60f4ea379d2ee0a853fa237af3d5204c3..8bc1110db48496516154b355e5757c58286bddd3 100644 --- a/src/plugins/variadic/tests/known/oracle/scanf.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/scanf.res.oracle @@ -12,9 +12,9 @@ Declaration of variadic function sprintf. [variadic] FRAMAC_SHARE/libc/stdio.h:217: Declaration of variadic function sscanf. -[variadic] FRAMAC_SHARE/libc/stdio.h:548: +[variadic] FRAMAC_SHARE/libc/stdio.h:550: Declaration of variadic function dprintf. -[variadic] FRAMAC_SHARE/libc/stdio.h:608: +[variadic] FRAMAC_SHARE/libc/stdio.h:610: Declaration of variadic function asprintf. [variadic] 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 dd7a3d80783ad909b386a7c1f57a70059f6ebb6a..577e5cfa4edd4d40c5e45b922a44073c5bb0bc97 100644 --- a/src/plugins/variadic/tests/known/oracle/scanf_loop.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/scanf_loop.res.oracle @@ -12,9 +12,9 @@ Declaration of variadic function sprintf. [variadic] FRAMAC_SHARE/libc/stdio.h:217: Declaration of variadic function sscanf. -[variadic] FRAMAC_SHARE/libc/stdio.h:548: +[variadic] FRAMAC_SHARE/libc/stdio.h:550: Declaration of variadic function dprintf. -[variadic] FRAMAC_SHARE/libc/stdio.h:608: +[variadic] FRAMAC_SHARE/libc/stdio.h:610: Declaration of variadic function asprintf. [variadic] 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 c225e1ea1605c86556bbfd799bf3c74b0e057015..292f987963aa8135de346c2d8673b489d1ecf862 100644 --- a/src/plugins/variadic/tests/known/oracle/scanf_wrong.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/scanf_wrong.res.oracle @@ -12,9 +12,9 @@ Declaration of variadic function sprintf. [variadic] FRAMAC_SHARE/libc/stdio.h:217: Declaration of variadic function sscanf. -[variadic] FRAMAC_SHARE/libc/stdio.h:548: +[variadic] FRAMAC_SHARE/libc/stdio.h:550: Declaration of variadic function dprintf. -[variadic] FRAMAC_SHARE/libc/stdio.h:608: +[variadic] FRAMAC_SHARE/libc/stdio.h:610: Declaration of variadic function asprintf. [variadic] 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 4e8e4cf6cbcbe1ba07bfbe7c83d84bf3e4bc27ff..c96e7311094d281800f6f1e454cf8adf89ff2116 100644 --- a/src/plugins/variadic/tests/known/oracle/snprintf.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/snprintf.res.oracle @@ -12,9 +12,9 @@ Declaration of variadic function sprintf. [variadic] FRAMAC_SHARE/libc/stdio.h:217: Declaration of variadic function sscanf. -[variadic] FRAMAC_SHARE/libc/stdio.h:548: +[variadic] FRAMAC_SHARE/libc/stdio.h:550: Declaration of variadic function dprintf. -[variadic] FRAMAC_SHARE/libc/stdio.h:608: +[variadic] FRAMAC_SHARE/libc/stdio.h:610: Declaration of variadic function asprintf. [variadic] 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 6b7bc896adcb1f582e52461164a3e7580c5b0282..ed6948688d7bbde2d6b07be63fbc3c1cea3bc45e 100644 --- a/src/plugins/variadic/tests/known/oracle/stdio_print.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/stdio_print.res.oracle @@ -12,9 +12,9 @@ Declaration of variadic function sprintf. [variadic] FRAMAC_SHARE/libc/stdio.h:217: Declaration of variadic function sscanf. -[variadic] FRAMAC_SHARE/libc/stdio.h:548: +[variadic] FRAMAC_SHARE/libc/stdio.h:550: Declaration of variadic function dprintf. -[variadic] FRAMAC_SHARE/libc/stdio.h:608: +[variadic] FRAMAC_SHARE/libc/stdio.h:610: Declaration of variadic function asprintf. [variadic] stdio_print.c:9: Warning: Call to function fprintf with non-static format argument: assuming that parameters are coherent with the format, and that no %n specifiers are present in the actual string. 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 7b439fc5fa64b23f243297110f974949934438df..02012fe664a97801649e27471cfecfacf25194db 100644 --- a/src/plugins/variadic/tests/known/oracle/stdio_scan.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/stdio_scan.res.oracle @@ -12,9 +12,9 @@ Declaration of variadic function sprintf. [variadic] FRAMAC_SHARE/libc/stdio.h:217: Declaration of variadic function sscanf. -[variadic] FRAMAC_SHARE/libc/stdio.h:548: +[variadic] FRAMAC_SHARE/libc/stdio.h:550: Declaration of variadic function dprintf. -[variadic] FRAMAC_SHARE/libc/stdio.h:608: +[variadic] FRAMAC_SHARE/libc/stdio.h:610: Declaration of variadic function asprintf. [variadic] stdio_scan.c:10: Warning: Call to function fscanf with non-static format argument: assuming that parameters are coherent with the format, and that no %n specifiers are present in the actual string. diff --git a/src/plugins/variadic/tests/known/oracle/swprintf.res.oracle b/src/plugins/variadic/tests/known/oracle/swprintf.res.oracle index 4976f7d14946dfc6267dd2bf9e232e6baf329d19..c31c436e505d57cd2728188cdb8bad388f31249d 100644 --- a/src/plugins/variadic/tests/known/oracle/swprintf.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/swprintf.res.oracle @@ -24,9 +24,9 @@ Declaration of variadic function sprintf. [variadic] FRAMAC_SHARE/libc/stdio.h:217: Declaration of variadic function sscanf. -[variadic] FRAMAC_SHARE/libc/stdio.h:548: +[variadic] FRAMAC_SHARE/libc/stdio.h:550: Declaration of variadic function dprintf. -[variadic] FRAMAC_SHARE/libc/stdio.h:608: +[variadic] FRAMAC_SHARE/libc/stdio.h:610: Declaration of variadic function asprintf. [variadic] 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 64c5c7034588d61edc26dc55f786fe160552a208..f1a366040cbd837b60f664d8e632a2e5128fd36d 100644 --- a/src/plugins/variadic/tests/known/oracle/wchar.res.oracle +++ b/src/plugins/variadic/tests/known/oracle/wchar.res.oracle @@ -24,9 +24,9 @@ Declaration of variadic function sprintf. [variadic] FRAMAC_SHARE/libc/stdio.h:217: Declaration of variadic function sscanf. -[variadic] FRAMAC_SHARE/libc/stdio.h:548: +[variadic] FRAMAC_SHARE/libc/stdio.h:550: Declaration of variadic function dprintf. -[variadic] FRAMAC_SHARE/libc/stdio.h:608: +[variadic] FRAMAC_SHARE/libc/stdio.h:610: Declaration of variadic function asprintf. [variadic] 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 6fcda71f59aca61888f5bbc6424bb9b961d628ea..2b84b5e6d38b4bc9695b2eac24820d8a7b12bfde 100644 --- a/tests/idct/oracle/ieee_1180_1990.res.oracle +++ b/tests/idct/oracle/ieee_1180_1990.res.oracle @@ -1337,10 +1337,14 @@ -------------------------------------------------------------------------------- [ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 220) - assigns *stream; + assigns *stream, \result; Unverifiable but considered Valid. [ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 220) - assigns *stream \from *(format + (..)), arg; + assigns *stream \from *(format + (..)), (indirect: arg); + Unverifiable but considered Valid. +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 221) + assigns \result + \from (indirect: *(format + (..))), (indirect: arg); Unverifiable but considered Valid. [ Valid ] Default behavior default behavior @@ -1350,10 +1354,10 @@ --- Properties of Function 'vfscanf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 225) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 227) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 225) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 227) assigns *stream \from *(format + (..)), *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1364,10 +1368,10 @@ --- Properties of Function 'vprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 231) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 233) assigns *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 231) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 233) assigns *__fc_stdout \from arg; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1378,10 +1382,10 @@ --- Properties of Function 'vscanf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 235) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 237) assigns *__fc_stdin; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 235) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 237) assigns *__fc_stdin \from *(format + (..)); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1392,10 +1396,10 @@ --- Properties of Function 'vsnprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 240) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 242) assigns *(s + (0 .. n - 1)); Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 240) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 242) assigns *(s + (0 .. n - 1)) \from *(format + (..)), arg; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1406,10 +1410,10 @@ --- Properties of Function 'vsprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 246) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 248) assigns *(s + (0 ..)); Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 246) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 248) assigns *(s + (0 ..)) \from *(format + (..)), arg; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1424,13 +1428,13 @@ ensures result_uchar_or_eof: (0 ≤ \result ≤ 255) ∨ \result ≡ -1 Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 259) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 261) assigns *stream, \result; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 259) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 261) assigns *stream \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 260) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 262) assigns \result \from (indirect: *stream); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1455,14 +1459,14 @@ terminated_string_on_success: \result ≢ \null ⇒ valid_string(\old(s)) Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 268) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 270) assigns *(s + (0 .. size - 1)), \result; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 268) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 270) assigns *(s + (0 .. size - 1)) \from (indirect: size), (indirect: *stream); Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 269) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 271) assigns \result \from s, (indirect: size), (indirect: *stream); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1473,13 +1477,13 @@ --- Properties of Function 'fputc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 282) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 284) assigns *stream, \result; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 282) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 284) assigns *stream \from c, *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 283) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 285) assigns \result \from (indirect: *stream); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1490,13 +1494,13 @@ --- Properties of Function 'fputs' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 289) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 291) assigns *stream, \result; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 289) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 291) assigns *stream \from *(s + (0 .. strlen{Old}(s))), *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 290) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 292) assigns \result \from (indirect: *(s + (0 .. strlen{Old}(s)))), (indirect: *stream); @@ -1509,13 +1513,13 @@ --- Properties of Function 'getc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 297) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 299) assigns \result, *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 297) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 299) assigns \result \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 297) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 299) assigns *stream \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1526,13 +1530,13 @@ --- Properties of Function 'getchar' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 302) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 304) assigns \result, *__fc_stdin; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 302) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 304) assigns \result \from *__fc_stdin; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 302) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 304) assigns *__fc_stdin \from *__fc_stdin; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1547,16 +1551,16 @@ ensures result_null_or_same: \result ≡ \old(s) ∨ \result ≡ \null Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 315) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 317) assigns *(s + (0 .. gets_length{Old})), \result, *__fc_stdin; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 315) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 317) assigns *(s + (0 .. gets_length{Old})) \from *__fc_stdin; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 316) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 318) assigns \result \from s, *__fc_stdin; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 317) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 319) assigns *__fc_stdin \from *__fc_stdin; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1567,13 +1571,13 @@ --- Properties of Function 'putc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 324) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 326) assigns *stream, \result; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 324) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 326) assigns *stream \from c, *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 325) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 327) assigns \result \from (indirect: *stream); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1584,13 +1588,13 @@ --- Properties of Function 'putchar' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 330) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 332) assigns *__fc_stdout, \result; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 330) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 332) assigns *__fc_stdout \from c, *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 331) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 333) assigns \result \from (indirect: *__fc_stdout); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1601,14 +1605,14 @@ --- Properties of Function 'puts' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 337) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 339) assigns *__fc_stdout, \result; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 337) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 339) assigns *__fc_stdout \from *(s + (0 .. strlen{Old}(s))), *__fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 338) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 340) assigns \result \from (indirect: *(s + (0 .. strlen{Old}(s)))), (indirect: *__fc_stdout); @@ -1625,13 +1629,13 @@ ensures result_ok_or_error: \result ≡ \old(c) ∨ \result ≡ -1 Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 344) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 346) assigns *stream, \result; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 344) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 346) assigns *stream \from (indirect: c); Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 345) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 347) assigns \result \from (indirect: c), (indirect: *stream); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1651,19 +1655,19 @@ \initialized((char *)\old(ptr) + (0 .. \result * \old(size) - 1)) Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 353) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 355) assigns *((char *)ptr + (0 .. nmemb * size - 1)), *stream, \result; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 353) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 355) assigns *((char *)ptr + (0 .. nmemb * size - 1)) \from (indirect: size), (indirect: nmemb), (indirect: *stream); Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 353) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 355) assigns *stream \from (indirect: size), (indirect: nmemb), (indirect: *stream); Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 355) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 357) assigns \result \from size, (indirect: *stream); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1677,14 +1681,14 @@ [ Extern ] Post-condition 'size_written' ensures size_written: \result ≤ \old(nmemb) Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 366) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 368) assigns *stream, \result; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 366) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 368) assigns *stream \from (indirect: *((char *)ptr + (0 .. nmemb * size - 1))); Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 366) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 368) assigns \result \from (indirect: *((char *)ptr + (0 .. nmemb * size - 1))); Unverifiable but considered Valid. @@ -1699,13 +1703,13 @@ [ Extern ] Post-condition 'initialization,pos' ensures initialization: pos: \initialized(\old(pos)) Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 377) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 379) assigns \result, *pos; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 377) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 379) assigns \result \from (indirect: *stream); Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 377) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 379) assigns *pos \from (indirect: *stream); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1721,19 +1725,19 @@ errno_set: __fc_errno ∈ {11, 9, 27, 4, 22, 5, 28, 75, 32, 29, 6} Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 386) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 388) assigns *stream, \result, __fc_errno; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 386) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 388) assigns *stream \from *stream, (indirect: offset), (indirect: whence); Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 387) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 389) assigns \result \from (indirect: *stream), (indirect: offset), (indirect: whence); Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 387) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 389) assigns __fc_errno \from (indirect: *stream), (indirect: offset), (indirect: whence); @@ -1751,19 +1755,19 @@ errno_set: __fc_errno ∈ {11, 9, 27, 4, 22, 5, 28, 75, 32, 29, 6} Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 397) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 399) assigns *stream, \result, __fc_errno; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 397) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 399) assigns *stream \from *stream, (indirect: offset), (indirect: whence); Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 398) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 400) assigns \result \from (indirect: *stream), (indirect: offset), (indirect: whence); Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 398) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 400) assigns __fc_errno \from (indirect: *stream), (indirect: offset), (indirect: whence); @@ -1780,16 +1784,16 @@ ensures errno_set: __fc_errno ∈ {11, 9, 27, 4, 5, 28, 32, 29, 6} Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 409) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 411) assigns *stream, \result, __fc_errno; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 409) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 411) assigns *stream \from *pos; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 410) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 412) assigns \result \from (indirect: *stream), (indirect: *pos); Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 411) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 413) assigns __fc_errno \from __fc_errno, (indirect: *stream), (indirect: *pos); Unverifiable but considered Valid. @@ -1810,13 +1814,13 @@ [ Extern ] Post-condition 'errno_set' ensures errno_set: __fc_errno ∈ {9, 75, 29} Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 419) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 421) assigns \result, __fc_errno; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 419) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 421) assigns \result \from (indirect: *stream); Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 419) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 421) assigns __fc_errno \from (indirect: *stream); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1836,13 +1840,13 @@ [ Extern ] Post-condition 'errno_set' ensures errno_set: __fc_errno ∈ {9, 75, 29} Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 428) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 430) assigns \result, __fc_errno; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 428) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 430) assigns \result \from (indirect: *stream); Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 428) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 430) assigns __fc_errno \from (indirect: *stream); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1853,10 +1857,10 @@ --- Properties of Function 'rewind' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 437) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 439) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 437) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 439) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1867,10 +1871,10 @@ --- Properties of Function 'clearerr' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 443) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 445) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 443) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 445) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1884,7 +1888,7 @@ [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 449) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 451) assigns \result \from (indirect: *stream); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1898,7 +1902,7 @@ [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 455) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 457) assigns \result \from (indirect: *stream); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1909,10 +1913,10 @@ --- Properties of Function 'flockfile' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 461) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 463) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 461) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 463) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1923,10 +1927,10 @@ --- Properties of Function 'funlockfile' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 467) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 469) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 467) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 469) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1937,13 +1941,13 @@ --- Properties of Function 'ftrylockfile' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 473) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 475) assigns \result, *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 473) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 475) assigns \result \from \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 473) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 475) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1957,7 +1961,7 @@ [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 479) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 481) assigns \result \from (indirect: *stream); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -1968,10 +1972,10 @@ --- Properties of Function 'perror' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 485) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 487) assigns __fc_stdout; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 485) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 487) assigns __fc_stdout \from __fc_errno, *(s + (0 .. strlen{Old}(s))); Unverifiable but considered Valid. @@ -1983,13 +1987,13 @@ --- Properties of Function 'getc_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 491) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 493) assigns \result, *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 491) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 493) assigns \result \from *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 491) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 493) assigns *stream \from *stream; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -2003,7 +2007,7 @@ [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 496) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 498) assigns \result \from *__fc_stdin; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -2014,13 +2018,13 @@ --- Properties of Function 'putc_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 502) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 504) assigns *stream, \result; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 502) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 504) assigns *stream \from c; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 503) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 505) assigns \result \from (indirect: *stream); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -2031,13 +2035,13 @@ --- Properties of Function 'putchar_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 508) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 510) assigns *__fc_stdout, \result; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 508) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 510) assigns *__fc_stdout \from c; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 509) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 511) assigns \result \from (indirect: *__fc_stdout); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -2048,10 +2052,10 @@ --- Properties of Function 'clearerr_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 515) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 517) assigns *stream; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 515) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 517) assigns *stream \from \nothing; Unverifiable but considered Valid. [ Valid ] Default behavior @@ -2065,7 +2069,7 @@ [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 521) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 523) assigns \result \from (indirect: *stream); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -2079,7 +2083,7 @@ [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 527) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 529) assigns \result \from (indirect: *stream); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -2093,7 +2097,7 @@ [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 533) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 535) assigns \result \from (indirect: *stream); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -2111,14 +2115,14 @@ (\subset(\result, &__fc_fopen[0 .. 16 - 1]) ∧ is_open_pipe(\result)) Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 560) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 562) assigns \result, __fc_fopen[0 ..]; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 560) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 562) assigns \result \from (indirect: *command), (indirect: *type), __fc_p_fopen; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 562) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 564) assigns __fc_fopen[0 ..] \from (indirect: *command), (indirect: *type), __fc_fopen[0 ..]; Unverifiable but considered Valid. @@ -2136,7 +2140,7 @@ [ Extern ] Assigns nothing assigns \nothing; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 574) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 576) assigns \result \from (indirect: *stream); Unverifiable but considered Valid. [ Valid ] Default behavior @@ -2157,15 +2161,15 @@ errno_set: __fc_errno ≡ \old(__fc_errno) ∨ __fc_errno ∈ {22, 24, 12} Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 590) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 592) assigns __fc_errno, \result; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 590) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 592) assigns __fc_errno \from (indirect: buf), (indirect: size), (indirect: *(mode + (0 .. strlen{Old}(mode)))); Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 592) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 594) assigns \result \from __fc_p_fopen, (indirect: buf), (indirect: size), (indirect: *(mode + (0 .. strlen{Old}(mode)))); @@ -2173,7 +2177,7 @@ [ Valid ] Default behavior default behavior by Frama-C kernel. -[ Extern ] Frees/Allocates nothing/(file FRAMAC_SHARE/libc/stdio.h, line 599) +[ Extern ] Frees/Allocates nothing/(file FRAMAC_SHARE/libc/stdio.h, line 601) allocates \old(buf); Unverifiable but considered Valid. @@ -2185,25 +2189,25 @@ ensures result_error_or_written_byes: \result ≡ -1 ∨ \result ≥ 0 Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 611) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 613) assigns __fc_heap_status, \result, *strp; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 611) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 613) assigns __fc_heap_status \from (indirect: *(fmt + (0 ..))), __fc_heap_status; Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 612) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 614) assigns \result \from (indirect: *(fmt + (0 ..))), (indirect: __fc_heap_status); Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 613) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 615) assigns *strp \from *(fmt + (0 ..)), (indirect: __fc_heap_status); Unverifiable but considered Valid. [ Valid ] Default behavior default behavior by Frama-C kernel. -[ Extern ] Frees/Allocates nothing/(file FRAMAC_SHARE/libc/stdio.h, line 616) +[ Extern ] Frees/Allocates nothing/(file FRAMAC_SHARE/libc/stdio.h, line 618) allocates *\old(strp); Unverifiable but considered Valid. @@ -4256,7 +4260,7 @@ -------------------------------------------------------------------------------- 194 Completely validated 16 Locally validated - 569 Considered valid + 570 Considered valid 56 To be validated - 835 Total + 836 Total -------------------------------------------------------------------------------- diff --git a/tests/idct/oracle_multidim/ieee_1180_1990.res.oracle b/tests/idct/oracle_multidim/ieee_1180_1990.res.oracle index d16224c12bc5709aa446612f842ba7beb78ac431..51a1a894ad988e333fa9e44015a7e7498df8a2d8 100644 --- a/tests/idct/oracle_multidim/ieee_1180_1990.res.oracle +++ b/tests/idct/oracle_multidim/ieee_1180_1990.res.oracle @@ -265,7 +265,7 @@ < "output.\n"[bits 0 to 71] --- > idct_init; idct_mc1[0..7][0..7]; idct_mc2[0..7][0..7] -3906,3928d3740 +3910,3932d3744 < [ - ] Assertion 'Eva,initialization' (file idct.c, line 129) < assert Eva: initialization: \initialized(&tmp1[i][j]); < tried with Eva. @@ -289,7 +289,7 @@ < assert Eva: initialization: \initialized(&tmp1[i][j]); < By RedundantAlarms, with pending: < - Assertion 'Eva,initialization' (file idct.c, line 145) -3932,3954d3743 +3936,3958d3747 < [ - ] Assertion 'Eva,initialization' (file idct.c, line 163) < assert Eva: initialization: \initialized(&tmp1[i][j]); < tried with Eva. @@ -313,11 +313,11 @@ < assert Eva: initialization: \initialized(&tmp1[i][j]); < By RedundantAlarms, with pending: < - Assertion 'Eva,initialization' (file idct.c, line 180) -3976,3978d3764 +3980,3982d3768 < [ - ] Assertion 'Eva,initialization' (file ieee_1180_1990.c, line 109) < assert Eva: initialization: \initialized(&tmp1[i][j]); < tried with Eva. -3982,4015d3767 +3986,4019d3771 < [ - ] Assertion 'Eva,initialization' (file ieee_1180_1990.c, line 116) < assert Eva: initialization: \initialized(&tmp2[i][j]); < tried with Eva. @@ -352,11 +352,11 @@ < [ - ] Assertion 'Eva,float_to_int' (file ieee_1180_1990.c, line 124) < assert Eva: float_to_int: tmp2[i][j] - 0.5 < 2147483648; < tried with Eva. -4036,4038d3787 +4040,4042d3791 < [ - ] Assertion 'Eva,initialization' (file ieee_1180_1990.c, line 150) < assert Eva: initialization: \initialized(&tmp1[i][j]); < tried with Eva. -4042,4075d3790 +4046,4079d3794 < [ - ] Assertion 'Eva,initialization' (file ieee_1180_1990.c, line 157) < assert Eva: initialization: \initialized(&tmp2[i][j]); < tried with Eva. @@ -391,7 +391,7 @@ < [ - ] Assertion 'Eva,float_to_int' (file ieee_1180_1990.c, line 165) < assert Eva: float_to_int: tmp2[i][j] - 0.5 < 2147483648; < tried with Eva. -4175,4191c3890,3896 +4179,4195c3894,3900 < [ Partial ] Assertion 'Eva,initialization' (file ieee_1180_1990.c, line 358) < assert Eva: initialization: \initialized(&res[i].pmse[j][k]); < By RedundantAlarms, with pending: @@ -417,7 +417,7 @@ > reachability of stmt line 196 in main > by Eva. > [ Dead ] Instance of 'Pre-condition (file FRAMAC_SHARE/libc/stdio.h, line 211)' at call 'printf_va_1' (file ieee_1180_1990.c, line 195) -4195,4196c3900,3903 +4199,4200c3904,3907 < by Eva. < [ Valid ] Instance of 'Pre-condition (file FRAMAC_SHARE/libc/stdio.h, line 211)' at call 'printf_va_2' (file ieee_1180_1990.c, line 196) --- @@ -425,22 +425,22 @@ > By Eva because: > - Unreachable call 'printf_va_1' (file ieee_1180_1990.c, line 195) > [ Dead ] Instance of 'Pre-condition (file FRAMAC_SHARE/libc/stdio.h, line 211)' at call 'printf_va_2' (file ieee_1180_1990.c, line 196) -4200c3907,3909 +4204c3911,3913 < by Eva. --- > Locally valid, but unreachable. > By Eva because: > - Unreachable call 'printf_va_2' (file ieee_1180_1990.c, line 196) -4257,4258c3966 +4261,4262c3970 < 194 Completely validated < 16 Locally validated --- > 192 Completely validated -4260,4261c3968,3971 +4264,4265c3972,3975 < 56 To be validated -< 835 Total +< 836 Total --- > 32 To be validated > 2 Dead properties > 2 Unreachable -> 797 Total +> 798 Total diff --git a/tests/libc/more_gcc_builtins.c b/tests/libc/more_gcc_builtins.c index 614aae666d6e492da1fd8807c239cfe0b305cff8..875f454c827b26214451be568f65e6e2f9a3204d 100644 --- a/tests/libc/more_gcc_builtins.c +++ b/tests/libc/more_gcc_builtins.c @@ -69,5 +69,23 @@ int main() { //@ assert 0 <= res <= CHAR_BIT * sizeof(long); res = __builtin_popcountll(ULLONG_MAX); //@ assert 0 <= res <= CHAR_BIT * sizeof(long long); + + // Atomic builtins + __UINT8_T u8_1, u8_2 = 42; + u8_1 = __atomic_load_1(&u8_2, __ATOMIC_RELAXED); + __UINT16_T u16_1, u16_2 = 4200; + __atomic_store(&u16_1, u16_2, __ATOMIC_ACQ_REL); + __UINT32_T u32_1, u32_2 = 1234567, u32_3 = 420000; + u32_1 = __atomic_exchange_4(&u32_2, u32_3, __ATOMIC_RELEASE); + __UINT64_T u64_1 = 12345678901UL, u64_2 = 42000000000UL, u64_3 = 42000000001UL; + r = __atomic_compare_exchange(&u64_1, &u64_2, u64_3, 1, __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); + u8_2 = __atomic_add_fetch(&u8_1, u8_2, __ATOMIC_CONSUME); + u16_2 = __atomic_fetch_sub(&u16_1, u16_2, __ATOMIC_RELAXED); + u32_2 = __atomic_fetch_xor(&u32_1, u32_2, __ATOMIC_RELAXED); + u64_2 = __atomic_fetch_nand(&u64_1, u64_2, __ATOMIC_RELAXED); + r = __atomic_test_and_set(&u32_3, __ATOMIC_ACQUIRE); + __atomic_clear(&r, __ATOMIC_ACQ_REL); + r = __atomic_always_lock_free(sizeof(long long), 0); + r = __atomic_is_lock_free(sizeof(long), &u32_1); return 0; } diff --git a/tests/libc/oracle/fc_libc.1.res.oracle b/tests/libc/oracle/fc_libc.1.res.oracle index 57ab4d44afcf9a6fc36b3eda8ce4e28836227c5a..45092e46f291f3ead9cfe6dae97543f9ee079c99 100644 --- a/tests/libc/oracle/fc_libc.1.res.oracle +++ b/tests/libc/oracle/fc_libc.1.res.oracle @@ -5115,7 +5115,9 @@ extern struct tm *localtime(time_t const *timer); /*@ requires dst_has_room: \valid(s + (0 .. max - 1)); requires valid_format: valid_read_string(format); requires valid_tm: \valid_read(tm); - ensures result_bounded: \result ≤ \old(max); + ensures result_bounded: \result < \old(max); + ensures result_valid_string: \result > 0 ⇒ valid_string(\old(s)); + ensures result_length: \result > 0 ⇒ *(\old(s) + \result) ≡ 0; assigns *(s + (0 .. max - 1)), \result; assigns *(s + (0 .. max - 1)) \from (indirect: max), (indirect: *(format + (0 ..))), (indirect: *tm); @@ -6172,8 +6174,10 @@ extern int setvbuf(FILE * restrict stream, char * restrict buf, int mode, } */ -/*@ assigns *stream; - assigns *stream \from *(format + (..)), arg; */ +/*@ assigns *stream, \result; + assigns *stream \from *(format + (..)), (indirect: arg); + assigns \result \from (indirect: *(format + (..))), (indirect: arg); + */ extern int vfprintf(FILE * restrict stream, char const * restrict format, va_list arg); @@ -9233,6 +9237,635 @@ int __builtin_popcountl(unsigned long x); */ int __builtin_popcountll(unsigned long long x); +/*@ requires validity: \valid_read(mem); + requires initialization: \initialized(mem); + ensures load_value: \result ≡ *\old(mem); + assigns \result; + assigns \result \from *mem, (indirect: model); + */ +unsigned char __atomic_load_1(unsigned char const *mem, int model); + +/*@ requires validity: \valid_read(mem); + requires initialization: \initialized(mem); + ensures load_value: \result ≡ *\old(mem); + assigns \result; + assigns \result \from *mem, (indirect: model); + */ +unsigned short __atomic_load_2(unsigned short const *mem, int model); + +/*@ requires validity: \valid_read(mem); + requires initialization: \initialized(mem); + ensures load_value: \result ≡ *\old(mem); + assigns \result; + assigns \result \from *mem, (indirect: model); + */ +unsigned int __atomic_load_4(unsigned int const *mem, int model); + +/*@ requires validity: \valid_read(mem); + requires initialization: \initialized(mem); + ensures load_value: \result ≡ *\old(mem); + assigns \result; + assigns \result \from *mem, (indirect: model); + */ +unsigned long long __atomic_load_8(unsigned long long const *mem, int model); + +/*@ requires validity: \valid(mem); + ensures initialization: \initialized(\old(mem)); + ensures store_value: *\old(mem) ≡ \old(val); + assigns *mem; + assigns *mem \from val, (indirect: model); + */ +void __atomic_store_1(unsigned char *mem, unsigned char val, int model); + +/*@ requires validity: \valid(mem); + ensures initialization: \initialized(\old(mem)); + ensures store_value: *\old(mem) ≡ \old(val); + assigns *mem; + assigns *mem \from val, (indirect: model); + */ +void __atomic_store_2(unsigned short *mem, unsigned short val, int model); + +/*@ requires validity: \valid(mem); + ensures initialization: \initialized(\old(mem)); + ensures store_value: *\old(mem) ≡ \old(val); + assigns *mem; + assigns *mem \from val, (indirect: model); + */ +void __atomic_store_4(unsigned int *mem, unsigned int val, int model); + +/*@ requires validity: \valid(mem); + ensures initialization: \initialized(\old(mem)); + ensures store_value: *\old(mem) ≡ \old(val); + assigns *mem; + assigns *mem \from val, (indirect: model); + */ +void __atomic_store_8(unsigned long long *mem, unsigned long long val, + int model); + +/*@ requires validity: \valid(mem); + requires initialization: \initialized(mem); + assigns *mem, \result; + assigns *mem \from val, (indirect: model); + assigns \result \from *mem, (indirect: model); + */ +unsigned char __atomic_exchange_1(unsigned char *mem, unsigned char val, + int model); + +/*@ requires validity: \valid(mem); + requires initialization: \initialized(mem); + assigns *mem, \result; + assigns *mem \from val, (indirect: model); + assigns \result \from *mem, (indirect: model); + */ +unsigned short __atomic_exchange_2(unsigned short *mem, unsigned short val, + int model); + +/*@ requires validity: \valid(mem); + requires initialization: \initialized(mem); + assigns *mem, \result; + assigns *mem \from val, (indirect: model); + assigns \result \from *mem, (indirect: model); + */ +unsigned int __atomic_exchange_4(unsigned int *mem, unsigned int val, + int model); + +/*@ requires validity: \valid(mem); + requires initialization: \initialized(mem); + assigns *mem, \result; + assigns *mem \from val, (indirect: model); + assigns \result \from *mem, (indirect: model); + */ +unsigned long long __atomic_exchange_8(unsigned long long *mem, + unsigned long long val, int model); + +/*@ requires validity: \valid(mem) ∧ \valid(expected); + requires initialization: mem: \initialized(mem); + requires initialization: expected: \initialized(expected); + assigns *mem, *expected, \result; + assigns *mem + \from *mem, desired, (indirect: *expected), (indirect: success_model), + (indirect: weak); + assigns *expected + \from *expected, *mem, (indirect: desired), (indirect: failure_model), + (indirect: weak); + assigns \result \from (indirect: *mem), (indirect: *expected); + */ +_Bool __atomic_compare_exchange_1(unsigned char *mem, + unsigned char *expected, + unsigned char desired, _Bool weak, + int success_model, int failure_model); + +/*@ requires validity: \valid(mem) ∧ \valid(expected); + requires initialization: mem: \initialized(mem); + requires initialization: expected: \initialized(expected); + assigns *mem, *expected, \result; + assigns *mem + \from *mem, desired, (indirect: *expected), (indirect: success_model), + (indirect: weak); + assigns *expected + \from *expected, *mem, (indirect: desired), (indirect: failure_model), + (indirect: weak); + assigns \result \from (indirect: *mem), (indirect: *expected); + */ +_Bool __atomic_compare_exchange_2(unsigned short *mem, + unsigned short *expected, + unsigned short desired, _Bool weak, + int success_model, int failure_model); + +/*@ requires validity: \valid(mem) ∧ \valid(expected); + requires initialization: mem: \initialized(mem); + requires initialization: expected: \initialized(expected); + assigns *mem, *expected, \result; + assigns *mem + \from *mem, desired, (indirect: *expected), (indirect: success_model), + (indirect: weak); + assigns *expected + \from *expected, *mem, (indirect: desired), (indirect: failure_model), + (indirect: weak); + assigns \result \from (indirect: *mem), (indirect: *expected); + */ +_Bool __atomic_compare_exchange_4(unsigned int *mem, unsigned int *expected, + unsigned int desired, _Bool weak, + int success_model, int failure_model); + +/*@ requires validity: \valid(mem) ∧ \valid(expected); + requires initialization: mem: \initialized(mem); + requires initialization: expected: \initialized(expected); + assigns *mem, *expected, \result; + assigns *mem + \from *mem, desired, (indirect: *expected), (indirect: success_model), + (indirect: weak); + assigns *expected + \from *expected, *mem, (indirect: desired), (indirect: failure_model), + (indirect: weak); + assigns \result \from (indirect: *mem), (indirect: *expected); + */ +_Bool __atomic_compare_exchange_8(unsigned long long *mem, + unsigned long long *expected, + unsigned long long desired, _Bool weak, + int success_model, int failure_model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned char __atomic_add_fetch_1(unsigned char *ptr, unsigned char val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned char __atomic_sub_fetch_1(unsigned char *ptr, unsigned char val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned char __atomic_and_fetch_1(unsigned char *ptr, unsigned char val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned char __atomic_xor_fetch_1(unsigned char *ptr, unsigned char val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned char __atomic_or_fetch_1(unsigned char *ptr, unsigned char val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned char __atomic_nand_fetch_1(unsigned char *ptr, unsigned char val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned short __atomic_add_fetch_2(unsigned short *ptr, unsigned short val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned short __atomic_sub_fetch_2(unsigned short *ptr, unsigned short val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned short __atomic_and_fetch_2(unsigned short *ptr, unsigned short val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned short __atomic_xor_fetch_2(unsigned short *ptr, unsigned short val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned short __atomic_or_fetch_2(unsigned short *ptr, unsigned short val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned short __atomic_nand_fetch_2(unsigned short *ptr, unsigned short val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned int __atomic_add_fetch_4(unsigned int *ptr, unsigned int val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned int __atomic_sub_fetch_4(unsigned int *ptr, unsigned int val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned int __atomic_and_fetch_4(unsigned int *ptr, unsigned int val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned int __atomic_xor_fetch_4(unsigned int *ptr, unsigned int val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned int __atomic_or_fetch_4(unsigned int *ptr, unsigned int val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned int __atomic_nand_fetch_4(unsigned int *ptr, unsigned int val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned long long __atomic_add_fetch_8(unsigned long long *ptr, + unsigned long long val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned long long __atomic_sub_fetch_8(unsigned long long *ptr, + unsigned long long val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned long long __atomic_and_fetch_8(unsigned long long *ptr, + unsigned long long val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned long long __atomic_xor_fetch_8(unsigned long long *ptr, + unsigned long long val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned long long __atomic_or_fetch_8(unsigned long long *ptr, + unsigned long long val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned long long __atomic_nand_fetch_8(unsigned long long *ptr, + unsigned long long val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned char __atomic_fetch_add_1(unsigned char *ptr, unsigned char val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned char __atomic_fetch_sub_1(unsigned char *ptr, unsigned char val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned char __atomic_fetch_and_1(unsigned char *ptr, unsigned char val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned char __atomic_fetch_xor_1(unsigned char *ptr, unsigned char val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned char __atomic_fetch_or_1(unsigned char *ptr, unsigned char val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned char __atomic_fetch_nand_1(unsigned char *ptr, unsigned char val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned short __atomic_fetch_add_2(unsigned short *ptr, unsigned short val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned short __atomic_fetch_sub_2(unsigned short *ptr, unsigned short val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned short __atomic_fetch_and_2(unsigned short *ptr, unsigned short val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned short __atomic_fetch_xor_2(unsigned short *ptr, unsigned short val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned short __atomic_fetch_or_2(unsigned short *ptr, unsigned short val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned short __atomic_fetch_nand_2(unsigned short *ptr, unsigned short val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned int __atomic_fetch_add_4(unsigned int *ptr, unsigned int val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned int __atomic_fetch_sub_4(unsigned int *ptr, unsigned int val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned int __atomic_fetch_and_4(unsigned int *ptr, unsigned int val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned int __atomic_fetch_xor_4(unsigned int *ptr, unsigned int val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned int __atomic_fetch_or_4(unsigned int *ptr, unsigned int val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned int __atomic_fetch_nand_4(unsigned int *ptr, unsigned int val, + int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned long long __atomic_fetch_add_8(unsigned long long *ptr, + unsigned long long val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned long long __atomic_fetch_sub__8(unsigned long long *ptr, + unsigned long long val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned long long __atomic_fetch_and_8(unsigned long long *ptr, + unsigned long long val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned long long __atomic_fetch_xor_8(unsigned long long *ptr, + unsigned long long val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned long long __atomic_fetch_or_8(unsigned long long *ptr, + unsigned long long val, int model); + +/*@ requires validity: \valid(ptr); + requires initialization: \initialized(ptr); + assigns \result, *ptr; + assigns \result \from *ptr, val, (indirect: model); + assigns *ptr \from *ptr, val, (indirect: model); + */ +unsigned long long __atomic_fetch_nand_8(unsigned long long *ptr, + unsigned long long val, int model); + +/*@ requires validity: \valid((char *)ptr); + assigns \result, *((char *)ptr); + assigns \result \from *((char *)ptr); + assigns *((char *)ptr) \from \nothing; + */ +_Bool __atomic_test_and_set(void *ptr, int model); + +/*@ requires validity: \valid(ptr); + assigns *ptr; + assigns *ptr \from \nothing; + */ +void __atomic_clear(_Bool *ptr, int model); + +/*@ assigns \nothing; */ +void __atomic_thread_fence(int model); + +/*@ assigns \nothing; */ +void __atomic_signal_fence(int model); + +/*@ assigns \result; + assigns \result \from (indirect: size), (indirect: ptr); + */ +_Bool __atomic_always_lock_free(unsigned int size, void *ptr); + +/*@ assigns \result; + assigns \result \from (indirect: size), (indirect: ptr); + */ +_Bool __atomic_is_lock_free(unsigned int size, void *ptr); + /*@ assigns \nothing; */ void __sync_synchronize(void); diff --git a/tests/libc/oracle/more_gcc_builtins.res.oracle b/tests/libc/oracle/more_gcc_builtins.res.oracle index a8298a52cb48efaa458598edee14089db96eaa99..3ee3de3f18e2a603da693c7ae9e92d277e2936ba 100644 --- a/tests/libc/oracle/more_gcc_builtins.res.oracle +++ b/tests/libc/oracle/more_gcc_builtins.res.oracle @@ -149,15 +149,110 @@ [eva] using specification for function __builtin_popcountll [eva] Done for function __builtin_popcountll [eva] more_gcc_builtins.c:71: assertion got status valid. +[eva] computing for function __atomic_load_1 <- main. + Called from more_gcc_builtins.c:75. +[eva] using specification for function __atomic_load_1 +[eva] more_gcc_builtins.c:75: + function __atomic_load_1: precondition 'validity' got status valid. +[eva] more_gcc_builtins.c:75: + function __atomic_load_1: precondition 'initialization' got status valid. +[eva] Done for function __atomic_load_1 +[eva] computing for function __atomic_store_2 <- main. + Called from more_gcc_builtins.c:77. +[eva] using specification for function __atomic_store_2 +[eva] more_gcc_builtins.c:77: + function __atomic_store_2: precondition 'validity' got status valid. +[eva] Done for function __atomic_store_2 +[eva] computing for function __atomic_exchange_4 <- main. + Called from more_gcc_builtins.c:79. +[eva] using specification for function __atomic_exchange_4 +[eva] more_gcc_builtins.c:79: + function __atomic_exchange_4: precondition 'validity' got status valid. +[eva] more_gcc_builtins.c:79: + function __atomic_exchange_4: precondition 'initialization' got status valid. +[eva] Done for function __atomic_exchange_4 +[eva] computing for function __atomic_compare_exchange_8 <- main. + Called from more_gcc_builtins.c:81. +[eva] using specification for function __atomic_compare_exchange_8 +[eva] more_gcc_builtins.c:81: + function __atomic_compare_exchange_8: precondition 'validity' got status valid. +[eva] more_gcc_builtins.c:81: + function __atomic_compare_exchange_8: precondition 'initialization,mem' got status valid. +[eva] more_gcc_builtins.c:81: + function __atomic_compare_exchange_8: precondition 'initialization,expected' got status valid. +[eva] Done for function __atomic_compare_exchange_8 +[eva] computing for function __atomic_add_fetch_1 <- main. + Called from more_gcc_builtins.c:82. +[eva] using specification for function __atomic_add_fetch_1 +[eva] more_gcc_builtins.c:82: + function __atomic_add_fetch_1: precondition 'validity' got status valid. +[eva] more_gcc_builtins.c:82: + function __atomic_add_fetch_1: precondition 'initialization' got status valid. +[eva] Done for function __atomic_add_fetch_1 +[eva] computing for function __atomic_fetch_sub_2 <- main. + Called from more_gcc_builtins.c:83. +[eva] using specification for function __atomic_fetch_sub_2 +[eva] more_gcc_builtins.c:83: + function __atomic_fetch_sub_2: precondition 'validity' got status valid. +[eva] more_gcc_builtins.c:83: + function __atomic_fetch_sub_2: precondition 'initialization' got status valid. +[eva] Done for function __atomic_fetch_sub_2 +[eva] computing for function __atomic_fetch_xor_4 <- main. + Called from more_gcc_builtins.c:84. +[eva] using specification for function __atomic_fetch_xor_4 +[eva] more_gcc_builtins.c:84: + function __atomic_fetch_xor_4: precondition 'validity' got status valid. +[eva] more_gcc_builtins.c:84: + function __atomic_fetch_xor_4: precondition 'initialization' got status valid. +[eva] Done for function __atomic_fetch_xor_4 +[eva] computing for function __atomic_fetch_nand_8 <- main. + Called from more_gcc_builtins.c:85. +[eva] using specification for function __atomic_fetch_nand_8 +[eva] more_gcc_builtins.c:85: + function __atomic_fetch_nand_8: precondition 'validity' got status valid. +[eva] more_gcc_builtins.c:85: + function __atomic_fetch_nand_8: precondition 'initialization' got status valid. +[eva] Done for function __atomic_fetch_nand_8 +[eva] computing for function __atomic_test_and_set <- main. + Called from more_gcc_builtins.c:86. +[eva] using specification for function __atomic_test_and_set +[eva] more_gcc_builtins.c:86: + function __atomic_test_and_set: precondition 'validity' got status valid. +[eva] Done for function __atomic_test_and_set +[eva] computing for function __atomic_clear <- main. + Called from more_gcc_builtins.c:87. +[eva] using specification for function __atomic_clear +[eva] more_gcc_builtins.c:87: + function __atomic_clear: precondition 'validity' got status valid. +[eva] Done for function __atomic_clear +[eva] computing for function __atomic_always_lock_free <- main. + Called from more_gcc_builtins.c:88. +[eva] using specification for function __atomic_always_lock_free +[eva] Done for function __atomic_always_lock_free +[eva] computing for function __atomic_is_lock_free <- main. + Called from more_gcc_builtins.c:89. +[eva] using specification for function __atomic_is_lock_free +[eva] Done for function __atomic_is_lock_free [eva] Recording results for main [eva] done for function main [eva] ====== VALUES COMPUTED ====== [eva:final-states] Values at end of function main: res ∈ [0..64] - r ∈ {1} + r ∈ [--..--] lres ∈ {2147483647} llres ∈ {-9223372036854775808} ures ∈ {8} ulres ∈ {8} ullres ∈ {18446744073709551612} + u8_1 ∈ [--..--] + u8_2 ∈ [--..--] + u16_1 ∈ [--..--] + u16_2 ∈ [--..--] + u32_1 ∈ [--..--] + u32_2 ∈ [--..--] + u32_3[bits 0 to 7] ∈ [--..--] + [bits 8 to 31]# ∈ {420000}%32, bits 8 to 31 + u64_1 ∈ [--..--] + u64_2 ∈ [--..--] + u64_3 ∈ {42000000001} __retres ∈ {0} diff --git a/tests/libc/oracle/time_misc.res.oracle b/tests/libc/oracle/time_misc.res.oracle index 67b9867047a8d8912e89992703b7a7f9ba116a0c..eae28b5cce8847a6a0a62ce8d2933b74bbf99a5d 100644 --- a/tests/libc/oracle/time_misc.res.oracle +++ b/tests/libc/oracle/time_misc.res.oracle @@ -66,7 +66,7 @@ outstr[0..199] ∈ [--..--] or UNINITIALIZED t ∈ [--..--] tmp ∈ {{ NULL ; &__fc_time_tm }} - res ∈ [0..200] or UNINITIALIZED + res ∈ [0..199] or UNINITIALIZED [eva:final-states] Values at end of function main: __fc_ctime[0..25] ∈ [--..--] __fc_time_tm ∈ [--..--] diff --git a/tests/rte/oracle/value_rte.res.oracle b/tests/rte/oracle/value_rte.res.oracle index 3385aba34d1244c4b5711a2e50ec2ecfc414dc49..f9740ed485b2967d35d36e530e30debbf9ebc48e 100644 --- a/tests/rte/oracle/value_rte.res.oracle +++ b/tests/rte/oracle/value_rte.res.oracle @@ -326,6 +326,8 @@ Unverifiable but considered Valid. [ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 220) Unverifiable but considered Valid. +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 221) + Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -333,9 +335,9 @@ --- Properties of Function 'vfscanf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 225) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 227) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 225) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 227) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -344,9 +346,9 @@ --- Properties of Function 'vprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 231) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 233) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 231) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 233) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -355,9 +357,9 @@ --- Properties of Function 'vscanf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 235) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 237) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 235) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 237) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -366,9 +368,9 @@ --- Properties of Function 'vsnprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 240) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 242) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 240) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 242) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -377,9 +379,9 @@ --- Properties of Function 'vsprintf' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 246) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 248) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 246) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 248) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -390,11 +392,11 @@ [ Extern ] Post-condition 'result_uchar_or_eof' Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 259) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 261) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 259) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 261) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 260) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 262) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -409,11 +411,11 @@ Unverifiable but considered Valid. [ Extern ] Post-condition 'terminated_string_on_success' Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 268) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 270) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 268) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 270) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 269) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 271) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -422,11 +424,11 @@ --- Properties of Function 'fputc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 282) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 284) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 282) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 284) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 283) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 285) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -435,11 +437,11 @@ --- Properties of Function 'fputs' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 289) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 291) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 289) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 291) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 290) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 292) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -448,11 +450,11 @@ --- Properties of Function 'getc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 297) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 299) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 297) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 299) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 297) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 299) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -461,11 +463,11 @@ --- Properties of Function 'getchar' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 302) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 304) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 302) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 304) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 302) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 304) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -476,13 +478,13 @@ [ Extern ] Post-condition 'result_null_or_same' Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 315) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 317) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 315) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 317) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 316) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 318) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 317) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 319) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -491,11 +493,11 @@ --- Properties of Function 'putc' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 324) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 326) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 324) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 326) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 325) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 327) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -504,11 +506,11 @@ --- Properties of Function 'putchar' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 330) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 332) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 330) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 332) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 331) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 333) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -517,11 +519,11 @@ --- Properties of Function 'puts' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 337) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 339) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 337) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 339) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 338) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 340) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -532,11 +534,11 @@ [ Extern ] Post-condition 'result_ok_or_error' Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 344) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 346) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 344) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 346) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 345) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 347) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -549,14 +551,14 @@ Unverifiable but considered Valid. [ Extern ] Post-condition 'initialization' Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 353) - Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 353) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 355) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 353) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 355) Unverifiable but considered Valid. [ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 355) Unverifiable but considered Valid. +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 357) + Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -566,11 +568,11 @@ [ Extern ] Post-condition 'size_written' Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 366) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 368) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 366) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 368) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 366) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 368) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -581,11 +583,11 @@ [ Extern ] Post-condition 'initialization,pos' Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 377) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 379) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 377) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 379) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 377) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 379) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -596,13 +598,13 @@ [ Extern ] Post-condition 'errno_set' Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 386) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 388) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 386) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 388) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 387) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 389) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 387) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 389) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -613,13 +615,13 @@ [ Extern ] Post-condition 'errno_set' Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 397) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 399) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 397) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 399) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 398) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 400) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 398) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 400) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -630,13 +632,13 @@ [ Extern ] Post-condition 'errno_set' Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 409) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 411) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 409) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 411) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 410) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 412) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 411) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 413) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -649,11 +651,11 @@ Unverifiable but considered Valid. [ Extern ] Post-condition 'errno_set' Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 419) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 421) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 419) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 421) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 419) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 421) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -666,11 +668,11 @@ Unverifiable but considered Valid. [ Extern ] Post-condition 'errno_set' Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 428) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 430) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 428) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 430) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 428) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 430) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -679,9 +681,9 @@ --- Properties of Function 'rewind' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 437) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 439) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 437) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 439) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -690,9 +692,9 @@ --- Properties of Function 'clearerr' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 443) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 445) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 443) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 445) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -703,7 +705,7 @@ [ Extern ] Assigns nothing Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 449) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 451) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -714,7 +716,7 @@ [ Extern ] Assigns nothing Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 455) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 457) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -723,9 +725,9 @@ --- Properties of Function 'flockfile' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 461) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 463) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 461) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 463) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -734,9 +736,9 @@ --- Properties of Function 'funlockfile' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 467) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 469) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 467) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 469) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -745,11 +747,11 @@ --- Properties of Function 'ftrylockfile' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 473) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 475) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 473) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 475) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 473) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 475) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -760,7 +762,7 @@ [ Extern ] Assigns nothing Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 479) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 481) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -769,9 +771,9 @@ --- Properties of Function 'perror' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 485) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 487) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 485) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 487) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -780,11 +782,11 @@ --- Properties of Function 'getc_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 491) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 493) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 491) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 493) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 491) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 493) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -795,7 +797,7 @@ [ Extern ] Assigns nothing Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 496) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 498) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -804,11 +806,11 @@ --- Properties of Function 'putc_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 502) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 504) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 502) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 504) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 503) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 505) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -817,11 +819,11 @@ --- Properties of Function 'putchar_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 508) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 510) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 508) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 510) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 509) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 511) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -830,9 +832,9 @@ --- Properties of Function 'clearerr_unlocked' -------------------------------------------------------------------------------- -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 515) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 517) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 515) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 517) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -843,7 +845,7 @@ [ Extern ] Assigns nothing Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 521) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 523) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -854,7 +856,7 @@ [ Extern ] Assigns nothing Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 527) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 529) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -865,7 +867,7 @@ [ Extern ] Assigns nothing Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 533) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 535) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -876,12 +878,12 @@ [ Extern ] Post-condition 'result_error_or_valid_open_pipe' Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 560) - Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 560) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 562) Unverifiable but considered Valid. [ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 562) Unverifiable but considered Valid. +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 564) + Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -893,7 +895,7 @@ Unverifiable but considered Valid. [ Extern ] Assigns nothing Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 574) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 576) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. @@ -906,15 +908,15 @@ Unverifiable but considered Valid. [ Extern ] Post-condition 'errno_set' Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 590) - Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 590) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 592) Unverifiable but considered Valid. [ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 592) Unverifiable but considered Valid. +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 594) + Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. -[ Extern ] Frees/Allocates nothing/(file FRAMAC_SHARE/libc/stdio.h, line 599) +[ Extern ] Frees/Allocates nothing/(file FRAMAC_SHARE/libc/stdio.h, line 601) Unverifiable but considered Valid. -------------------------------------------------------------------------------- @@ -923,17 +925,17 @@ [ Extern ] Post-condition 'result_error_or_written_byes' Unverifiable but considered Valid. -[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 611) +[ Extern ] Assigns (file FRAMAC_SHARE/libc/stdio.h, line 613) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 611) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 613) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 612) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 614) Unverifiable but considered Valid. -[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 613) +[ Extern ] Froms (file FRAMAC_SHARE/libc/stdio.h, line 615) Unverifiable but considered Valid. [ Valid ] Default behavior by Frama-C kernel. -[ Extern ] Frees/Allocates nothing/(file FRAMAC_SHARE/libc/stdio.h, line 616) +[ Extern ] Frees/Allocates nothing/(file FRAMAC_SHARE/libc/stdio.h, line 618) Unverifiable but considered Valid. -------------------------------------------------------------------------------- @@ -951,7 +953,7 @@ --- Status Report Summary -------------------------------------------------------------------------------- 77 Completely validated - 227 Considered valid + 228 Considered valid 1 To be validated - 305 Total + 306 Total --------------------------------------------------------------------------------