From 44ec56a40e73dc97210396729bbad0764d8018a7 Mon Sep 17 00:00:00 2001 From: Kostyantyn Vorobyov <kostyantyn.vorobyov@cea.fr> Date: Tue, 22 Nov 2016 17:56:33 +0100 Subject: [PATCH] Added test case for errno --- src/plugins/e-acsl/tests/runtime/errno.c | 13 ++++++ .../tests/runtime/oracle/errno.err.oracle | 0 .../tests/runtime/oracle/errno.res.oracle | 4 ++ .../e-acsl/tests/runtime/oracle/gen_errno.c | 40 +++++++++++++++++++ 4 files changed, 57 insertions(+) create mode 100644 src/plugins/e-acsl/tests/runtime/errno.c create mode 100644 src/plugins/e-acsl/tests/runtime/oracle/errno.err.oracle create mode 100644 src/plugins/e-acsl/tests/runtime/oracle/errno.res.oracle create mode 100644 src/plugins/e-acsl/tests/runtime/oracle/gen_errno.c diff --git a/src/plugins/e-acsl/tests/runtime/errno.c b/src/plugins/e-acsl/tests/runtime/errno.c new file mode 100644 index 00000000000..6cd40348bb2 --- /dev/null +++ b/src/plugins/e-acsl/tests/runtime/errno.c @@ -0,0 +1,13 @@ +/* run.config + COMMENT: Check whether location of errno is recorded +*/ + +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> + +int main(int argc, const char **argv) { + int *p = &errno; + /*@ assert \valid(p); */ + return 0; +} diff --git a/src/plugins/e-acsl/tests/runtime/oracle/errno.err.oracle b/src/plugins/e-acsl/tests/runtime/oracle/errno.err.oracle new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/plugins/e-acsl/tests/runtime/oracle/errno.res.oracle b/src/plugins/e-acsl/tests/runtime/oracle/errno.res.oracle new file mode 100644 index 00000000000..74b2c0f8866 --- /dev/null +++ b/src/plugins/e-acsl/tests/runtime/oracle/errno.res.oracle @@ -0,0 +1,4 @@ +[e-acsl] beginning translation. +FRAMAC_SHARE/libc/stdlib.h:276:[kernel] warning: No code nor implicit assigns clause for function calloc, generating default assigns from the prototype +[e-acsl] translation done in project "e-acsl". +FRAMAC_SHARE/e-acsl/e_acsl.h:43:[value] warning: function __e_acsl_assert: precondition got status unknown. diff --git a/src/plugins/e-acsl/tests/runtime/oracle/gen_errno.c b/src/plugins/e-acsl/tests/runtime/oracle/gen_errno.c new file mode 100644 index 00000000000..9ed31d52411 --- /dev/null +++ b/src/plugins/e-acsl/tests/runtime/oracle/gen_errno.c @@ -0,0 +1,40 @@ +/* Generated by Frama-C */ +void __e_acsl_globals_init(void) +{ + __e_acsl_store_block((void *)(& __FC_errno),4UL); + __e_acsl_full_init((void *)(& __FC_errno)); + return; +} + +int main(int argc, char const **argv) +{ + int __retres; + int *p; + __e_acsl_memory_init(& argc,(char ***)(& argv),8UL); + __e_acsl_globals_init(); + __e_acsl_store_block((void *)(& p),8UL); + __e_acsl_full_init((void *)(& p)); + p = & __FC_errno; + /*@ assert \valid(p); */ + { + int __gen_e_acsl_initialized; + int __gen_e_acsl_and; + __gen_e_acsl_initialized = __e_acsl_initialized((void *)(& p), + sizeof(int *)); + if (__gen_e_acsl_initialized) { + int __gen_e_acsl_valid; + __gen_e_acsl_valid = __e_acsl_valid((void *)p,sizeof(int)); + __gen_e_acsl_and = __gen_e_acsl_valid; + } + else __gen_e_acsl_and = 0; + __e_acsl_assert(__gen_e_acsl_and,(char *)"Assertion",(char *)"main", + (char *)"\\valid(p)",11); + } + __retres = 0; + __e_acsl_delete_block((void *)(& __FC_errno)); + __e_acsl_delete_block((void *)(& p)); + __e_acsl_memory_clean(); + return __retres; +} + + -- GitLab