From 5193f45424e4d4e298741950828f6e7dd222c848 Mon Sep 17 00:00:00 2001 From: Kostyantyn Vorobyov <kostyantyn.vorobyov@cea.fr> Date: Wed, 16 Mar 2016 18:54:02 +0100 Subject: [PATCH] [RTL] Removed runction __init_argv from the API. Instead it is called internally via __e_acsl_memory_init --- .../e-acsl/share/e-acsl/adt_models/e_acsl_adt_mmodel.h | 4 +++- src/plugins/e-acsl/share/e-acsl/e_acsl_mmodel_api.h | 5 ----- .../e-acsl/tests/e-acsl-runtime/oracle/gen_mainargs.c | 1 - src/plugins/e-acsl/visit.ml | 6 ------ 4 files changed, 3 insertions(+), 13 deletions(-) diff --git a/src/plugins/e-acsl/share/e-acsl/adt_models/e_acsl_adt_mmodel.h b/src/plugins/e-acsl/share/e-acsl/adt_models/e_acsl_adt_mmodel.h index 6e6816ad1d4..f95d39c1fa1 100644 --- a/src/plugins/e-acsl/share/e-acsl/adt_models/e_acsl_adt_mmodel.h +++ b/src/plugins/e-acsl/share/e-acsl/adt_models/e_acsl_adt_mmodel.h @@ -393,7 +393,7 @@ void __e_acsl_memory_clean() { } /* adds argc / argv to the memory model */ -void __init_argv(int argc, char **argv) { +static void __init_argv(int argc, char **argv) { int i; __store_block(argv, (argc+1)*sizeof(char*)); @@ -411,6 +411,8 @@ void __init_argv(int argc, char **argv) { * ptr_size the size of the pointer computed during instrumentation. */ void __e_acsl_memory_init(int *argc_ref, char ***argv_ref, size_t ptr_size) { arch_assert(ptr_size); + if (argc_ref) + __init_argv(*argc_ref, *argv_ref); } /**********************/ diff --git a/src/plugins/e-acsl/share/e-acsl/e_acsl_mmodel_api.h b/src/plugins/e-acsl/share/e-acsl/e_acsl_mmodel_api.h index caf3d55ee51..8fec227fc0b 100644 --- a/src/plugins/e-acsl/share/e-acsl/e_acsl_mmodel_api.h +++ b/src/plugins/e-acsl/share/e-acsl/e_acsl_mmodel_api.h @@ -135,11 +135,6 @@ int __offset(void * ptr) int __initialized(void * ptr, size_t size) __attribute__((FC_BUILTIN)); -/* put argv in the memory model */ -/*@ assigns \nothing; */ -void __init_argv(int argc, char **argv) - __attribute__((FC_BUILTIN)); - /* print the content of the abstract structure */ void __e_acsl_memory_debug(void) __attribute__((FC_BUILTIN)); diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_mainargs.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_mainargs.c index 7a93e7c7397..60e2c7f959d 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_mainargs.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_mainargs.c @@ -4,7 +4,6 @@ int main(int argc, char **argv) int __retres; int i; __e_acsl_memory_init(& argc,& argv,8UL); - __init_argv(argc,argv); /*@ assert \valid(&argc); */ { int __e_acsl_valid; diff --git a/src/plugins/e-acsl/visit.ml b/src/plugins/e-acsl/visit.ml index 6b22631ba93..08d57de4d82 100644 --- a/src/plugins/e-acsl/visit.ml +++ b/src/plugins/e-acsl/visit.ml @@ -284,12 +284,6 @@ you must call function `%s' and `__e_acsl_memory_clean by yourself.@]" match main.sformals with | vi1 :: vi2 :: _ when vi1.vtype = Cil.intType && vi2.vtype = charPtrPtrType -> - (* Add a call to __init_args if need argv for analysis *) - if Mmodel_analysis.must_model_vi vi2 then begin - let arg = [ Cil.evar vi1 ; Cil.evar vi2 ] in - let arginit = Misc.mk_call loc "__init_argv" arg in - main.sbody.bstmts <- arginit :: main.sbody.bstmts; - end; (* Grab addresses of arguments for a call to the main initialization function, i.e., [__e_acsl_memory_init] *) List.map Cil.mkAddrOfVi main.sformals; -- GitLab