diff --git a/src/plugins/e-acsl/Makefile.in b/src/plugins/e-acsl/Makefile.in index cf4b2d96fba050665137daf326ba0d53d77073d2..b2befe524f232d45cb7fed6b7e9e57a17be2337c 100644 --- a/src/plugins/e-acsl/Makefile.in +++ b/src/plugins/e-acsl/Makefile.in @@ -176,10 +176,8 @@ PLUGIN_TESTS_DIRS := \ full-mtracking \ format \ temporal \ - special -# [JS 2019/02/26] deactivate tests 'builtin' as long as setjmp/longjmp is not -# supported. -# builtin + special \ + builtin PLUGIN_TESTS_LIB := $(EACSL_PLUGIN_DIR)/tests/print.ml diff --git a/src/plugins/e-acsl/src/code_generator/contract.ml b/src/plugins/e-acsl/src/code_generator/contract.ml index 38afc6288840e7c39a71d9eabf7fd8a7e2795f5c..cb4a3c212685dc4e8f20091ea5880480c8a4f4f8 100644 --- a/src/plugins/e-acsl/src/code_generator/contract.ml +++ b/src/plugins/e-acsl/src/code_generator/contract.ml @@ -595,7 +595,7 @@ let check_complete_and_disjoint kf kinstr env contract = Cil.CurrentLoc.set contract.location; Options.warning ~current:true - "@[Some assumes clauses couldn't be translated.@ Ignoring complete and \ + "@[Some assumes clauses could not be translated.@ Ignoring complete and \ disjoint behaviors annotations.@]"; env end diff --git a/src/plugins/e-acsl/tests/bts/oracle_ci/bts2252.res.oracle b/src/plugins/e-acsl/tests/bts/oracle_ci/bts2252.res.oracle index e4a25f71358d728b76754a5a5f6e7a839b9fd553..75fbf8d3a073d69762ab1e527bc29beaf9abf4c7 100644 --- a/src/plugins/e-acsl/tests/bts/oracle_ci/bts2252.res.oracle +++ b/src/plugins/e-acsl/tests/bts/oracle_ci/bts2252.res.oracle @@ -14,7 +14,7 @@ E-ACSL construct `logic functions with labels' is not yet supported. Ignoring annotation. [e-acsl] FRAMAC_SHARE/libc/string.h:365: Warning: - Some assumes clauses couldn't be translated. + Some assumes clauses could not be translated. Ignoring complete and disjoint behaviors annotations. [e-acsl] FRAMAC_SHARE/libc/string.h:365: Warning: E-ACSL construct `assigns clause in behavior' is not yet supported. diff --git a/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strcat.c b/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strcat.c index 26c57de7b341828a1aa8202d4ebde22536cd7572..ae145b13224ff965dc48e8a56ce5258fbbce5896 100644 --- a/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strcat.c +++ b/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strcat.c @@ -1,9 +1,18 @@ /* Generated by Frama-C */ -#include "setjmp.h" #include "signal.h" +#include "stddef.h" #include "stdio.h" #include "stdlib.h" #include "string.h" +#include "sys/select.h" +#include "sys/time.h" +#include "sys/types.h" +#include "sys/wait.h" +#include "unistd.h" +char *__gen_e_acsl_literal_string_29; +char *__gen_e_acsl_literal_string_28; +char *__gen_e_acsl_literal_string_27; +char *__gen_e_acsl_literal_string_26; char *__gen_e_acsl_literal_string_25; char *__gen_e_acsl_literal_string_24; char *__gen_e_acsl_literal_string_23; @@ -22,161 +31,463 @@ char *__gen_e_acsl_literal_string_11; char *__gen_e_acsl_literal_string_10; char *__gen_e_acsl_literal_string_9; char *__gen_e_acsl_literal_string_8; -char *__gen_e_acsl_literal_string_7; char *__gen_e_acsl_literal_string_6; -char *__gen_e_acsl_literal_string_5; -char *__gen_e_acsl_literal_string_3; char *__gen_e_acsl_literal_string; -char *__gen_e_acsl_literal_string_4; char *__gen_e_acsl_literal_string_2; +char *__gen_e_acsl_literal_string_3; +char *__gen_e_acsl_literal_string_5; +char *__gen_e_acsl_literal_string_4; +char *__gen_e_acsl_literal_string_7; extern int __e_acsl_sound_verdict; +/*@ exits status: \exit_status ≡ \old(status); + ensures never_terminates: \false; + + assigns \exit_status \from status; + */ +void __gen_e_acsl_exit(int status); + +/*@ ensures result_ok_or_error: \result ≡ -1 ∨ \result ≥ 0; + ensures + initialization: stat_loc_init_on_success: + \result ≥ 0 ∧ \old(stat_loc) ≢ \null ⇒ + \initialized(\old(stat_loc)); + assigns \result, *stat_loc; + assigns \result \from (indirect: options); + assigns *stat_loc \from (indirect: options); + + behavior stat_loc_null: + assumes stat_loc_null: stat_loc ≡ \null; + assigns \result; + assigns \result \from \nothing; + + behavior stat_loc_non_null: + assumes stat_loc_non_null: stat_loc ≢ \null; + requires valid_stat_loc: \valid(stat_loc); + */ +pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options); + +/*@ ensures + result_ok_child_or_error: + \result ≡ 0 ∨ \result > 0 ∨ \result ≡ -1; + assigns \result; + assigns \result \from \nothing; + */ +pid_t __gen_e_acsl_fork(void); + +/*@ requires valid_string_src: valid_read_string(src); + requires valid_string_dest: valid_string(dest); + requires room_string: \valid(dest + (0 .. strlen(dest) + strlen(src))); + ensures + sum_of_lengths: strlen(\old(dest)) ≡ \old(strlen(dest) + strlen(src)); + ensures + initialization: dest: + \initialized(\old(dest) + (0 .. \old(strlen(dest) + strlen(src)))); + ensures + dest_null_terminated: + *(\old(dest) + \old(strlen(dest) + strlen(src))) ≡ 0; + ensures result_ptr: \result ≡ \old(dest); + assigns *(dest + + (strlen{Old}(dest) .. strlen{Old}(dest) + strlen{Old}(src))), + \result; + assigns + *(dest + (strlen{Old}(dest) .. strlen{Old}(dest) + strlen{Old}(src))) + \from *(src + (0 .. strlen{Old}(src))); + assigns \result \from dest; + */ +char *__gen_e_acsl_strcat(char * restrict dest, char const * restrict src); + +/*@ requires valid_nstring_src: valid_read_nstring(src, n); + requires valid_string_dest: valid_string(dest); + ensures result_ptr: \result ≡ \old(dest); + assigns *(dest + (strlen{Old}(dest) .. strlen{Old}(dest) + n)), \result; + assigns *(dest + (strlen{Old}(dest) .. strlen{Old}(dest) + n)) + \from *(src + (0 .. n)); + assigns \result \from dest; + + behavior complete: + assumes + valid_string_src_fits: valid_read_string(src) ∧ strlen(src) ≤ n; + requires + room_string: \valid((dest + strlen(dest)) + (0 .. strlen(src))); + ensures + sum_of_lengths: + strlen(\old(dest)) ≡ \old(strlen(dest) + strlen(src)); + assigns *(dest + + (strlen{Old}(dest) .. strlen{Old}(dest) + strlen{Old}(src))), + \result; + assigns + *(dest + (strlen{Old}(dest) .. strlen{Old}(dest) + strlen{Old}(src))) + \from *(src + (0 .. strlen{Old}(src))); + assigns \result \from dest; + + behavior partial: + assumes + valid_string_src_too_large: + ¬(valid_read_string(src) ∧ strlen(src) ≤ n); + requires room_string: \valid((dest + strlen(dest)) + (0 .. n)); + ensures + sum_of_bounded_lengths: + strlen(\old(dest)) ≡ \old(strlen(dest)) + \old(n); + assigns *(dest + (strlen{Old}(dest) .. strlen{Old}(dest) + n)), + \result; + assigns *(dest + (strlen{Old}(dest) .. strlen{Old}(dest) + n)) + \from *(src + (0 .. strlen{Old}(src))); + assigns \result \from dest; + */ +char *__gen_e_acsl_strncat(char * restrict dest, char const * restrict src, + size_t n); + +/*@ requires valid_nstring_src: valid_read_nstring(src, n); + requires valid_string_dest: valid_string(dest); + ensures result_ptr: \result ≡ \old(dest); + assigns *(dest + (strlen{Old}(dest) .. strlen{Old}(dest) + n)), \result; + assigns *(dest + (strlen{Old}(dest) .. strlen{Old}(dest) + n)) + \from *(src + (0 .. n)); + assigns \result \from dest; + + behavior complete: + assumes + valid_string_src_fits: valid_read_string(src) ∧ strlen(src) ≤ n; + requires + room_string: \valid((dest + strlen(dest)) + (0 .. strlen(src))); + ensures + sum_of_lengths: + strlen(\old(dest)) ≡ \old(strlen(dest) + strlen(src)); + assigns *(dest + + (strlen{Old}(dest) .. strlen{Old}(dest) + strlen{Old}(src))), + \result; + assigns + *(dest + (strlen{Old}(dest) .. strlen{Old}(dest) + strlen{Old}(src))) + \from *(src + (0 .. strlen{Old}(src))); + assigns \result \from dest; + + behavior partial: + assumes + valid_string_src_too_large: + ¬(valid_read_string(src) ∧ strlen(src) ≤ n); + requires room_string: \valid((dest + strlen(dest)) + (0 .. n)); + ensures + sum_of_bounded_lengths: + strlen(\old(dest)) ≡ \old(strlen(dest)) + \old(n); + assigns *(dest + (strlen{Old}(dest) .. strlen{Old}(dest) + n)), + \result; + assigns *(dest + (strlen{Old}(dest) .. strlen{Old}(dest) + n)) + \from *(src + (0 .. strlen{Old}(src))); + assigns \result \from dest; + */ +char *__gen_e_acsl_strncat(char * restrict dest, char const * restrict src, + size_t n) +{ + char *__gen_e_acsl_at; + __e_acsl_contract_t *__gen_e_acsl_contract; + char *__retres; + __e_acsl_store_block((void *)(& dest),(size_t)8); + __gen_e_acsl_contract = __e_acsl_contract_init((size_t)2); + __gen_e_acsl_at = dest; + __retres = __e_acsl_builtin_strncat(dest,src,n); + __e_acsl_assert(__retres == __gen_e_acsl_at,1,"Postcondition","strncat", + "result_ptr: \\result == \\old(dest)", + "FRAMAC_SHARE/libc/string.h",430); + __e_acsl_contract_clean(__gen_e_acsl_contract); + __e_acsl_delete_block((void *)(& dest)); + return __retres; +} + +/*@ requires valid_string_src: valid_read_string(src); + requires valid_string_dest: valid_string(dest); + requires room_string: \valid(dest + (0 .. strlen(dest) + strlen(src))); + ensures + sum_of_lengths: strlen(\old(dest)) ≡ \old(strlen(dest) + strlen(src)); + ensures + initialization: dest: + \initialized(\old(dest) + (0 .. \old(strlen(dest) + strlen(src)))); + ensures + dest_null_terminated: + *(\old(dest) + \old(strlen(dest) + strlen(src))) ≡ 0; + ensures result_ptr: \result ≡ \old(dest); + assigns *(dest + + (strlen{Old}(dest) .. strlen{Old}(dest) + strlen{Old}(src))), + \result; + assigns + *(dest + (strlen{Old}(dest) .. strlen{Old}(dest) + strlen{Old}(src))) + \from *(src + (0 .. strlen{Old}(src))); + assigns \result \from dest; + */ +char *__gen_e_acsl_strcat(char * restrict dest, char const * restrict src) +{ + char *__gen_e_acsl_at; + char *__retres; + __e_acsl_store_block((void *)(& dest),(size_t)8); + __gen_e_acsl_at = dest; + __retres = __e_acsl_builtin_strcat(dest,src); + __e_acsl_assert(__retres == __gen_e_acsl_at,1,"Postcondition","strcat", + "result_ptr: \\result == \\old(dest)", + "FRAMAC_SHARE/libc/string.h",421); + __e_acsl_delete_block((void *)(& dest)); + return __retres; +} + +/*@ ensures + result_ok_child_or_error: + \result ≡ 0 ∨ \result > 0 ∨ \result ≡ -1; + assigns \result; + assigns \result \from \nothing; + */ +pid_t __gen_e_acsl_fork(void) +{ + pid_t __retres; + __retres = fork(); + { + int __gen_e_acsl_or; + int __gen_e_acsl_or_2; + if (__retres == 0) __gen_e_acsl_or = 1; + else __gen_e_acsl_or = __retres > 0; + if (__gen_e_acsl_or) __gen_e_acsl_or_2 = 1; + else __gen_e_acsl_or_2 = __retres == -1; + __e_acsl_assert(__gen_e_acsl_or_2,1,"Postcondition","fork", + "result_ok_child_or_error: \\result == 0 || \\result > 0 || \\result == -1", + "FRAMAC_SHARE/libc/unistd.h",859); + return __retres; + } +} + +/*@ ensures result_ok_or_error: \result ≡ -1 ∨ \result ≥ 0; + ensures + initialization: stat_loc_init_on_success: + \result ≥ 0 ∧ \old(stat_loc) ≢ \null ⇒ + \initialized(\old(stat_loc)); + assigns \result, *stat_loc; + assigns \result \from (indirect: options); + assigns *stat_loc \from (indirect: options); + + behavior stat_loc_null: + assumes stat_loc_null: stat_loc ≡ \null; + assigns \result; + assigns \result \from \nothing; + + behavior stat_loc_non_null: + assumes stat_loc_non_null: stat_loc ≢ \null; + requires valid_stat_loc: \valid(stat_loc); + */ +pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options) +{ + int *__gen_e_acsl_at_2; + int *__gen_e_acsl_at; + __e_acsl_contract_t *__gen_e_acsl_contract; + pid_t __retres; + { + int __gen_e_acsl_assumes_value; + __e_acsl_store_block((void *)(& stat_loc),(size_t)8); + __gen_e_acsl_contract = __e_acsl_contract_init((size_t)2); + __e_acsl_contract_set_behavior_assumes(__gen_e_acsl_contract,(size_t)0, + stat_loc == (int *)0); + __e_acsl_contract_set_behavior_assumes(__gen_e_acsl_contract,(size_t)1, + stat_loc != (int *)0); + __gen_e_acsl_assumes_value = __e_acsl_contract_get_behavior_assumes + ((__e_acsl_contract_t const *)__gen_e_acsl_contract,(size_t)1); + if (__gen_e_acsl_assumes_value) { + int __gen_e_acsl_valid; + __gen_e_acsl_valid = __e_acsl_valid((void *)stat_loc,sizeof(int), + (void *)stat_loc, + (void *)(& stat_loc)); + __e_acsl_assert(__gen_e_acsl_valid,1,"Precondition","waitpid", + "stat_loc_non_null: valid_stat_loc: \\valid(stat_loc)", + "FRAMAC_SHARE/libc/sys/wait.h",92); + } + } + __gen_e_acsl_at_2 = stat_loc; + __gen_e_acsl_at = stat_loc; + __retres = waitpid(pid,stat_loc,options); + { + int __gen_e_acsl_or; + int __gen_e_acsl_and; + int __gen_e_acsl_implies; + if (__retres == -1) __gen_e_acsl_or = 1; + else __gen_e_acsl_or = __retres >= 0; + __e_acsl_assert(__gen_e_acsl_or,1,"Postcondition","waitpid", + "result_ok_or_error: \\result == -1 || \\result >= 0", + "FRAMAC_SHARE/libc/sys/wait.h",84); + if (__retres >= 0) __gen_e_acsl_and = __gen_e_acsl_at != (int *)0; + else __gen_e_acsl_and = 0; + if (! __gen_e_acsl_and) __gen_e_acsl_implies = 1; + else { + int __gen_e_acsl_initialized; + __gen_e_acsl_initialized = __e_acsl_initialized((void *)__gen_e_acsl_at_2, + sizeof(int)); + __gen_e_acsl_implies = __gen_e_acsl_initialized; + } + __e_acsl_assert(__gen_e_acsl_implies,1,"Postcondition","waitpid", + "initialization: stat_loc_init_on_success:\n \\result >= 0 && \\old(stat_loc) != \\null ==> \\initialized(\\old(stat_loc))", + "FRAMAC_SHARE/libc/sys/wait.h",86); + __e_acsl_contract_clean(__gen_e_acsl_contract); + __e_acsl_delete_block((void *)(& stat_loc)); + return __retres; + } +} + +/*@ exits status: \exit_status ≡ \old(status); + ensures never_terminates: \false; + + assigns \exit_status \from status; + */ +void __gen_e_acsl_exit(int status) +{ + exit(status); + __e_acsl_assert(0,1,"Postcondition","exit","never_terminates: \\false", + "FRAMAC_SHARE/libc/stdlib.h",473); + return; +} + void __e_acsl_globals_init(void) { static char __e_acsl_already_run = 0; if (! __e_acsl_already_run) { __e_acsl_already_run = 1; - __gen_e_acsl_literal_string_25 = "tests/builtin/strcat.c:61"; - __e_acsl_store_block((void *)__gen_e_acsl_literal_string_25, + __gen_e_acsl_literal_string_29 = "tests/builtin/strcat.c:61"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_29, sizeof("tests/builtin/strcat.c:61")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_29); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_29); + __gen_e_acsl_literal_string_28 = "tests/builtin/strcat.c:60"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_28, + sizeof("tests/builtin/strcat.c:60")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_28); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_28); + __gen_e_acsl_literal_string_27 = "tests/builtin/strcat.c:59"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_27, + sizeof("tests/builtin/strcat.c:59")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_27); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_27); + __gen_e_acsl_literal_string_26 = "tests/builtin/strcat.c:57"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_26, + sizeof("tests/builtin/strcat.c:57")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_26); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_26); + __gen_e_acsl_literal_string_25 = "tests/builtin/strcat.c:56"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_25, + sizeof("tests/builtin/strcat.c:56")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_25); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_25); - __gen_e_acsl_literal_string_24 = "tests/builtin/strcat.c:60"; + __gen_e_acsl_literal_string_24 = "tests/builtin/strcat.c:55"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_24, - sizeof("tests/builtin/strcat.c:60")); + sizeof("tests/builtin/strcat.c:55")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_24); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_24); - __gen_e_acsl_literal_string_23 = "tests/builtin/strcat.c:59"; + __gen_e_acsl_literal_string_23 = "tests/builtin/strcat.c:54"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_23, - sizeof("tests/builtin/strcat.c:59")); + sizeof("tests/builtin/strcat.c:54")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_23); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_23); - __gen_e_acsl_literal_string_22 = "tests/builtin/strcat.c:57"; + __gen_e_acsl_literal_string_22 = "tests/builtin/strcat.c:53"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_22, - sizeof("tests/builtin/strcat.c:57")); + sizeof("tests/builtin/strcat.c:53")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_22); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_22); - __gen_e_acsl_literal_string_21 = "tests/builtin/strcat.c:56"; + __gen_e_acsl_literal_string_21 = "tests/builtin/strcat.c:52"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_21, - sizeof("tests/builtin/strcat.c:56")); + sizeof("tests/builtin/strcat.c:52")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_21); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_21); - __gen_e_acsl_literal_string_20 = "tests/builtin/strcat.c:55"; + __gen_e_acsl_literal_string_20 = "tests/builtin/strcat.c:51"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_20, - sizeof("tests/builtin/strcat.c:55")); + sizeof("tests/builtin/strcat.c:51")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_20); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_20); - __gen_e_acsl_literal_string_19 = "tests/builtin/strcat.c:54"; + __gen_e_acsl_literal_string_19 = "tests/builtin/strcat.c:38"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_19, - sizeof("tests/builtin/strcat.c:54")); + sizeof("tests/builtin/strcat.c:38")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_19); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_19); - __gen_e_acsl_literal_string_18 = "tests/builtin/strcat.c:53"; + __gen_e_acsl_literal_string_18 = "tests/builtin/strcat.c:37"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_18, - sizeof("tests/builtin/strcat.c:53")); + sizeof("tests/builtin/strcat.c:37")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_18); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_18); - __gen_e_acsl_literal_string_17 = "tests/builtin/strcat.c:52"; + __gen_e_acsl_literal_string_17 = "tests/builtin/strcat.c:36"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_17, - sizeof("tests/builtin/strcat.c:52")); + sizeof("tests/builtin/strcat.c:36")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_17); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_17); - __gen_e_acsl_literal_string_16 = "tests/builtin/strcat.c:51"; + __gen_e_acsl_literal_string_16 = "tests/builtin/strcat.c:35"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_16, - sizeof("tests/builtin/strcat.c:51")); + sizeof("tests/builtin/strcat.c:35")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_16); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_16); - __gen_e_acsl_literal_string_15 = "tests/builtin/strcat.c:38"; + __gen_e_acsl_literal_string_15 = "tests/builtin/strcat.c:34"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_15, - sizeof("tests/builtin/strcat.c:38")); + sizeof("tests/builtin/strcat.c:34")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_15); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_15); - __gen_e_acsl_literal_string_14 = "tests/builtin/strcat.c:37"; + __gen_e_acsl_literal_string_14 = "tests/builtin/strcat.c:33"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_14, - sizeof("tests/builtin/strcat.c:37")); + sizeof("tests/builtin/strcat.c:33")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_14); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_14); - __gen_e_acsl_literal_string_13 = "tests/builtin/strcat.c:36"; + __gen_e_acsl_literal_string_13 = "tests/builtin/strcat.c:32"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_13, - sizeof("tests/builtin/strcat.c:36")); + sizeof("tests/builtin/strcat.c:32")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_13); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_13); - __gen_e_acsl_literal_string_12 = "tests/builtin/strcat.c:35"; + __gen_e_acsl_literal_string_12 = "tests/builtin/strcat.c:31"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_12, - sizeof("tests/builtin/strcat.c:35")); + sizeof("tests/builtin/strcat.c:31")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_12); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_12); - __gen_e_acsl_literal_string_11 = "tests/builtin/strcat.c:34"; + __gen_e_acsl_literal_string_11 = "tests/builtin/strcat.c:30"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_11, - sizeof("tests/builtin/strcat.c:34")); + sizeof("tests/builtin/strcat.c:30")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_11); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_11); - __gen_e_acsl_literal_string_10 = "tests/builtin/strcat.c:33"; + __gen_e_acsl_literal_string_10 = "tests/builtin/strcat.c:29"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_10, - sizeof("tests/builtin/strcat.c:33")); + sizeof("tests/builtin/strcat.c:29")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_10); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_10); - __gen_e_acsl_literal_string_9 = "tests/builtin/strcat.c:32"; + __gen_e_acsl_literal_string_9 = "tests/builtin/strcat.c:28"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_9, - sizeof("tests/builtin/strcat.c:32")); + sizeof("tests/builtin/strcat.c:28")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_9); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_9); - __gen_e_acsl_literal_string_8 = "tests/builtin/strcat.c:31"; + __gen_e_acsl_literal_string_8 = "tests/builtin/strcat.c:27"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_8, - sizeof("tests/builtin/strcat.c:31")); + sizeof("tests/builtin/strcat.c:27")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_8); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_8); - __gen_e_acsl_literal_string_7 = "tests/builtin/strcat.c:30"; - __e_acsl_store_block((void *)__gen_e_acsl_literal_string_7, - sizeof("tests/builtin/strcat.c:30")); - __e_acsl_full_init((void *)__gen_e_acsl_literal_string_7); - __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_7); - __gen_e_acsl_literal_string_6 = "tests/builtin/strcat.c:29"; + __gen_e_acsl_literal_string_6 = "abcd"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_6, - sizeof("tests/builtin/strcat.c:29")); + sizeof("abcd")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_6); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_6); - __gen_e_acsl_literal_string_5 = "tests/builtin/strcat.c:28"; - __e_acsl_store_block((void *)__gen_e_acsl_literal_string_5, - sizeof("tests/builtin/strcat.c:28")); - __e_acsl_full_init((void *)__gen_e_acsl_literal_string_5); - __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_5); - __gen_e_acsl_literal_string_3 = "tests/builtin/strcat.c:27"; + __gen_e_acsl_literal_string = "TEST %d: "; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string, + sizeof("TEST %d: ")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string); + __gen_e_acsl_literal_string_2 = "OK: Expected signal at %s\n"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_2, + sizeof("OK: Expected signal at %s\n")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_2); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_2); + __gen_e_acsl_literal_string_3 = "OK: Expected execution at %s\n"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_3, - sizeof("tests/builtin/strcat.c:27")); + sizeof("OK: Expected execution at %s\n")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_3); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_3); - __gen_e_acsl_literal_string = "abcd"; - __e_acsl_store_block((void *)__gen_e_acsl_literal_string,sizeof("abcd")); - __e_acsl_full_init((void *)__gen_e_acsl_literal_string); - __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string); - __gen_e_acsl_literal_string_4 = "FAIL: Unexpected value return from test at %s\n"; + __gen_e_acsl_literal_string_5 = "FAIL: Unexpected signal at %s\n"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_5, + sizeof("FAIL: Unexpected signal at %s\n")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_5); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_5); + __gen_e_acsl_literal_string_4 = "FAIL: Unexpected execution at %s\n"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_4, - sizeof("FAIL: Unexpected value return from test at %s\n")); + sizeof("FAIL: Unexpected execution at %s\n")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_4); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_4); - __gen_e_acsl_literal_string_2 = ""; - __e_acsl_store_block((void *)__gen_e_acsl_literal_string_2,sizeof("")); - __e_acsl_full_init((void *)__gen_e_acsl_literal_string_2); - __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_2); - __e_acsl_store_block((void *)(& __gen_e_acsl_strncat),(size_t)1); - __e_acsl_full_init((void *)(& __gen_e_acsl_strncat)); - __e_acsl_store_block((void *)(& __gen_e_acsl_strcat),(size_t)1); - __e_acsl_full_init((void *)(& __gen_e_acsl_strcat)); - __e_acsl_store_block((void *)(& __gen_e_acsl_exit),(size_t)1); - __e_acsl_full_init((void *)(& __gen_e_acsl_exit)); - __e_acsl_store_block((void *)(& __fc_p_strerror),(size_t)8); - __e_acsl_full_init((void *)(& __fc_p_strerror)); - __e_acsl_store_block((void *)(strerror),(size_t)64); - __e_acsl_full_init((void *)(& strerror)); - __e_acsl_store_block((void *)(& __fc_strtok_ptr),(size_t)8); - __e_acsl_full_init((void *)(& __fc_strtok_ptr)); - __e_acsl_store_block((void *)(& __fc_p_fopen),(size_t)8); - __e_acsl_full_init((void *)(& __fc_p_fopen)); - __e_acsl_store_block((void *)(__fc_fopen),(size_t)128); - __e_acsl_full_init((void *)(& __fc_fopen)); - __e_acsl_store_block((void *)(& __fc_rand_max),(size_t)8); - __e_acsl_full_init((void *)(& __fc_rand_max)); + __gen_e_acsl_literal_string_7 = ""; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_7,sizeof("")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_7); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_7); } return; } @@ -186,19 +497,14 @@ int main(int argc, char const **argv) int __retres; __e_acsl_memory_init(& argc,(char ***)(& argv),(size_t)8); __e_acsl_globals_init(); - __e_acsl_store_block((void *)(& __retres),(size_t)4); - char *const_str = (char *)__gen_e_acsl_literal_string; + char *const_str = (char *)__gen_e_acsl_literal_string_6; __e_acsl_store_block((void *)(& const_str),(size_t)8); __e_acsl_full_init((void *)(& const_str)); char *unalloc_str = malloc((unsigned long)5); __e_acsl_store_block((void *)(& unalloc_str),(size_t)8); __e_acsl_full_init((void *)(& unalloc_str)); char *_barrier = malloc((unsigned long)1); - __e_acsl_store_block((void *)(& _barrier),(size_t)8); - __e_acsl_full_init((void *)(& _barrier)); - char *empty_str = (char *)__gen_e_acsl_literal_string_2; - __e_acsl_store_block((void *)(& empty_str),(size_t)8); - __e_acsl_full_init((void *)(& empty_str)); + char *empty_str = (char *)__gen_e_acsl_literal_string_7; free((void *)unalloc_str); { char dest1[9] = @@ -230,409 +536,174 @@ int main(int argc, char const **argv) __e_acsl_store_block((void *)(& pd4),(size_t)8); __e_acsl_full_init((void *)(& pd4)); { - int tmp_2; - __e_acsl_store_block((void *)(& tmp_2),(size_t)4); - sigjmp_buf *jmp_ctxt = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt)); - __e_acsl_full_init((void *)(& tmp_2)); - /*@ assert Eva: mem_access: \valid_read(jmp_ctxt); */ - tmp_2 = sigsetjmp(*jmp_ctxt,1); - switch (tmp_2) { - case 0: - { - set_handler(); - __gen_e_acsl_strcat(dest1,(char const *)const_str); - test_successful(); - break; - } - case 1: { - signal_eval(0,0,__gen_e_acsl_literal_string_3); - break; - } - case 2: { - signal_eval(1,0,__gen_e_acsl_literal_string_3); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_3); - __gen_e_acsl_exit(3); - } + pid_t pid = __gen_e_acsl_fork(); + if (! pid) { + __gen_e_acsl_strcat(dest1,(char const *)const_str); + __gen_e_acsl_exit(0); + } + else { + int process_status; + __e_acsl_store_block((void *)(& process_status),(size_t)4); + __gen_e_acsl_waitpid(pid,& process_status,0); + signal_eval(process_status,0,__gen_e_acsl_literal_string_8); + __e_acsl_delete_block((void *)(& process_status)); } - __e_acsl_delete_block((void *)(& tmp_2)); - __e_acsl_delete_block((void *)(& jmp_ctxt)); } { - int tmp_4; - __e_acsl_store_block((void *)(& tmp_4),(size_t)4); - sigjmp_buf *jmp_ctxt_0 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_0),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_0)); - __e_acsl_full_init((void *)(& tmp_4)); - tmp_4 = sigsetjmp(*jmp_ctxt_0,1); - switch (tmp_4) { - case 0: - { - set_handler(); - __gen_e_acsl_strcat(dest3,(char const *)empty_str); - test_successful(); - break; - } - case 1: { - signal_eval(0,0,__gen_e_acsl_literal_string_5); - break; - } - case 2: { - signal_eval(1,0,__gen_e_acsl_literal_string_5); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_5); - __gen_e_acsl_exit(3); - } + pid_t pid_0 = __gen_e_acsl_fork(); + if (! pid_0) { + __gen_e_acsl_strcat(dest3,(char const *)empty_str); + __gen_e_acsl_exit(0); + } + else { + int process_status_0; + __e_acsl_store_block((void *)(& process_status_0),(size_t)4); + __gen_e_acsl_waitpid(pid_0,& process_status_0,0); + signal_eval(process_status_0,0,__gen_e_acsl_literal_string_9); + __e_acsl_delete_block((void *)(& process_status_0)); } - __e_acsl_delete_block((void *)(& tmp_4)); - __e_acsl_delete_block((void *)(& jmp_ctxt_0)); } { - int tmp_6; - __e_acsl_store_block((void *)(& tmp_6),(size_t)4); - sigjmp_buf *jmp_ctxt_1 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_1),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_1)); - __e_acsl_full_init((void *)(& tmp_6)); - tmp_6 = sigsetjmp(*jmp_ctxt_1,1); - switch (tmp_6) { - case 0: - { - set_handler(); - __gen_e_acsl_strcat(dest2,(char const *)const_str); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_6); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_6); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_6); - __gen_e_acsl_exit(3); - } + pid_t pid_1 = __gen_e_acsl_fork(); + if (! pid_1) { + __gen_e_acsl_strcat(dest2,(char const *)const_str); + __gen_e_acsl_exit(0); + } + else { + int process_status_1; + __e_acsl_store_block((void *)(& process_status_1),(size_t)4); + __gen_e_acsl_waitpid(pid_1,& process_status_1,0); + signal_eval(process_status_1,1,__gen_e_acsl_literal_string_10); + __e_acsl_delete_block((void *)(& process_status_1)); } - __e_acsl_delete_block((void *)(& tmp_6)); - __e_acsl_delete_block((void *)(& jmp_ctxt_1)); } { - int tmp_8; - __e_acsl_store_block((void *)(& tmp_8),(size_t)4); - sigjmp_buf *jmp_ctxt_2 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_2),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_2)); - __e_acsl_full_init((void *)(& tmp_8)); - tmp_8 = sigsetjmp(*jmp_ctxt_2,1); - switch (tmp_8) { - case 0: - { - set_handler(); - __gen_e_acsl_strcat(unalloc_str,(char const *)const_str); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_7); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_7); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_7); - __gen_e_acsl_exit(3); - } + pid_t pid_2 = __gen_e_acsl_fork(); + if (! pid_2) { + __gen_e_acsl_strcat(unalloc_str,(char const *)const_str); + __gen_e_acsl_exit(0); + } + else { + int process_status_2; + __e_acsl_store_block((void *)(& process_status_2),(size_t)4); + __gen_e_acsl_waitpid(pid_2,& process_status_2,0); + signal_eval(process_status_2,1,__gen_e_acsl_literal_string_11); + __e_acsl_delete_block((void *)(& process_status_2)); } - __e_acsl_delete_block((void *)(& tmp_8)); - __e_acsl_delete_block((void *)(& jmp_ctxt_2)); } { - int tmp_10; - __e_acsl_store_block((void *)(& tmp_10),(size_t)4); - sigjmp_buf *jmp_ctxt_3 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_3),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_3)); - __e_acsl_full_init((void *)(& tmp_10)); - tmp_10 = sigsetjmp(*jmp_ctxt_3,1); - switch (tmp_10) { - case 0: - { - set_handler(); - __gen_e_acsl_strcat(dest2,(char const *)unalloc_str); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_8); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_8); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_8); - __gen_e_acsl_exit(3); - } + pid_t pid_3 = __gen_e_acsl_fork(); + if (! pid_3) { + __gen_e_acsl_strcat(dest2,(char const *)unalloc_str); + __gen_e_acsl_exit(0); + } + else { + int process_status_3; + __e_acsl_store_block((void *)(& process_status_3),(size_t)4); + __gen_e_acsl_waitpid(pid_3,& process_status_3,0); + signal_eval(process_status_3,1,__gen_e_acsl_literal_string_12); + __e_acsl_delete_block((void *)(& process_status_3)); } - __e_acsl_delete_block((void *)(& tmp_10)); - __e_acsl_delete_block((void *)(& jmp_ctxt_3)); } { - int tmp_12; - __e_acsl_store_block((void *)(& tmp_12),(size_t)4); - sigjmp_buf *jmp_ctxt_4 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_4),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_4)); - __e_acsl_full_init((void *)(& tmp_12)); - tmp_12 = sigsetjmp(*jmp_ctxt_4,1); - switch (tmp_12) { - case 0: - { - set_handler(); - __gen_e_acsl_strcat((char *)0,__gen_e_acsl_literal_string_2); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_9); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_9); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_9); - __gen_e_acsl_exit(3); - } + pid_t pid_4 = __gen_e_acsl_fork(); + if (! pid_4) { + __gen_e_acsl_strcat((char *)0,__gen_e_acsl_literal_string_7); + __gen_e_acsl_exit(0); + } + else { + int process_status_4; + __e_acsl_store_block((void *)(& process_status_4),(size_t)4); + __gen_e_acsl_waitpid(pid_4,& process_status_4,0); + signal_eval(process_status_4,1,__gen_e_acsl_literal_string_13); + __e_acsl_delete_block((void *)(& process_status_4)); } - __e_acsl_delete_block((void *)(& tmp_12)); - __e_acsl_delete_block((void *)(& jmp_ctxt_4)); } { - int tmp_14; - __e_acsl_store_block((void *)(& tmp_14),(size_t)4); - sigjmp_buf *jmp_ctxt_5 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_5),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_5)); - __e_acsl_full_init((void *)(& tmp_14)); - tmp_14 = sigsetjmp(*jmp_ctxt_5,1); - switch (tmp_14) { - case 0: - { - set_handler(); - __gen_e_acsl_strcat(dest1,(char const *)0); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_10); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_10); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4, - __gen_e_acsl_literal_string_10); - __gen_e_acsl_exit(3); - } + pid_t pid_5 = __gen_e_acsl_fork(); + if (! pid_5) { + __gen_e_acsl_strcat(dest1,(char const *)0); + __gen_e_acsl_exit(0); + } + else { + int process_status_5; + __e_acsl_store_block((void *)(& process_status_5),(size_t)4); + __gen_e_acsl_waitpid(pid_5,& process_status_5,0); + signal_eval(process_status_5,1,__gen_e_acsl_literal_string_14); + __e_acsl_delete_block((void *)(& process_status_5)); } - __e_acsl_delete_block((void *)(& tmp_14)); - __e_acsl_delete_block((void *)(& jmp_ctxt_5)); } { - int tmp_16; - __e_acsl_store_block((void *)(& tmp_16),(size_t)4); - sigjmp_buf *jmp_ctxt_6 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_6),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_6)); - __e_acsl_full_init((void *)(& tmp_16)); - tmp_16 = sigsetjmp(*jmp_ctxt_6,1); - switch (tmp_16) { - case 0: - { - set_handler(); - __gen_e_acsl_strcat(const_str,(char const *)const_str); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_11); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_11); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4, - __gen_e_acsl_literal_string_11); - __gen_e_acsl_exit(3); - } + pid_t pid_6 = __gen_e_acsl_fork(); + if (! pid_6) { + __gen_e_acsl_strcat(const_str,(char const *)const_str); + __gen_e_acsl_exit(0); + } + else { + int process_status_6; + __e_acsl_store_block((void *)(& process_status_6),(size_t)4); + __gen_e_acsl_waitpid(pid_6,& process_status_6,0); + signal_eval(process_status_6,1,__gen_e_acsl_literal_string_15); + __e_acsl_delete_block((void *)(& process_status_6)); } - __e_acsl_delete_block((void *)(& tmp_16)); - __e_acsl_delete_block((void *)(& jmp_ctxt_6)); } { - int tmp_18; - __e_acsl_store_block((void *)(& tmp_18),(size_t)4); - sigjmp_buf *jmp_ctxt_7 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_7),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_7)); - __e_acsl_full_init((void *)(& tmp_18)); - tmp_18 = sigsetjmp(*jmp_ctxt_7,1); - switch (tmp_18) { - case 0: - { - set_handler(); - __gen_e_acsl_strcat(pd1,(char const *)pd1); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_12); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_12); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4, - __gen_e_acsl_literal_string_12); - __gen_e_acsl_exit(3); - } + pid_t pid_7 = __gen_e_acsl_fork(); + if (! pid_7) { + __gen_e_acsl_strcat(pd1,(char const *)pd1); + __gen_e_acsl_exit(0); + } + else { + int process_status_7; + __e_acsl_store_block((void *)(& process_status_7),(size_t)4); + __gen_e_acsl_waitpid(pid_7,& process_status_7,0); + signal_eval(process_status_7,1,__gen_e_acsl_literal_string_16); + __e_acsl_delete_block((void *)(& process_status_7)); } - __e_acsl_delete_block((void *)(& tmp_18)); - __e_acsl_delete_block((void *)(& jmp_ctxt_7)); } { - int tmp_20; - __e_acsl_store_block((void *)(& tmp_20),(size_t)4); - sigjmp_buf *jmp_ctxt_8 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_8),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_8)); - __e_acsl_full_init((void *)(& tmp_20)); - tmp_20 = sigsetjmp(*jmp_ctxt_8,1); - switch (tmp_20) { - case 0: - { - set_handler(); - __gen_e_acsl_strcat(pd1 + 3,(char const *)pd1); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_13); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_13); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4, - __gen_e_acsl_literal_string_13); - __gen_e_acsl_exit(3); - } + pid_t pid_8 = __gen_e_acsl_fork(); + if (! pid_8) { + __gen_e_acsl_strcat(pd1 + 3,(char const *)pd1); + __gen_e_acsl_exit(0); + } + else { + int process_status_8; + __e_acsl_store_block((void *)(& process_status_8),(size_t)4); + __gen_e_acsl_waitpid(pid_8,& process_status_8,0); + signal_eval(process_status_8,1,__gen_e_acsl_literal_string_17); + __e_acsl_delete_block((void *)(& process_status_8)); } - __e_acsl_delete_block((void *)(& tmp_20)); - __e_acsl_delete_block((void *)(& jmp_ctxt_8)); } { - int tmp_22; - __e_acsl_store_block((void *)(& tmp_22),(size_t)4); - sigjmp_buf *jmp_ctxt_9 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_9),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_9)); - __e_acsl_full_init((void *)(& tmp_22)); - tmp_22 = sigsetjmp(*jmp_ctxt_9,1); - switch (tmp_22) { - case 0: - { - set_handler(); - __gen_e_acsl_strcat(pd4 + 4,(char const *)pd4); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_14); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_14); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4, - __gen_e_acsl_literal_string_14); - __gen_e_acsl_exit(3); - } + pid_t pid_9 = __gen_e_acsl_fork(); + if (! pid_9) { + __gen_e_acsl_strcat(pd4 + 4,(char const *)pd4); + __gen_e_acsl_exit(0); + } + else { + int process_status_9; + __e_acsl_store_block((void *)(& process_status_9),(size_t)4); + __gen_e_acsl_waitpid(pid_9,& process_status_9,0); + signal_eval(process_status_9,1,__gen_e_acsl_literal_string_18); + __e_acsl_delete_block((void *)(& process_status_9)); } - __e_acsl_delete_block((void *)(& tmp_22)); - __e_acsl_delete_block((void *)(& jmp_ctxt_9)); } { - int tmp_24; - __e_acsl_store_block((void *)(& tmp_24),(size_t)4); - sigjmp_buf *jmp_ctxt_10 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_10),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_10)); - __e_acsl_full_init((void *)(& tmp_24)); - tmp_24 = sigsetjmp(*jmp_ctxt_10,1); - switch (tmp_24) { - case 0: - { - set_handler(); - __e_acsl_initialize((void *)(pd4 + 5),sizeof(char)); - *(pd4 + 5) = (char)'\000'; - __gen_e_acsl_strcat(pd4 + 5,(char const *)pd4); - test_successful(); - break; - } - case 1: { - signal_eval(0,0,__gen_e_acsl_literal_string_15); - break; - } - case 2: { - signal_eval(1,0,__gen_e_acsl_literal_string_15); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4, - __gen_e_acsl_literal_string_15); - __gen_e_acsl_exit(3); - } + pid_t pid_10 = __gen_e_acsl_fork(); + if (! pid_10) { + __e_acsl_initialize((void *)(pd4 + 5),sizeof(char)); + *(pd4 + 5) = (char)'\000'; + __gen_e_acsl_strcat(pd4 + 5,(char const *)pd4); + __gen_e_acsl_exit(0); + } + else { + int process_status_10; + __e_acsl_store_block((void *)(& process_status_10),(size_t)4); + __gen_e_acsl_waitpid(pid_10,& process_status_10,0); + signal_eval(process_status_10,0,__gen_e_acsl_literal_string_19); + __e_acsl_delete_block((void *)(& process_status_10)); } - __e_acsl_delete_block((void *)(& tmp_24)); - __e_acsl_delete_block((void *)(& jmp_ctxt_10)); __e_acsl_delete_block((void *)(& pd4)); __e_acsl_delete_block((void *)(& pd3)); __e_acsl_delete_block((void *)(& pd2)); @@ -673,352 +744,150 @@ int main(int argc, char const **argv) __e_acsl_store_block((void *)(& pd4_0),(size_t)8); __e_acsl_full_init((void *)(& pd4_0)); { - int tmp_26; - __e_acsl_store_block((void *)(& tmp_26),(size_t)4); - sigjmp_buf *jmp_ctxt_11 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_11),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_11)); - __e_acsl_full_init((void *)(& tmp_26)); - tmp_26 = sigsetjmp(*jmp_ctxt_11,1); - switch (tmp_26) { - case 0: - { - set_handler(); - __gen_e_acsl_strncat(dest1_0,(char const *)const_str, - (unsigned long)4); - test_successful(); - break; - } - case 1: { - signal_eval(0,0,__gen_e_acsl_literal_string_16); - break; - } - case 2: { - signal_eval(1,0,__gen_e_acsl_literal_string_16); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4, - __gen_e_acsl_literal_string_16); - __gen_e_acsl_exit(3); - } + pid_t pid_11 = __gen_e_acsl_fork(); + if (! pid_11) { + __gen_e_acsl_strncat(dest1_0,(char const *)const_str, + (unsigned long)4); + __gen_e_acsl_exit(0); + } + else { + int process_status_11; + __e_acsl_store_block((void *)(& process_status_11),(size_t)4); + __gen_e_acsl_waitpid(pid_11,& process_status_11,0); + signal_eval(process_status_11,0,__gen_e_acsl_literal_string_20); + __e_acsl_delete_block((void *)(& process_status_11)); } - __e_acsl_delete_block((void *)(& tmp_26)); - __e_acsl_delete_block((void *)(& jmp_ctxt_11)); } { - int tmp_28; - __e_acsl_store_block((void *)(& tmp_28),(size_t)4); - sigjmp_buf *jmp_ctxt_12 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_12),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_12)); - __e_acsl_full_init((void *)(& tmp_28)); - tmp_28 = sigsetjmp(*jmp_ctxt_12,1); - switch (tmp_28) { - case 0: - { - set_handler(); - __gen_e_acsl_strncat(dest2_0,(char const *)const_str, - (unsigned long)4); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_17); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_17); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4, - __gen_e_acsl_literal_string_17); - __gen_e_acsl_exit(3); - } + pid_t pid_12 = __gen_e_acsl_fork(); + if (! pid_12) { + __gen_e_acsl_strncat(dest2_0,(char const *)const_str, + (unsigned long)4); + __gen_e_acsl_exit(0); + } + else { + int process_status_12; + __e_acsl_store_block((void *)(& process_status_12),(size_t)4); + __gen_e_acsl_waitpid(pid_12,& process_status_12,0); + signal_eval(process_status_12,1,__gen_e_acsl_literal_string_21); + __e_acsl_delete_block((void *)(& process_status_12)); } - __e_acsl_delete_block((void *)(& tmp_28)); - __e_acsl_delete_block((void *)(& jmp_ctxt_12)); } { - int tmp_30; - __e_acsl_store_block((void *)(& tmp_30),(size_t)4); - sigjmp_buf *jmp_ctxt_13 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_13),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_13)); - __e_acsl_full_init((void *)(& tmp_30)); - tmp_30 = sigsetjmp(*jmp_ctxt_13,1); - switch (tmp_30) { - case 0: - { - set_handler(); - __gen_e_acsl_strncat(unalloc_str,(char const *)const_str, - (unsigned long)1); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_18); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_18); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4, - __gen_e_acsl_literal_string_18); - __gen_e_acsl_exit(3); - } + pid_t pid_13 = __gen_e_acsl_fork(); + if (! pid_13) { + __gen_e_acsl_strncat(unalloc_str,(char const *)const_str, + (unsigned long)1); + __gen_e_acsl_exit(0); + } + else { + int process_status_13; + __e_acsl_store_block((void *)(& process_status_13),(size_t)4); + __gen_e_acsl_waitpid(pid_13,& process_status_13,0); + signal_eval(process_status_13,1,__gen_e_acsl_literal_string_22); + __e_acsl_delete_block((void *)(& process_status_13)); } - __e_acsl_delete_block((void *)(& tmp_30)); - __e_acsl_delete_block((void *)(& jmp_ctxt_13)); } { - int tmp_32; - __e_acsl_store_block((void *)(& tmp_32),(size_t)4); - sigjmp_buf *jmp_ctxt_14 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_14),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_14)); - __e_acsl_full_init((void *)(& tmp_32)); - tmp_32 = sigsetjmp(*jmp_ctxt_14,1); - switch (tmp_32) { - case 0: - { - set_handler(); - __gen_e_acsl_strncat(dest2_0,(char const *)unalloc_str, - (unsigned long)1); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_19); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_19); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4, - __gen_e_acsl_literal_string_19); - __gen_e_acsl_exit(3); - } + pid_t pid_14 = __gen_e_acsl_fork(); + if (! pid_14) { + __gen_e_acsl_strncat(dest2_0,(char const *)unalloc_str, + (unsigned long)1); + __gen_e_acsl_exit(0); + } + else { + int process_status_14; + __e_acsl_store_block((void *)(& process_status_14),(size_t)4); + __gen_e_acsl_waitpid(pid_14,& process_status_14,0); + signal_eval(process_status_14,1,__gen_e_acsl_literal_string_23); + __e_acsl_delete_block((void *)(& process_status_14)); } - __e_acsl_delete_block((void *)(& tmp_32)); - __e_acsl_delete_block((void *)(& jmp_ctxt_14)); } { - int tmp_34; - __e_acsl_store_block((void *)(& tmp_34),(size_t)4); - sigjmp_buf *jmp_ctxt_15 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_15),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_15)); - __e_acsl_full_init((void *)(& tmp_34)); - tmp_34 = sigsetjmp(*jmp_ctxt_15,1); - switch (tmp_34) { - case 0: - { - set_handler(); - __gen_e_acsl_strncat((char *)0,(char const *)const_str, - (unsigned long)1); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_20); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_20); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4, - __gen_e_acsl_literal_string_20); - __gen_e_acsl_exit(3); - } + pid_t pid_15 = __gen_e_acsl_fork(); + if (! pid_15) { + __gen_e_acsl_strncat((char *)0,(char const *)const_str, + (unsigned long)1); + __gen_e_acsl_exit(0); + } + else { + int process_status_15; + __e_acsl_store_block((void *)(& process_status_15),(size_t)4); + __gen_e_acsl_waitpid(pid_15,& process_status_15,0); + signal_eval(process_status_15,1,__gen_e_acsl_literal_string_24); + __e_acsl_delete_block((void *)(& process_status_15)); } - __e_acsl_delete_block((void *)(& tmp_34)); - __e_acsl_delete_block((void *)(& jmp_ctxt_15)); } { - int tmp_36; - __e_acsl_store_block((void *)(& tmp_36),(size_t)4); - sigjmp_buf *jmp_ctxt_16 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_16),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_16)); - __e_acsl_full_init((void *)(& tmp_36)); - tmp_36 = sigsetjmp(*jmp_ctxt_16,1); - switch (tmp_36) { - case 0: - { - set_handler(); - __gen_e_acsl_strncat(dest2_0,(char const *)0,(unsigned long)1); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_21); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_21); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4, - __gen_e_acsl_literal_string_21); - __gen_e_acsl_exit(3); - } + pid_t pid_16 = __gen_e_acsl_fork(); + if (! pid_16) { + __gen_e_acsl_strncat(dest2_0,(char const *)0,(unsigned long)1); + __gen_e_acsl_exit(0); + } + else { + int process_status_16; + __e_acsl_store_block((void *)(& process_status_16),(size_t)4); + __gen_e_acsl_waitpid(pid_16,& process_status_16,0); + signal_eval(process_status_16,1,__gen_e_acsl_literal_string_25); + __e_acsl_delete_block((void *)(& process_status_16)); } - __e_acsl_delete_block((void *)(& tmp_36)); - __e_acsl_delete_block((void *)(& jmp_ctxt_16)); } { - int tmp_38; - __e_acsl_store_block((void *)(& tmp_38),(size_t)4); - sigjmp_buf *jmp_ctxt_17 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_17),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_17)); - __e_acsl_full_init((void *)(& tmp_38)); - tmp_38 = sigsetjmp(*jmp_ctxt_17,1); - switch (tmp_38) { - case 0: - { - set_handler(); - __gen_e_acsl_strncat(const_str,(char const *)const_str, - (unsigned long)1); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_22); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_22); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4, - __gen_e_acsl_literal_string_22); - __gen_e_acsl_exit(3); - } + pid_t pid_17 = __gen_e_acsl_fork(); + if (! pid_17) { + __gen_e_acsl_strncat(const_str,(char const *)const_str, + (unsigned long)1); + __gen_e_acsl_exit(0); + } + else { + int process_status_17; + __e_acsl_store_block((void *)(& process_status_17),(size_t)4); + __gen_e_acsl_waitpid(pid_17,& process_status_17,0); + signal_eval(process_status_17,1,__gen_e_acsl_literal_string_26); + __e_acsl_delete_block((void *)(& process_status_17)); } - __e_acsl_delete_block((void *)(& tmp_38)); - __e_acsl_delete_block((void *)(& jmp_ctxt_17)); } { - int tmp_40; - __e_acsl_store_block((void *)(& tmp_40),(size_t)4); - sigjmp_buf *jmp_ctxt_18 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_18),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_18)); - __e_acsl_full_init((void *)(& tmp_40)); - tmp_40 = sigsetjmp(*jmp_ctxt_18,1); - switch (tmp_40) { - case 0: - { - set_handler(); - __gen_e_acsl_strncat(pd1_0,(char const *)pd1_0,(unsigned long)1); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_23); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_23); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4, - __gen_e_acsl_literal_string_23); - __gen_e_acsl_exit(3); - } + pid_t pid_18 = __gen_e_acsl_fork(); + if (! pid_18) { + __gen_e_acsl_strncat(pd1_0,(char const *)pd1_0,(unsigned long)1); + __gen_e_acsl_exit(0); + } + else { + int process_status_18; + __e_acsl_store_block((void *)(& process_status_18),(size_t)4); + __gen_e_acsl_waitpid(pid_18,& process_status_18,0); + signal_eval(process_status_18,1,__gen_e_acsl_literal_string_27); + __e_acsl_delete_block((void *)(& process_status_18)); } - __e_acsl_delete_block((void *)(& tmp_40)); - __e_acsl_delete_block((void *)(& jmp_ctxt_18)); } { - int tmp_42; - __e_acsl_store_block((void *)(& tmp_42),(size_t)4); - sigjmp_buf *jmp_ctxt_19 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_19),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_19)); - __e_acsl_full_init((void *)(& tmp_42)); - tmp_42 = sigsetjmp(*jmp_ctxt_19,1); - switch (tmp_42) { - case 0: - { - set_handler(); - __gen_e_acsl_strncat(pd1_0 + 3,(char const *)pd1_0, - (unsigned long)5); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_24); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_24); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4, - __gen_e_acsl_literal_string_24); - __gen_e_acsl_exit(3); - } + pid_t pid_19 = __gen_e_acsl_fork(); + if (! pid_19) { + __gen_e_acsl_strncat(pd1_0 + 3,(char const *)pd1_0,(unsigned long)5); + __gen_e_acsl_exit(0); + } + else { + int process_status_19; + __e_acsl_store_block((void *)(& process_status_19),(size_t)4); + __gen_e_acsl_waitpid(pid_19,& process_status_19,0); + signal_eval(process_status_19,1,__gen_e_acsl_literal_string_28); + __e_acsl_delete_block((void *)(& process_status_19)); } - __e_acsl_delete_block((void *)(& tmp_42)); - __e_acsl_delete_block((void *)(& jmp_ctxt_19)); } { - int tmp_44; - __e_acsl_store_block((void *)(& tmp_44),(size_t)4); - sigjmp_buf *jmp_ctxt_20 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_20),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_20)); - __e_acsl_full_init((void *)(& tmp_44)); - tmp_44 = sigsetjmp(*jmp_ctxt_20,1); - switch (tmp_44) { - case 0: - { - set_handler(); - __gen_e_acsl_strncat(pd4_0 + 4,(char const *)pd4_0, - (unsigned long)5); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_25); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_25); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4, - __gen_e_acsl_literal_string_25); - __gen_e_acsl_exit(3); - } + pid_t pid_20 = __gen_e_acsl_fork(); + if (! pid_20) { + __gen_e_acsl_strncat(pd4_0 + 4,(char const *)pd4_0,(unsigned long)5); + __gen_e_acsl_exit(0); + } + else { + int process_status_20; + __e_acsl_store_block((void *)(& process_status_20),(size_t)4); + __gen_e_acsl_waitpid(pid_20,& process_status_20,0); + signal_eval(process_status_20,1,__gen_e_acsl_literal_string_29); + __e_acsl_delete_block((void *)(& process_status_20)); } - __e_acsl_delete_block((void *)(& tmp_44)); - __e_acsl_delete_block((void *)(& jmp_ctxt_20)); __e_acsl_delete_block((void *)(& pd4_0)); __e_acsl_delete_block((void *)(& pd3_0)); __e_acsl_delete_block((void *)(& pd2_0)); @@ -1029,21 +898,9 @@ int main(int argc, char const **argv) __e_acsl_delete_block((void *)(dest1_0)); } } - __e_acsl_full_init((void *)(& __retres)); __retres = 0; - __e_acsl_delete_block((void *)(& argv)); - __e_acsl_delete_block((void *)(& argc)); - __e_acsl_delete_block((void *)(& __fc_p_strerror)); - __e_acsl_delete_block((void *)(strerror)); - __e_acsl_delete_block((void *)(& __fc_strtok_ptr)); - __e_acsl_delete_block((void *)(& __fc_p_fopen)); - __e_acsl_delete_block((void *)(__fc_fopen)); - __e_acsl_delete_block((void *)(& __fc_rand_max)); - __e_acsl_delete_block((void *)(& empty_str)); - __e_acsl_delete_block((void *)(& _barrier)); __e_acsl_delete_block((void *)(& unalloc_str)); __e_acsl_delete_block((void *)(& const_str)); - __e_acsl_delete_block((void *)(& __retres)); __e_acsl_memory_clean(); return __retres; } diff --git a/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strcmp.c b/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strcmp.c index 6f6f697e18a8f9b2be86d320185e08b36d897296..5032458f73323645d0ec6794819761816c63528d 100644 --- a/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strcmp.c +++ b/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strcmp.c @@ -1,17 +1,26 @@ /* Generated by Frama-C */ -#include "setjmp.h" #include "signal.h" +#include "stddef.h" #include "stdio.h" #include "stdlib.h" #include "string.h" +#include "sys/select.h" +#include "sys/time.h" +#include "sys/types.h" +#include "sys/wait.h" +#include "unistd.h" +char *__gen_e_acsl_literal_string_32; +char *__gen_e_acsl_literal_string_31; +char *__gen_e_acsl_literal_string_30; +char *__gen_e_acsl_literal_string_29; char *__gen_e_acsl_literal_string_28; char *__gen_e_acsl_literal_string_27; char *__gen_e_acsl_literal_string_26; char *__gen_e_acsl_literal_string_25; -char *__gen_e_acsl_literal_string_24; char *__gen_e_acsl_literal_string_23; char *__gen_e_acsl_literal_string_22; char *__gen_e_acsl_literal_string_21; +char *__gen_e_acsl_literal_string_20; char *__gen_e_acsl_literal_string_19; char *__gen_e_acsl_literal_string_18; char *__gen_e_acsl_literal_string_17; @@ -25,29 +34,323 @@ char *__gen_e_acsl_literal_string_10; char *__gen_e_acsl_literal_string_9; char *__gen_e_acsl_literal_string_8; char *__gen_e_acsl_literal_string_7; +char *__gen_e_acsl_literal_string_24; char *__gen_e_acsl_literal_string_6; -char *__gen_e_acsl_literal_string_5; -char *__gen_e_acsl_literal_string_3; -char *__gen_e_acsl_literal_string_2; -char *__gen_e_acsl_literal_string_20; char *__gen_e_acsl_literal_string; +char *__gen_e_acsl_literal_string_2; +char *__gen_e_acsl_literal_string_3; +char *__gen_e_acsl_literal_string_5; char *__gen_e_acsl_literal_string_4; extern int __e_acsl_sound_verdict; +/*@ exits status: \exit_status ≢ 0; + ensures never_terminates: \false; + + assigns \exit_status \from \nothing; + */ +void __gen_e_acsl_abort(void); + +/*@ exits status: \exit_status ≡ \old(status); + ensures never_terminates: \false; + + assigns \exit_status \from status; + */ +void __gen_e_acsl_exit(int status); + +/*@ ensures result_ok_or_error: \result ≡ -1 ∨ \result ≥ 0; + ensures + initialization: stat_loc_init_on_success: + \result ≥ 0 ∧ \old(stat_loc) ≢ \null ⇒ + \initialized(\old(stat_loc)); + assigns \result, *stat_loc; + assigns \result \from (indirect: options); + assigns *stat_loc \from (indirect: options); + + behavior stat_loc_null: + assumes stat_loc_null: stat_loc ≡ \null; + assigns \result; + assigns \result \from \nothing; + + behavior stat_loc_non_null: + assumes stat_loc_non_null: stat_loc ≢ \null; + requires valid_stat_loc: \valid(stat_loc); + */ +pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options); + +/*@ ensures + result_ok_child_or_error: + \result ≡ 0 ∨ \result > 0 ∨ \result ≡ -1; + assigns \result; + assigns \result \from \nothing; + */ +pid_t __gen_e_acsl_fork(void); + +/*@ requires valid_string_s1: valid_read_string(s1); + requires valid_string_s2: valid_read_string(s2); + ensures acsl_c_equiv: \result ≡ strcmp(\old(s1), \old(s2)); + assigns \result; + assigns \result + \from (indirect: *(s1 + (0 ..))), (indirect: *(s2 + (0 ..))); + */ +int __gen_e_acsl_strcmp(char const *s1, char const *s2); + +/*@ requires valid_string_s1: valid_read_nstring(s1, n); + requires valid_string_s2: valid_read_nstring(s2, n); + ensures acsl_c_equiv: \result ≡ strncmp(\old(s1), \old(s2), \old(n)); + assigns \result; + assigns \result + \from (indirect: *(s1 + (0 .. n - 1))), + (indirect: *(s2 + (0 .. n - 1))), (indirect: n); + */ +int __gen_e_acsl_strncmp(char const *s1, char const *s2, size_t n); + +/*@ requires valid_string_s: valid_read_string(s); + assigns \result; + assigns \result + \from (indirect: *(s + (0 .. strlen{Old}(s)))), + (indirect: __fc_heap_status); + allocates \result; + + behavior allocation: + assumes can_allocate: is_allocable(strlen(s)); + ensures allocation: \fresh{Old, Here}(\result,strlen(\old(s))); + ensures + result_valid_string_and_same_contents: + valid_string(\result) ∧ strcmp(\result, \old(s)) ≡ 0; + assigns __fc_heap_status, \result; + assigns __fc_heap_status \from (indirect: s), __fc_heap_status; + assigns \result + \from (indirect: *(s + (0 .. strlen{Old}(s)))), + (indirect: __fc_heap_status); + + behavior no_allocation: + assumes cannot_allocate: ¬is_allocable(strlen(s)); + ensures result_null: \result ≡ \null; + assigns \result; + assigns \result \from \nothing; + allocates \nothing; + */ +char *__gen_e_acsl_strdup(char const *s); + __inline static void fail_ncomp(int cond, char *fmt, int l, int r) { - __e_acsl_store_block((void *)(& r),(size_t)4); - __e_acsl_store_block((void *)(& l),(size_t)4); - __e_acsl_store_block((void *)(& fmt),(size_t)8); - __e_acsl_store_block((void *)(& cond),(size_t)4); if (cond) { - fprintf(stderr,(char const *)fmt,l,r); + { + int __va_arg0 = l; + __e_acsl_store_block((void *)(& __va_arg0),(size_t)4); + __e_acsl_full_init((void *)(& __va_arg0)); + int __va_arg1 = r; + __e_acsl_store_block((void *)(& __va_arg1),(size_t)4); + __e_acsl_full_init((void *)(& __va_arg1)); + void *__va_args[2] = {& __va_arg0, & __va_arg1}; + __e_acsl_store_block((void *)(__va_args),(size_t)16); + __e_acsl_full_init((void *)(& __va_args)); + fprintf(stderr,(char const *)fmt,(void * const *)(__va_args)); + __e_acsl_delete_block((void *)(& __va_arg0)); + __e_acsl_delete_block((void *)(& __va_arg1)); + __e_acsl_delete_block((void *)(__va_args)); + } __gen_e_acsl_abort(); } - __e_acsl_delete_block((void *)(& r)); - __e_acsl_delete_block((void *)(& l)); - __e_acsl_delete_block((void *)(& fmt)); - __e_acsl_delete_block((void *)(& cond)); + return; +} + +/*@ requires valid_string_s: valid_read_string(s); + assigns \result; + assigns \result + \from (indirect: *(s + (0 .. strlen{Old}(s)))), + (indirect: __fc_heap_status); + allocates \result; + + behavior allocation: + assumes can_allocate: is_allocable(strlen(s)); + ensures allocation: \fresh{Old, Here}(\result,strlen(\old(s))); + ensures + result_valid_string_and_same_contents: + valid_string(\result) ∧ strcmp(\result, \old(s)) ≡ 0; + assigns __fc_heap_status, \result; + assigns __fc_heap_status \from (indirect: s), __fc_heap_status; + assigns \result + \from (indirect: *(s + (0 .. strlen{Old}(s)))), + (indirect: __fc_heap_status); + + behavior no_allocation: + assumes cannot_allocate: ¬is_allocable(strlen(s)); + ensures result_null: \result ≡ \null; + assigns \result; + assigns \result \from \nothing; + allocates \nothing; + */ +char *__gen_e_acsl_strdup(char const *s) +{ + __e_acsl_contract_t *__gen_e_acsl_contract; + char *__retres; + __gen_e_acsl_contract = __e_acsl_contract_init((size_t)2); + __retres = strdup(s); + { + int __gen_e_acsl_assumes_value; + __gen_e_acsl_assumes_value = __e_acsl_contract_get_behavior_assumes + ((__e_acsl_contract_t const *)__gen_e_acsl_contract,(size_t)1); + if (__gen_e_acsl_assumes_value) __e_acsl_assert(__retres == (char *)0,1, + "Postcondition","strdup", + "no_allocation: result_null: \\result == \\null", + "FRAMAC_SHARE/libc/string.h", + 485); + __e_acsl_contract_clean(__gen_e_acsl_contract); + return __retres; + } +} + +/*@ requires valid_string_s1: valid_read_nstring(s1, n); + requires valid_string_s2: valid_read_nstring(s2, n); + ensures acsl_c_equiv: \result ≡ strncmp(\old(s1), \old(s2), \old(n)); + assigns \result; + assigns \result + \from (indirect: *(s1 + (0 .. n - 1))), + (indirect: *(s2 + (0 .. n - 1))), (indirect: n); + */ +int __gen_e_acsl_strncmp(char const *s1, char const *s2, size_t n) +{ + int __retres; + __retres = __e_acsl_builtin_strncmp(s1,s2,n); + return __retres; +} + +/*@ requires valid_string_s1: valid_read_string(s1); + requires valid_string_s2: valid_read_string(s2); + ensures acsl_c_equiv: \result ≡ strcmp(\old(s1), \old(s2)); + assigns \result; + assigns \result + \from (indirect: *(s1 + (0 ..))), (indirect: *(s2 + (0 ..))); + */ +int __gen_e_acsl_strcmp(char const *s1, char const *s2) +{ + int __retres; + __retres = __e_acsl_builtin_strcmp(s1,s2); + return __retres; +} + +/*@ ensures + result_ok_child_or_error: + \result ≡ 0 ∨ \result > 0 ∨ \result ≡ -1; + assigns \result; + assigns \result \from \nothing; + */ +pid_t __gen_e_acsl_fork(void) +{ + pid_t __retres; + __retres = fork(); + { + int __gen_e_acsl_or; + int __gen_e_acsl_or_2; + if (__retres == 0) __gen_e_acsl_or = 1; + else __gen_e_acsl_or = __retres > 0; + if (__gen_e_acsl_or) __gen_e_acsl_or_2 = 1; + else __gen_e_acsl_or_2 = __retres == -1; + __e_acsl_assert(__gen_e_acsl_or_2,1,"Postcondition","fork", + "result_ok_child_or_error: \\result == 0 || \\result > 0 || \\result == -1", + "FRAMAC_SHARE/libc/unistd.h",859); + return __retres; + } +} + +/*@ ensures result_ok_or_error: \result ≡ -1 ∨ \result ≥ 0; + ensures + initialization: stat_loc_init_on_success: + \result ≥ 0 ∧ \old(stat_loc) ≢ \null ⇒ + \initialized(\old(stat_loc)); + assigns \result, *stat_loc; + assigns \result \from (indirect: options); + assigns *stat_loc \from (indirect: options); + + behavior stat_loc_null: + assumes stat_loc_null: stat_loc ≡ \null; + assigns \result; + assigns \result \from \nothing; + + behavior stat_loc_non_null: + assumes stat_loc_non_null: stat_loc ≢ \null; + requires valid_stat_loc: \valid(stat_loc); + */ +pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options) +{ + int *__gen_e_acsl_at_2; + int *__gen_e_acsl_at; + __e_acsl_contract_t *__gen_e_acsl_contract; + pid_t __retres; + { + int __gen_e_acsl_assumes_value; + __e_acsl_store_block((void *)(& stat_loc),(size_t)8); + __gen_e_acsl_contract = __e_acsl_contract_init((size_t)2); + __e_acsl_contract_set_behavior_assumes(__gen_e_acsl_contract,(size_t)0, + stat_loc == (int *)0); + __e_acsl_contract_set_behavior_assumes(__gen_e_acsl_contract,(size_t)1, + stat_loc != (int *)0); + __gen_e_acsl_assumes_value = __e_acsl_contract_get_behavior_assumes + ((__e_acsl_contract_t const *)__gen_e_acsl_contract,(size_t)1); + if (__gen_e_acsl_assumes_value) { + int __gen_e_acsl_valid; + __gen_e_acsl_valid = __e_acsl_valid((void *)stat_loc,sizeof(int), + (void *)stat_loc, + (void *)(& stat_loc)); + __e_acsl_assert(__gen_e_acsl_valid,1,"Precondition","waitpid", + "stat_loc_non_null: valid_stat_loc: \\valid(stat_loc)", + "FRAMAC_SHARE/libc/sys/wait.h",92); + } + } + __gen_e_acsl_at_2 = stat_loc; + __gen_e_acsl_at = stat_loc; + __retres = waitpid(pid,stat_loc,options); + { + int __gen_e_acsl_or; + int __gen_e_acsl_and; + int __gen_e_acsl_implies; + if (__retres == -1) __gen_e_acsl_or = 1; + else __gen_e_acsl_or = __retres >= 0; + __e_acsl_assert(__gen_e_acsl_or,1,"Postcondition","waitpid", + "result_ok_or_error: \\result == -1 || \\result >= 0", + "FRAMAC_SHARE/libc/sys/wait.h",84); + if (__retres >= 0) __gen_e_acsl_and = __gen_e_acsl_at != (int *)0; + else __gen_e_acsl_and = 0; + if (! __gen_e_acsl_and) __gen_e_acsl_implies = 1; + else { + int __gen_e_acsl_initialized; + __gen_e_acsl_initialized = __e_acsl_initialized((void *)__gen_e_acsl_at_2, + sizeof(int)); + __gen_e_acsl_implies = __gen_e_acsl_initialized; + } + __e_acsl_assert(__gen_e_acsl_implies,1,"Postcondition","waitpid", + "initialization: stat_loc_init_on_success:\n \\result >= 0 && \\old(stat_loc) != \\null ==> \\initialized(\\old(stat_loc))", + "FRAMAC_SHARE/libc/sys/wait.h",86); + __e_acsl_contract_clean(__gen_e_acsl_contract); + __e_acsl_delete_block((void *)(& stat_loc)); + return __retres; + } +} + +/*@ exits status: \exit_status ≡ \old(status); + ensures never_terminates: \false; + + assigns \exit_status \from status; + */ +void __gen_e_acsl_exit(int status) +{ + exit(status); + __e_acsl_assert(0,1,"Postcondition","exit","never_terminates: \\false", + "FRAMAC_SHARE/libc/stdlib.h",473); + return; +} + +/*@ exits status: \exit_status ≢ 0; + ensures never_terminates: \false; + + assigns \exit_status \from \nothing; + */ +void __gen_e_acsl_abort(void) +{ + abort(); + __e_acsl_assert(0,1,"Postcondition","abort","never_terminates: \\false", + "FRAMAC_SHARE/libc/stdlib.h",460); return; } @@ -56,177 +359,165 @@ void __e_acsl_globals_init(void) static char __e_acsl_already_run = 0; if (! __e_acsl_already_run) { __e_acsl_already_run = 1; - __gen_e_acsl_literal_string_28 = "tests/builtin/strcmp.c:87"; - __e_acsl_store_block((void *)__gen_e_acsl_literal_string_28, + __gen_e_acsl_literal_string_32 = "tests/builtin/strcmp.c:87"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_32, sizeof("tests/builtin/strcmp.c:87")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_32); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_32); + __gen_e_acsl_literal_string_31 = "tests/builtin/strcmp.c:85"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_31, + sizeof("tests/builtin/strcmp.c:85")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_31); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_31); + __gen_e_acsl_literal_string_30 = "tests/builtin/strcmp.c:84"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_30, + sizeof("tests/builtin/strcmp.c:84")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_30); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_30); + __gen_e_acsl_literal_string_29 = "tests/builtin/strcmp.c:82"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_29, + sizeof("tests/builtin/strcmp.c:82")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_29); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_29); + __gen_e_acsl_literal_string_28 = "tests/builtin/strcmp.c:79"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_28, + sizeof("tests/builtin/strcmp.c:79")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_28); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_28); - __gen_e_acsl_literal_string_27 = "tests/builtin/strcmp.c:85"; + __gen_e_acsl_literal_string_27 = "tests/builtin/strcmp.c:77"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_27, - sizeof("tests/builtin/strcmp.c:85")); + sizeof("tests/builtin/strcmp.c:77")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_27); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_27); - __gen_e_acsl_literal_string_26 = "tests/builtin/strcmp.c:84"; + __gen_e_acsl_literal_string_26 = "tests/builtin/strcmp.c:75"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_26, - sizeof("tests/builtin/strcmp.c:84")); + sizeof("tests/builtin/strcmp.c:75")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_26); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_26); - __gen_e_acsl_literal_string_25 = "tests/builtin/strcmp.c:82"; + __gen_e_acsl_literal_string_25 = "tests/builtin/strcmp.c:73"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_25, - sizeof("tests/builtin/strcmp.c:82")); + sizeof("tests/builtin/strcmp.c:73")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_25); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_25); - __gen_e_acsl_literal_string_24 = "tests/builtin/strcmp.c:79"; - __e_acsl_store_block((void *)__gen_e_acsl_literal_string_24, - sizeof("tests/builtin/strcmp.c:79")); - __e_acsl_full_init((void *)__gen_e_acsl_literal_string_24); - __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_24); - __gen_e_acsl_literal_string_23 = "tests/builtin/strcmp.c:77"; + __gen_e_acsl_literal_string_23 = "tests/builtin/strcmp.c:69"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_23, - sizeof("tests/builtin/strcmp.c:77")); + sizeof("tests/builtin/strcmp.c:69")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_23); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_23); - __gen_e_acsl_literal_string_22 = "tests/builtin/strcmp.c:75"; + __gen_e_acsl_literal_string_22 = "tests/builtin/strcmp.c:68"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_22, - sizeof("tests/builtin/strcmp.c:75")); + sizeof("tests/builtin/strcmp.c:68")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_22); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_22); - __gen_e_acsl_literal_string_21 = "tests/builtin/strcmp.c:73"; + __gen_e_acsl_literal_string_21 = "tests/builtin/strcmp.c:66"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_21, - sizeof("tests/builtin/strcmp.c:73")); + sizeof("tests/builtin/strcmp.c:66")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_21); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_21); - __gen_e_acsl_literal_string_19 = "tests/builtin/strcmp.c:69"; + __gen_e_acsl_literal_string_20 = "tests/builtin/strcmp.c:65"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_20, + sizeof("tests/builtin/strcmp.c:65")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_20); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_20); + __gen_e_acsl_literal_string_19 = "tests/builtin/strcmp.c:64"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_19, - sizeof("tests/builtin/strcmp.c:69")); + sizeof("tests/builtin/strcmp.c:64")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_19); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_19); - __gen_e_acsl_literal_string_18 = "tests/builtin/strcmp.c:68"; + __gen_e_acsl_literal_string_18 = "tests/builtin/strcmp.c:52"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_18, - sizeof("tests/builtin/strcmp.c:68")); + sizeof("tests/builtin/strcmp.c:52")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_18); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_18); - __gen_e_acsl_literal_string_17 = "tests/builtin/strcmp.c:66"; + __gen_e_acsl_literal_string_17 = "tests/builtin/strcmp.c:51"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_17, - sizeof("tests/builtin/strcmp.c:66")); + sizeof("tests/builtin/strcmp.c:51")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_17); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_17); - __gen_e_acsl_literal_string_16 = "tests/builtin/strcmp.c:65"; + __gen_e_acsl_literal_string_16 = "tests/builtin/strcmp.c:46"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_16, - sizeof("tests/builtin/strcmp.c:65")); + sizeof("tests/builtin/strcmp.c:46")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_16); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_16); - __gen_e_acsl_literal_string_15 = "tests/builtin/strcmp.c:64"; + __gen_e_acsl_literal_string_15 = "tests/builtin/strcmp.c:45"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_15, - sizeof("tests/builtin/strcmp.c:64")); + sizeof("tests/builtin/strcmp.c:45")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_15); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_15); - __gen_e_acsl_literal_string_14 = "tests/builtin/strcmp.c:52"; + __gen_e_acsl_literal_string_14 = "tests/builtin/strcmp.c:43"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_14, - sizeof("tests/builtin/strcmp.c:52")); + sizeof("tests/builtin/strcmp.c:43")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_14); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_14); - __gen_e_acsl_literal_string_13 = "tests/builtin/strcmp.c:51"; + __gen_e_acsl_literal_string_13 = "tests/builtin/strcmp.c:41"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_13, - sizeof("tests/builtin/strcmp.c:51")); + sizeof("tests/builtin/strcmp.c:41")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_13); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_13); - __gen_e_acsl_literal_string_12 = "tests/builtin/strcmp.c:46"; + __gen_e_acsl_literal_string_12 = "tests/builtin/strcmp.c:39"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_12, - sizeof("tests/builtin/strcmp.c:46")); + sizeof("tests/builtin/strcmp.c:39")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_12); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_12); - __gen_e_acsl_literal_string_11 = "tests/builtin/strcmp.c:45"; + __gen_e_acsl_literal_string_11 = "tests/builtin/strcmp.c:37"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_11, - sizeof("tests/builtin/strcmp.c:45")); + sizeof("tests/builtin/strcmp.c:37")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_11); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_11); - __gen_e_acsl_literal_string_10 = "tests/builtin/strcmp.c:43"; + __gen_e_acsl_literal_string_10 = "tests/builtin/strcmp.c:34"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_10, - sizeof("tests/builtin/strcmp.c:43")); + sizeof("tests/builtin/strcmp.c:34")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_10); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_10); - __gen_e_acsl_literal_string_9 = "tests/builtin/strcmp.c:41"; + __gen_e_acsl_literal_string_9 = "tests/builtin/strcmp.c:33"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_9, - sizeof("tests/builtin/strcmp.c:41")); + sizeof("tests/builtin/strcmp.c:33")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_9); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_9); - __gen_e_acsl_literal_string_8 = "tests/builtin/strcmp.c:39"; + __gen_e_acsl_literal_string_8 = "tests/builtin/strcmp.c:32"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_8, - sizeof("tests/builtin/strcmp.c:39")); + sizeof("tests/builtin/strcmp.c:32")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_8); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_8); - __gen_e_acsl_literal_string_7 = "tests/builtin/strcmp.c:37"; + __gen_e_acsl_literal_string_7 = "comparison failure: %d == %d\n"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_7, - sizeof("tests/builtin/strcmp.c:37")); + sizeof("comparison failure: %d == %d\n")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_7); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_7); - __gen_e_acsl_literal_string_6 = "tests/builtin/strcmp.c:34"; - __e_acsl_store_block((void *)__gen_e_acsl_literal_string_6, - sizeof("tests/builtin/strcmp.c:34")); + __gen_e_acsl_literal_string_24 = "comparison failure: %d != %d\n"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_24, + sizeof("comparison failure: %d != %d\n")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_24); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_24); + __gen_e_acsl_literal_string_6 = "abc"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_6,sizeof("abc")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_6); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_6); - __gen_e_acsl_literal_string_5 = "tests/builtin/strcmp.c:33"; - __e_acsl_store_block((void *)__gen_e_acsl_literal_string_5, - sizeof("tests/builtin/strcmp.c:33")); - __e_acsl_full_init((void *)__gen_e_acsl_literal_string_5); - __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_5); - __gen_e_acsl_literal_string_3 = "tests/builtin/strcmp.c:32"; - __e_acsl_store_block((void *)__gen_e_acsl_literal_string_3, - sizeof("tests/builtin/strcmp.c:32")); - __e_acsl_full_init((void *)__gen_e_acsl_literal_string_3); - __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_3); - __gen_e_acsl_literal_string_2 = "comparison failure: %d == %d\n"; + __gen_e_acsl_literal_string = "TEST %d: "; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string, + sizeof("TEST %d: ")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string); + __gen_e_acsl_literal_string_2 = "OK: Expected signal at %s\n"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_2, - sizeof("comparison failure: %d == %d\n")); + sizeof("OK: Expected signal at %s\n")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_2); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_2); - __gen_e_acsl_literal_string_20 = "comparison failure: %d != %d\n"; - __e_acsl_store_block((void *)__gen_e_acsl_literal_string_20, - sizeof("comparison failure: %d != %d\n")); - __e_acsl_full_init((void *)__gen_e_acsl_literal_string_20); - __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_20); - __gen_e_acsl_literal_string = "abc"; - __e_acsl_store_block((void *)__gen_e_acsl_literal_string,sizeof("abc")); - __e_acsl_full_init((void *)__gen_e_acsl_literal_string); - __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string); - __gen_e_acsl_literal_string_4 = "FAIL: Unexpected value return from test at %s\n"; + __gen_e_acsl_literal_string_3 = "OK: Expected execution at %s\n"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_3, + sizeof("OK: Expected execution at %s\n")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_3); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_3); + __gen_e_acsl_literal_string_5 = "FAIL: Unexpected signal at %s\n"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_5, + sizeof("FAIL: Unexpected signal at %s\n")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_5); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_5); + __gen_e_acsl_literal_string_4 = "FAIL: Unexpected execution at %s\n"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_4, - sizeof("FAIL: Unexpected value return from test at %s\n")); + sizeof("FAIL: Unexpected execution at %s\n")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_4); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_4); - __e_acsl_store_block((void *)(& __gen_e_acsl_strdup),(size_t)1); - __e_acsl_full_init((void *)(& __gen_e_acsl_strdup)); - __e_acsl_store_block((void *)(& __gen_e_acsl_strncmp),(size_t)1); - __e_acsl_full_init((void *)(& __gen_e_acsl_strncmp)); - __e_acsl_store_block((void *)(& __gen_e_acsl_strcmp),(size_t)1); - __e_acsl_full_init((void *)(& __gen_e_acsl_strcmp)); - __e_acsl_store_block((void *)(& __gen_e_acsl_exit),(size_t)1); - __e_acsl_full_init((void *)(& __gen_e_acsl_exit)); - __e_acsl_store_block((void *)(& __gen_e_acsl_abort),(size_t)1); - __e_acsl_full_init((void *)(& __gen_e_acsl_abort)); - __e_acsl_store_block((void *)(& fail_ncomp),(size_t)1); - __e_acsl_full_init((void *)(& fail_ncomp)); - __e_acsl_store_block((void *)(& __fc_p_strerror),(size_t)8); - __e_acsl_full_init((void *)(& __fc_p_strerror)); - __e_acsl_store_block((void *)(strerror),(size_t)64); - __e_acsl_full_init((void *)(& strerror)); - __e_acsl_store_block((void *)(& __fc_strtok_ptr),(size_t)8); - __e_acsl_full_init((void *)(& __fc_strtok_ptr)); - __e_acsl_store_block((void *)(& __fc_p_fopen),(size_t)8); - __e_acsl_full_init((void *)(& __fc_p_fopen)); - __e_acsl_store_block((void *)(__fc_fopen),(size_t)128); - __e_acsl_full_init((void *)(& __fc_fopen)); - __e_acsl_store_block((void *)(& stderr),(size_t)8); - __e_acsl_full_init((void *)(& stderr)); - __e_acsl_store_block((void *)(& __fc_p_random48_counter),(size_t)8); - __e_acsl_full_init((void *)(& __fc_p_random48_counter)); - __e_acsl_store_block((void *)(random48_counter),(size_t)6); - __e_acsl_full_init((void *)(& random48_counter)); - __e_acsl_store_block((void *)(& __fc_random48_init),(size_t)4); - __e_acsl_full_init((void *)(& __fc_random48_init)); - __e_acsl_store_block((void *)(& __fc_rand_max),(size_t)8); - __e_acsl_full_init((void *)(& __fc_rand_max)); } return; } @@ -237,1172 +528,473 @@ int main(int argc, char const **argv) int res; __e_acsl_memory_init(& argc,(char ***)(& argv),(size_t)8); __e_acsl_globals_init(); - __e_acsl_store_block((void *)(& res),(size_t)4); - __e_acsl_store_block((void *)(& __retres),(size_t)4); - char const *cl = __gen_e_acsl_literal_string; - __e_acsl_store_block((void *)(& cl),(size_t)8); - __e_acsl_full_init((void *)(& cl)); - char const *cr = __gen_e_acsl_literal_string; - __e_acsl_store_block((void *)(& cr),(size_t)8); - __e_acsl_full_init((void *)(& cr)); + char const *cl = __gen_e_acsl_literal_string_6; + char const *cr = __gen_e_acsl_literal_string_6; char al[4] = {(char)'a', (char)'b', (char)'c', (char)'\000'}; - __e_acsl_store_block((void *)(al),(size_t)4); - __e_acsl_full_init((void *)(& al)); char ar[4] = {(char)'a', (char)'b', (char)'c', (char)'\000'}; - __e_acsl_store_block((void *)(ar),(size_t)4); - __e_acsl_full_init((void *)(& ar)); - char *dl = __gen_e_acsl_strdup(__gen_e_acsl_literal_string); - __e_acsl_store_block((void *)(& dl),(size_t)8); - __e_acsl_full_init((void *)(& dl)); - char *dr = __gen_e_acsl_strdup(__gen_e_acsl_literal_string); - __e_acsl_store_block((void *)(& dr),(size_t)8); - __e_acsl_full_init((void *)(& dr)); + char *dl = __gen_e_acsl_strdup(__gen_e_acsl_literal_string_6); + char *dr = __gen_e_acsl_strdup(__gen_e_acsl_literal_string_6); { - int tmp_2; - __e_acsl_store_block((void *)(& tmp_2),(size_t)4); - sigjmp_buf *jmp_ctxt = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt)); - __e_acsl_full_init((void *)(& tmp_2)); - /*@ assert Eva: mem_access: \valid_read(jmp_ctxt); */ - tmp_2 = sigsetjmp(*jmp_ctxt,1); - switch (tmp_2) { - case 0: - { - int tmp_3; - int tmp_4; - __e_acsl_store_block((void *)(& tmp_4),(size_t)4); - __e_acsl_store_block((void *)(& tmp_3),(size_t)4); - set_handler(); - __e_acsl_full_init((void *)(& tmp_3)); - tmp_3 = __gen_e_acsl_strcmp(cl,cr); - __e_acsl_full_init((void *)(& tmp_4)); - tmp_4 = __gen_e_acsl_strcmp(cl,cr); - fail_ncomp(tmp_4 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_3,0); - test_successful(); - __e_acsl_delete_block((void *)(& tmp_3)); - __e_acsl_delete_block((void *)(& tmp_4)); - break; - __e_acsl_delete_block((void *)(& tmp_4)); - __e_acsl_delete_block((void *)(& tmp_3)); - } - case 1: { - signal_eval(0,0,__gen_e_acsl_literal_string_3); - break; - } - case 2: { - signal_eval(1,0,__gen_e_acsl_literal_string_3); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_3); - __gen_e_acsl_exit(3); - } + pid_t pid = __gen_e_acsl_fork(); + if (! pid) { + int tmp_2; + int tmp_3; + tmp_2 = __gen_e_acsl_strcmp(cl,cr); + tmp_3 = __gen_e_acsl_strcmp(cl,cr); + fail_ncomp(tmp_3 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_2,0); + __gen_e_acsl_exit(0); + } + else { + int process_status; + __e_acsl_store_block((void *)(& process_status),(size_t)4); + __gen_e_acsl_waitpid(pid,& process_status,0); + signal_eval(process_status,0,__gen_e_acsl_literal_string_8); + __e_acsl_delete_block((void *)(& process_status)); } - __e_acsl_delete_block((void *)(& tmp_2)); - __e_acsl_delete_block((void *)(& jmp_ctxt)); } { - int tmp_6; - __e_acsl_store_block((void *)(& tmp_6),(size_t)4); - sigjmp_buf *jmp_ctxt_0 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_0),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_0)); - __e_acsl_full_init((void *)(& tmp_6)); - tmp_6 = sigsetjmp(*jmp_ctxt_0,1); - switch (tmp_6) { - case 0: - { - int tmp_7; - int tmp_8; - __e_acsl_store_block((void *)(& tmp_8),(size_t)4); - __e_acsl_store_block((void *)(& tmp_7),(size_t)4); - set_handler(); - __e_acsl_full_init((void *)(& tmp_7)); - tmp_7 = __gen_e_acsl_strcmp((char const *)(al),(char const *)(ar)); - __e_acsl_full_init((void *)(& tmp_8)); - tmp_8 = __gen_e_acsl_strcmp((char const *)(al),(char const *)(ar)); - fail_ncomp(tmp_8 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_7,0); - test_successful(); - __e_acsl_delete_block((void *)(& tmp_7)); - __e_acsl_delete_block((void *)(& tmp_8)); - break; - __e_acsl_delete_block((void *)(& tmp_8)); - __e_acsl_delete_block((void *)(& tmp_7)); - } - case 1: { - signal_eval(0,0,__gen_e_acsl_literal_string_5); - break; - } - case 2: { - signal_eval(1,0,__gen_e_acsl_literal_string_5); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_5); - __gen_e_acsl_exit(3); - } + pid_t pid_0 = __gen_e_acsl_fork(); + if (! pid_0) { + int tmp_5; + int tmp_6; + tmp_5 = __gen_e_acsl_strcmp((char const *)(al),(char const *)(ar)); + tmp_6 = __gen_e_acsl_strcmp((char const *)(al),(char const *)(ar)); + fail_ncomp(tmp_6 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_5,0); + __gen_e_acsl_exit(0); + } + else { + int process_status_0; + __e_acsl_store_block((void *)(& process_status_0),(size_t)4); + __gen_e_acsl_waitpid(pid_0,& process_status_0,0); + signal_eval(process_status_0,0,__gen_e_acsl_literal_string_9); + __e_acsl_delete_block((void *)(& process_status_0)); } - __e_acsl_delete_block((void *)(& tmp_6)); - __e_acsl_delete_block((void *)(& jmp_ctxt_0)); } { - int tmp_10; - __e_acsl_store_block((void *)(& tmp_10),(size_t)4); - sigjmp_buf *jmp_ctxt_1 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_1),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_1)); - __e_acsl_full_init((void *)(& tmp_10)); - tmp_10 = sigsetjmp(*jmp_ctxt_1,1); - switch (tmp_10) { - case 0: - { - int tmp_11; - int tmp_12; - __e_acsl_store_block((void *)(& tmp_12),(size_t)4); - __e_acsl_store_block((void *)(& tmp_11),(size_t)4); - set_handler(); - __e_acsl_full_init((void *)(& tmp_11)); - tmp_11 = __gen_e_acsl_strcmp((char const *)dl,(char const *)dr); - __e_acsl_full_init((void *)(& tmp_12)); - tmp_12 = __gen_e_acsl_strcmp((char const *)dl,(char const *)dr); - fail_ncomp(tmp_12 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_11, - 0); - test_successful(); - __e_acsl_delete_block((void *)(& tmp_11)); - __e_acsl_delete_block((void *)(& tmp_12)); - break; - __e_acsl_delete_block((void *)(& tmp_12)); - __e_acsl_delete_block((void *)(& tmp_11)); - } - case 1: { - signal_eval(0,0,__gen_e_acsl_literal_string_6); - break; - } - case 2: { - signal_eval(1,0,__gen_e_acsl_literal_string_6); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_6); - __gen_e_acsl_exit(3); - } + pid_t pid_1 = __gen_e_acsl_fork(); + if (! pid_1) { + int tmp_8; + int tmp_9; + tmp_8 = __gen_e_acsl_strcmp((char const *)dl,(char const *)dr); + tmp_9 = __gen_e_acsl_strcmp((char const *)dl,(char const *)dr); + fail_ncomp(tmp_9 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_8,0); + __gen_e_acsl_exit(0); + } + else { + int process_status_1; + __e_acsl_store_block((void *)(& process_status_1),(size_t)4); + __gen_e_acsl_waitpid(pid_1,& process_status_1,0); + signal_eval(process_status_1,0,__gen_e_acsl_literal_string_10); + __e_acsl_delete_block((void *)(& process_status_1)); } - __e_acsl_delete_block((void *)(& tmp_10)); - __e_acsl_delete_block((void *)(& jmp_ctxt_1)); } - __e_acsl_initialize((void *)(& al[3]),sizeof(char)); al[3] = (char)'a'; { - int tmp_14; - __e_acsl_store_block((void *)(& tmp_14),(size_t)4); - sigjmp_buf *jmp_ctxt_2 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_2),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_2)); - __e_acsl_full_init((void *)(& tmp_14)); - tmp_14 = sigsetjmp(*jmp_ctxt_2,1); - switch (tmp_14) { - case 0: - { - int tmp_15; - int tmp_16; - __e_acsl_store_block((void *)(& tmp_16),(size_t)4); - __e_acsl_store_block((void *)(& tmp_15),(size_t)4); - set_handler(); - __e_acsl_full_init((void *)(& tmp_15)); - tmp_15 = __gen_e_acsl_strcmp((char const *)(al),(char const *)(ar)); - __e_acsl_full_init((void *)(& tmp_16)); - tmp_16 = __gen_e_acsl_strcmp((char const *)(al),(char const *)(ar)); - fail_ncomp(tmp_16 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_15, - 0); - test_successful(); - __e_acsl_delete_block((void *)(& tmp_15)); - __e_acsl_delete_block((void *)(& tmp_16)); - break; - __e_acsl_delete_block((void *)(& tmp_16)); - __e_acsl_delete_block((void *)(& tmp_15)); - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_7); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_7); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_7); - __gen_e_acsl_exit(3); - } + pid_t pid_2 = __gen_e_acsl_fork(); + if (! pid_2) { + int tmp_11; + int tmp_12; + tmp_11 = __gen_e_acsl_strcmp((char const *)(al),(char const *)(ar)); + tmp_12 = __gen_e_acsl_strcmp((char const *)(al),(char const *)(ar)); + fail_ncomp(tmp_12 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_11,0); + __gen_e_acsl_exit(0); + } + else { + int process_status_2; + __e_acsl_store_block((void *)(& process_status_2),(size_t)4); + __gen_e_acsl_waitpid(pid_2,& process_status_2,0); + signal_eval(process_status_2,1,__gen_e_acsl_literal_string_11); + __e_acsl_delete_block((void *)(& process_status_2)); } - __e_acsl_delete_block((void *)(& tmp_14)); - __e_acsl_delete_block((void *)(& jmp_ctxt_2)); } - __e_acsl_initialize((void *)(& ar[3]),sizeof(char)); ar[3] = (char)'a'; - __e_acsl_initialize((void *)(& al[3]),sizeof(char)); al[3] = (char)0; { - int tmp_18; - __e_acsl_store_block((void *)(& tmp_18),(size_t)4); - sigjmp_buf *jmp_ctxt_3 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_3),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_3)); - __e_acsl_full_init((void *)(& tmp_18)); - tmp_18 = sigsetjmp(*jmp_ctxt_3,1); - switch (tmp_18) { - case 0: - { - int tmp_19; - int tmp_20; - __e_acsl_store_block((void *)(& tmp_20),(size_t)4); - __e_acsl_store_block((void *)(& tmp_19),(size_t)4); - set_handler(); - __e_acsl_full_init((void *)(& tmp_19)); - tmp_19 = __gen_e_acsl_strcmp((char const *)(al),(char const *)(ar)); - __e_acsl_full_init((void *)(& tmp_20)); - tmp_20 = __gen_e_acsl_strcmp((char const *)(al),(char const *)(ar)); - fail_ncomp(tmp_20 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_19, - 0); - test_successful(); - __e_acsl_delete_block((void *)(& tmp_19)); - __e_acsl_delete_block((void *)(& tmp_20)); - break; - __e_acsl_delete_block((void *)(& tmp_20)); - __e_acsl_delete_block((void *)(& tmp_19)); - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_8); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_8); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_8); - __gen_e_acsl_exit(3); - } + pid_t pid_3 = __gen_e_acsl_fork(); + if (! pid_3) { + int tmp_14; + int tmp_15; + tmp_14 = __gen_e_acsl_strcmp((char const *)(al),(char const *)(ar)); + tmp_15 = __gen_e_acsl_strcmp((char const *)(al),(char const *)(ar)); + fail_ncomp(tmp_15 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_14,0); + __gen_e_acsl_exit(0); + } + else { + int process_status_3; + __e_acsl_store_block((void *)(& process_status_3),(size_t)4); + __gen_e_acsl_waitpid(pid_3,& process_status_3,0); + signal_eval(process_status_3,1,__gen_e_acsl_literal_string_12); + __e_acsl_delete_block((void *)(& process_status_3)); } - __e_acsl_delete_block((void *)(& tmp_18)); - __e_acsl_delete_block((void *)(& jmp_ctxt_3)); } - __e_acsl_initialize((void *)(dl + 3),sizeof(char)); *(dl + 3) = (char)'a'; { - int tmp_22; - __e_acsl_store_block((void *)(& tmp_22),(size_t)4); - sigjmp_buf *jmp_ctxt_4 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_4),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_4)); - __e_acsl_full_init((void *)(& tmp_22)); - tmp_22 = sigsetjmp(*jmp_ctxt_4,1); - switch (tmp_22) { - case 0: - { - int tmp_23; - int tmp_24; - __e_acsl_store_block((void *)(& tmp_24),(size_t)4); - __e_acsl_store_block((void *)(& tmp_23),(size_t)4); - set_handler(); - __e_acsl_full_init((void *)(& tmp_23)); - tmp_23 = __gen_e_acsl_strcmp((char const *)dl,(char const *)dr); - __e_acsl_full_init((void *)(& tmp_24)); - tmp_24 = __gen_e_acsl_strcmp((char const *)dl,(char const *)dr); - fail_ncomp(tmp_24 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_23, - 0); - test_successful(); - __e_acsl_delete_block((void *)(& tmp_23)); - __e_acsl_delete_block((void *)(& tmp_24)); - break; - __e_acsl_delete_block((void *)(& tmp_24)); - __e_acsl_delete_block((void *)(& tmp_23)); - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_9); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_9); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_9); - __gen_e_acsl_exit(3); - } + pid_t pid_4 = __gen_e_acsl_fork(); + if (! pid_4) { + int tmp_17; + int tmp_18; + tmp_17 = __gen_e_acsl_strcmp((char const *)dl,(char const *)dr); + tmp_18 = __gen_e_acsl_strcmp((char const *)dl,(char const *)dr); + fail_ncomp(tmp_18 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_17,0); + __gen_e_acsl_exit(0); + } + else { + int process_status_4; + __e_acsl_store_block((void *)(& process_status_4),(size_t)4); + __gen_e_acsl_waitpid(pid_4,& process_status_4,0); + signal_eval(process_status_4,1,__gen_e_acsl_literal_string_13); + __e_acsl_delete_block((void *)(& process_status_4)); } - __e_acsl_delete_block((void *)(& tmp_22)); - __e_acsl_delete_block((void *)(& jmp_ctxt_4)); } - __e_acsl_initialize((void *)(dr + 3),sizeof(char)); *(dr + 3) = (char)'a'; - __e_acsl_initialize((void *)(dl + 3),sizeof(char)); *(dl + 3) = (char)0; { - int tmp_26; - __e_acsl_store_block((void *)(& tmp_26),(size_t)4); - sigjmp_buf *jmp_ctxt_5 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_5),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_5)); - __e_acsl_full_init((void *)(& tmp_26)); - tmp_26 = sigsetjmp(*jmp_ctxt_5,1); - switch (tmp_26) { - case 0: - { - int tmp_27; - int tmp_28; - __e_acsl_store_block((void *)(& tmp_28),(size_t)4); - __e_acsl_store_block((void *)(& tmp_27),(size_t)4); - set_handler(); - __e_acsl_full_init((void *)(& tmp_27)); - tmp_27 = __gen_e_acsl_strcmp((char const *)dl,(char const *)dr); - __e_acsl_full_init((void *)(& tmp_28)); - tmp_28 = __gen_e_acsl_strcmp((char const *)dl,(char const *)dr); - fail_ncomp(tmp_28 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_27, - 0); - test_successful(); - __e_acsl_delete_block((void *)(& tmp_27)); - __e_acsl_delete_block((void *)(& tmp_28)); - break; - __e_acsl_delete_block((void *)(& tmp_28)); - __e_acsl_delete_block((void *)(& tmp_27)); - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_10); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_10); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_10); - __gen_e_acsl_exit(3); - } + pid_t pid_5 = __gen_e_acsl_fork(); + if (! pid_5) { + int tmp_20; + int tmp_21; + tmp_20 = __gen_e_acsl_strcmp((char const *)dl,(char const *)dr); + tmp_21 = __gen_e_acsl_strcmp((char const *)dl,(char const *)dr); + fail_ncomp(tmp_21 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_20,0); + __gen_e_acsl_exit(0); + } + else { + int process_status_5; + __e_acsl_store_block((void *)(& process_status_5),(size_t)4); + __gen_e_acsl_waitpid(pid_5,& process_status_5,0); + signal_eval(process_status_5,1,__gen_e_acsl_literal_string_14); + __e_acsl_delete_block((void *)(& process_status_5)); } - __e_acsl_delete_block((void *)(& tmp_26)); - __e_acsl_delete_block((void *)(& jmp_ctxt_5)); } { - int tmp_30; - __e_acsl_store_block((void *)(& tmp_30),(size_t)4); - sigjmp_buf *jmp_ctxt_6 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_6),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_6)); - __e_acsl_full_init((void *)(& tmp_30)); - tmp_30 = sigsetjmp(*jmp_ctxt_6,1); - switch (tmp_30) { - case 0: - { - int tmp_31; - int tmp_32; - __e_acsl_store_block((void *)(& tmp_32),(size_t)4); - __e_acsl_store_block((void *)(& tmp_31),(size_t)4); - set_handler(); - __e_acsl_full_init((void *)(& tmp_31)); - tmp_31 = __gen_e_acsl_strcmp((char const *)dl,(char const *)0); - __e_acsl_full_init((void *)(& tmp_32)); - tmp_32 = __gen_e_acsl_strcmp((char const *)dl,(char const *)0); - fail_ncomp(tmp_32 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_31, - 0); - test_successful(); - __e_acsl_delete_block((void *)(& tmp_31)); - __e_acsl_delete_block((void *)(& tmp_32)); - break; - __e_acsl_delete_block((void *)(& tmp_32)); - __e_acsl_delete_block((void *)(& tmp_31)); - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_11); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_11); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_11); - __gen_e_acsl_exit(3); - } + pid_t pid_6 = __gen_e_acsl_fork(); + if (! pid_6) { + int tmp_23; + int tmp_24; + tmp_23 = __gen_e_acsl_strcmp((char const *)dl,(char const *)0); + tmp_24 = __gen_e_acsl_strcmp((char const *)dl,(char const *)0); + fail_ncomp(tmp_24 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_23,0); + __gen_e_acsl_exit(0); + } + else { + int process_status_6; + __e_acsl_store_block((void *)(& process_status_6),(size_t)4); + __gen_e_acsl_waitpid(pid_6,& process_status_6,0); + signal_eval(process_status_6,1,__gen_e_acsl_literal_string_15); + __e_acsl_delete_block((void *)(& process_status_6)); } - __e_acsl_delete_block((void *)(& tmp_30)); - __e_acsl_delete_block((void *)(& jmp_ctxt_6)); } { - int tmp_34; - __e_acsl_store_block((void *)(& tmp_34),(size_t)4); - sigjmp_buf *jmp_ctxt_7 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_7),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_7)); - __e_acsl_full_init((void *)(& tmp_34)); - tmp_34 = sigsetjmp(*jmp_ctxt_7,1); - switch (tmp_34) { - case 0: - { - int tmp_35; - int tmp_36; - __e_acsl_store_block((void *)(& tmp_36),(size_t)4); - __e_acsl_store_block((void *)(& tmp_35),(size_t)4); - set_handler(); - __e_acsl_full_init((void *)(& tmp_35)); - tmp_35 = __gen_e_acsl_strcmp((char const *)0,(char const *)dr); - __e_acsl_full_init((void *)(& tmp_36)); - tmp_36 = __gen_e_acsl_strcmp((char const *)0,(char const *)dr); - fail_ncomp(tmp_36 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_35, - 0); - test_successful(); - __e_acsl_delete_block((void *)(& tmp_35)); - __e_acsl_delete_block((void *)(& tmp_36)); - break; - __e_acsl_delete_block((void *)(& tmp_36)); - __e_acsl_delete_block((void *)(& tmp_35)); - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_12); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_12); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_12); - __gen_e_acsl_exit(3); - } + pid_t pid_7 = __gen_e_acsl_fork(); + if (! pid_7) { + int tmp_26; + int tmp_27; + tmp_26 = __gen_e_acsl_strcmp((char const *)0,(char const *)dr); + tmp_27 = __gen_e_acsl_strcmp((char const *)0,(char const *)dr); + fail_ncomp(tmp_27 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_26,0); + __gen_e_acsl_exit(0); + } + else { + int process_status_7; + __e_acsl_store_block((void *)(& process_status_7),(size_t)4); + __gen_e_acsl_waitpid(pid_7,& process_status_7,0); + signal_eval(process_status_7,1,__gen_e_acsl_literal_string_16); + __e_acsl_delete_block((void *)(& process_status_7)); } - __e_acsl_delete_block((void *)(& tmp_34)); - __e_acsl_delete_block((void *)(& jmp_ctxt_7)); } free((void *)dl); free((void *)dr); { - int tmp_38; - __e_acsl_store_block((void *)(& tmp_38),(size_t)4); - sigjmp_buf *jmp_ctxt_8 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_8),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_8)); - __e_acsl_full_init((void *)(& tmp_38)); - tmp_38 = sigsetjmp(*jmp_ctxt_8,1); - switch (tmp_38) { - case 0: - { - int tmp_39; - int tmp_40; - __e_acsl_store_block((void *)(& tmp_40),(size_t)4); - __e_acsl_store_block((void *)(& tmp_39),(size_t)4); - set_handler(); - __e_acsl_full_init((void *)(& tmp_39)); - tmp_39 = __gen_e_acsl_strcmp((char const *)dl,(char const *)(ar)); - __e_acsl_full_init((void *)(& tmp_40)); - tmp_40 = __gen_e_acsl_strcmp((char const *)dl,(char const *)(ar)); - fail_ncomp(tmp_40 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_39, - 0); - test_successful(); - __e_acsl_delete_block((void *)(& tmp_39)); - __e_acsl_delete_block((void *)(& tmp_40)); - break; - __e_acsl_delete_block((void *)(& tmp_40)); - __e_acsl_delete_block((void *)(& tmp_39)); - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_13); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_13); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_13); - __gen_e_acsl_exit(3); - } + pid_t pid_8 = __gen_e_acsl_fork(); + if (! pid_8) { + int tmp_29; + int tmp_30; + tmp_29 = __gen_e_acsl_strcmp((char const *)dl,(char const *)(ar)); + tmp_30 = __gen_e_acsl_strcmp((char const *)dl,(char const *)(ar)); + fail_ncomp(tmp_30 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_29,0); + __gen_e_acsl_exit(0); + } + else { + int process_status_8; + __e_acsl_store_block((void *)(& process_status_8),(size_t)4); + __gen_e_acsl_waitpid(pid_8,& process_status_8,0); + signal_eval(process_status_8,1,__gen_e_acsl_literal_string_17); + __e_acsl_delete_block((void *)(& process_status_8)); } - __e_acsl_delete_block((void *)(& tmp_38)); - __e_acsl_delete_block((void *)(& jmp_ctxt_8)); } { - int tmp_42; - __e_acsl_store_block((void *)(& tmp_42),(size_t)4); - sigjmp_buf *jmp_ctxt_9 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_9),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_9)); - __e_acsl_full_init((void *)(& tmp_42)); - tmp_42 = sigsetjmp(*jmp_ctxt_9,1); - switch (tmp_42) { - case 0: - { - int tmp_43; - int tmp_44; - __e_acsl_store_block((void *)(& tmp_44),(size_t)4); - __e_acsl_store_block((void *)(& tmp_43),(size_t)4); - set_handler(); - __e_acsl_full_init((void *)(& tmp_43)); - tmp_43 = __gen_e_acsl_strcmp((char const *)(al),(char const *)dr); - __e_acsl_full_init((void *)(& tmp_44)); - tmp_44 = __gen_e_acsl_strcmp((char const *)(al),(char const *)dr); - fail_ncomp(tmp_44 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_43, - 0); - test_successful(); - __e_acsl_delete_block((void *)(& tmp_43)); - __e_acsl_delete_block((void *)(& tmp_44)); - break; - __e_acsl_delete_block((void *)(& tmp_44)); - __e_acsl_delete_block((void *)(& tmp_43)); - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_14); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_14); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_14); - __gen_e_acsl_exit(3); - } + pid_t pid_9 = __gen_e_acsl_fork(); + if (! pid_9) { + int tmp_32; + int tmp_33; + tmp_32 = __gen_e_acsl_strcmp((char const *)(al),(char const *)dr); + tmp_33 = __gen_e_acsl_strcmp((char const *)(al),(char const *)dr); + fail_ncomp(tmp_33 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_32,0); + __gen_e_acsl_exit(0); + } + else { + int process_status_9; + __e_acsl_store_block((void *)(& process_status_9),(size_t)4); + __gen_e_acsl_waitpid(pid_9,& process_status_9,0); + signal_eval(process_status_9,1,__gen_e_acsl_literal_string_18); + __e_acsl_delete_block((void *)(& process_status_9)); } - __e_acsl_delete_block((void *)(& tmp_42)); - __e_acsl_delete_block((void *)(& jmp_ctxt_9)); } - __e_acsl_full_init((void *)(& dl)); - dl = __gen_e_acsl_strdup(__gen_e_acsl_literal_string); - __e_acsl_full_init((void *)(& dr)); - dr = __gen_e_acsl_strdup(__gen_e_acsl_literal_string); + dl = __gen_e_acsl_strdup(__gen_e_acsl_literal_string_6); + dr = __gen_e_acsl_strdup(__gen_e_acsl_literal_string_6); char nal[4] = {(char)'a', (char)'b', (char)'c', (char)'\000'}; - __e_acsl_store_block((void *)(nal),(size_t)4); - __e_acsl_full_init((void *)(& nal)); char nar[4] = {(char)'a', (char)'b', (char)'c', (char)'\000'}; - __e_acsl_store_block((void *)(nar),(size_t)4); - __e_acsl_full_init((void *)(& nar)); { - int tmp_46; - __e_acsl_store_block((void *)(& tmp_46),(size_t)4); - sigjmp_buf *jmp_ctxt_10 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_10),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_10)); - __e_acsl_full_init((void *)(& tmp_46)); - tmp_46 = sigsetjmp(*jmp_ctxt_10,1); - switch (tmp_46) { - case 0: - { - int tmp_47; - int tmp_48; - __e_acsl_store_block((void *)(& tmp_48),(size_t)4); - __e_acsl_store_block((void *)(& tmp_47),(size_t)4); - set_handler(); - __e_acsl_full_init((void *)(& tmp_47)); - tmp_47 = __gen_e_acsl_strncmp(cl,cr,(unsigned long)3); - __e_acsl_full_init((void *)(& tmp_48)); - tmp_48 = __gen_e_acsl_strncmp(cl,cr,(unsigned long)3); - fail_ncomp(tmp_48 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_47, - 0); - test_successful(); - __e_acsl_delete_block((void *)(& tmp_47)); - __e_acsl_delete_block((void *)(& tmp_48)); - break; - __e_acsl_delete_block((void *)(& tmp_48)); - __e_acsl_delete_block((void *)(& tmp_47)); - } - case 1: { - signal_eval(0,0,__gen_e_acsl_literal_string_15); - break; - } - case 2: { - signal_eval(1,0,__gen_e_acsl_literal_string_15); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_15); - __gen_e_acsl_exit(3); - } + pid_t pid_10 = __gen_e_acsl_fork(); + if (! pid_10) { + int tmp_35; + int tmp_36; + tmp_35 = __gen_e_acsl_strncmp(cl,cr,(unsigned long)3); + tmp_36 = __gen_e_acsl_strncmp(cl,cr,(unsigned long)3); + fail_ncomp(tmp_36 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_35,0); + __gen_e_acsl_exit(0); + } + else { + int process_status_10; + __e_acsl_store_block((void *)(& process_status_10),(size_t)4); + __gen_e_acsl_waitpid(pid_10,& process_status_10,0); + signal_eval(process_status_10,0,__gen_e_acsl_literal_string_19); + __e_acsl_delete_block((void *)(& process_status_10)); } - __e_acsl_delete_block((void *)(& tmp_46)); - __e_acsl_delete_block((void *)(& jmp_ctxt_10)); } { - int tmp_50; - __e_acsl_store_block((void *)(& tmp_50),(size_t)4); - sigjmp_buf *jmp_ctxt_11 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_11),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_11)); - __e_acsl_full_init((void *)(& tmp_50)); - tmp_50 = sigsetjmp(*jmp_ctxt_11,1); - switch (tmp_50) { - case 0: - { - int tmp_51; - int tmp_52; - __e_acsl_store_block((void *)(& tmp_52),(size_t)4); - __e_acsl_store_block((void *)(& tmp_51),(size_t)4); - set_handler(); - __e_acsl_full_init((void *)(& tmp_51)); - tmp_51 = __gen_e_acsl_strncmp((char const *)(nal), - (char const *)(nar),(unsigned long)3); - __e_acsl_full_init((void *)(& tmp_52)); - tmp_52 = __gen_e_acsl_strncmp((char const *)(nal), - (char const *)(nar),(unsigned long)3); - fail_ncomp(tmp_52 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_51, - 0); - test_successful(); - __e_acsl_delete_block((void *)(& tmp_51)); - __e_acsl_delete_block((void *)(& tmp_52)); - break; - __e_acsl_delete_block((void *)(& tmp_52)); - __e_acsl_delete_block((void *)(& tmp_51)); - } - case 1: { - signal_eval(0,0,__gen_e_acsl_literal_string_16); - break; - } - case 2: { - signal_eval(1,0,__gen_e_acsl_literal_string_16); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_16); - __gen_e_acsl_exit(3); - } + pid_t pid_11 = __gen_e_acsl_fork(); + if (! pid_11) { + int tmp_38; + int tmp_39; + tmp_38 = __gen_e_acsl_strncmp((char const *)(nal),(char const *)(nar), + (unsigned long)3); + tmp_39 = __gen_e_acsl_strncmp((char const *)(nal),(char const *)(nar), + (unsigned long)3); + fail_ncomp(tmp_39 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_38,0); + __gen_e_acsl_exit(0); + } + else { + int process_status_11; + __e_acsl_store_block((void *)(& process_status_11),(size_t)4); + __gen_e_acsl_waitpid(pid_11,& process_status_11,0); + signal_eval(process_status_11,0,__gen_e_acsl_literal_string_20); + __e_acsl_delete_block((void *)(& process_status_11)); } - __e_acsl_delete_block((void *)(& tmp_50)); - __e_acsl_delete_block((void *)(& jmp_ctxt_11)); } { - int tmp_54; - __e_acsl_store_block((void *)(& tmp_54),(size_t)4); - sigjmp_buf *jmp_ctxt_12 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_12),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_12)); - __e_acsl_full_init((void *)(& tmp_54)); - tmp_54 = sigsetjmp(*jmp_ctxt_12,1); - switch (tmp_54) { - case 0: - { - int tmp_55; - int tmp_56; - __e_acsl_store_block((void *)(& tmp_56),(size_t)4); - __e_acsl_store_block((void *)(& tmp_55),(size_t)4); - set_handler(); - __e_acsl_full_init((void *)(& tmp_55)); - tmp_55 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr, - (unsigned long)3); - __e_acsl_full_init((void *)(& tmp_56)); - tmp_56 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr, - (unsigned long)3); - fail_ncomp(tmp_56 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_55, - 0); - test_successful(); - __e_acsl_delete_block((void *)(& tmp_55)); - __e_acsl_delete_block((void *)(& tmp_56)); - break; - __e_acsl_delete_block((void *)(& tmp_56)); - __e_acsl_delete_block((void *)(& tmp_55)); - } - case 1: { - signal_eval(0,0,__gen_e_acsl_literal_string_17); - break; - } - case 2: { - signal_eval(1,0,__gen_e_acsl_literal_string_17); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_17); - __gen_e_acsl_exit(3); - } + pid_t pid_12 = __gen_e_acsl_fork(); + if (! pid_12) { + int tmp_41; + int tmp_42; + tmp_41 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr, + (unsigned long)3); + tmp_42 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr, + (unsigned long)3); + fail_ncomp(tmp_42 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_41,0); + __gen_e_acsl_exit(0); + } + else { + int process_status_12; + __e_acsl_store_block((void *)(& process_status_12),(size_t)4); + __gen_e_acsl_waitpid(pid_12,& process_status_12,0); + signal_eval(process_status_12,0,__gen_e_acsl_literal_string_21); + __e_acsl_delete_block((void *)(& process_status_12)); } - __e_acsl_delete_block((void *)(& tmp_54)); - __e_acsl_delete_block((void *)(& jmp_ctxt_12)); } { - int tmp_58; - __e_acsl_store_block((void *)(& tmp_58),(size_t)4); - sigjmp_buf *jmp_ctxt_13 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_13),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_13)); - __e_acsl_full_init((void *)(& tmp_58)); - tmp_58 = sigsetjmp(*jmp_ctxt_13,1); - switch (tmp_58) { - case 0: - { - int tmp_59; - int tmp_60; - __e_acsl_store_block((void *)(& tmp_60),(size_t)4); - __e_acsl_store_block((void *)(& tmp_59),(size_t)4); - set_handler(); - __e_acsl_full_init((void *)(& tmp_59)); - tmp_59 = __gen_e_acsl_strncmp((char const *)(nal), - (char const *)(nar),(unsigned long)6); - __e_acsl_full_init((void *)(& tmp_60)); - tmp_60 = __gen_e_acsl_strncmp((char const *)(nal), - (char const *)(nar),(unsigned long)6); - fail_ncomp(tmp_60 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_59, - 0); - test_successful(); - __e_acsl_delete_block((void *)(& tmp_59)); - __e_acsl_delete_block((void *)(& tmp_60)); - break; - __e_acsl_delete_block((void *)(& tmp_60)); - __e_acsl_delete_block((void *)(& tmp_59)); - } - case 1: { - signal_eval(0,0,__gen_e_acsl_literal_string_18); - break; - } - case 2: { - signal_eval(1,0,__gen_e_acsl_literal_string_18); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_18); - __gen_e_acsl_exit(3); - } + pid_t pid_13 = __gen_e_acsl_fork(); + if (! pid_13) { + int tmp_44; + int tmp_45; + tmp_44 = __gen_e_acsl_strncmp((char const *)(nal),(char const *)(nar), + (unsigned long)6); + tmp_45 = __gen_e_acsl_strncmp((char const *)(nal),(char const *)(nar), + (unsigned long)6); + fail_ncomp(tmp_45 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_44,0); + __gen_e_acsl_exit(0); + } + else { + int process_status_13; + __e_acsl_store_block((void *)(& process_status_13),(size_t)4); + __gen_e_acsl_waitpid(pid_13,& process_status_13,0); + signal_eval(process_status_13,0,__gen_e_acsl_literal_string_22); + __e_acsl_delete_block((void *)(& process_status_13)); } - __e_acsl_delete_block((void *)(& tmp_58)); - __e_acsl_delete_block((void *)(& jmp_ctxt_13)); } { - int tmp_62; - __e_acsl_store_block((void *)(& tmp_62),(size_t)4); - sigjmp_buf *jmp_ctxt_14 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_14),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_14)); - __e_acsl_full_init((void *)(& tmp_62)); - tmp_62 = sigsetjmp(*jmp_ctxt_14,1); - switch (tmp_62) { - case 0: - { - int tmp_63; - int tmp_64; - __e_acsl_store_block((void *)(& tmp_64),(size_t)4); - __e_acsl_store_block((void *)(& tmp_63),(size_t)4); - set_handler(); - __e_acsl_full_init((void *)(& tmp_63)); - tmp_63 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr, - (unsigned long)6); - __e_acsl_full_init((void *)(& tmp_64)); - tmp_64 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr, - (unsigned long)6); - fail_ncomp(tmp_64 != 0,(char *)__gen_e_acsl_literal_string_2,tmp_63, - 0); - test_successful(); - __e_acsl_delete_block((void *)(& tmp_63)); - __e_acsl_delete_block((void *)(& tmp_64)); - break; - __e_acsl_delete_block((void *)(& tmp_64)); - __e_acsl_delete_block((void *)(& tmp_63)); - } - case 1: { - signal_eval(0,0,__gen_e_acsl_literal_string_19); - break; - } - case 2: { - signal_eval(1,0,__gen_e_acsl_literal_string_19); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_19); - __gen_e_acsl_exit(3); - } + pid_t pid_14 = __gen_e_acsl_fork(); + if (! pid_14) { + int tmp_47; + int tmp_48; + tmp_47 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr, + (unsigned long)6); + tmp_48 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr, + (unsigned long)6); + fail_ncomp(tmp_48 != 0,(char *)__gen_e_acsl_literal_string_7,tmp_47,0); + __gen_e_acsl_exit(0); + } + else { + int process_status_14; + __e_acsl_store_block((void *)(& process_status_14),(size_t)4); + __gen_e_acsl_waitpid(pid_14,& process_status_14,0); + signal_eval(process_status_14,0,__gen_e_acsl_literal_string_23); + __e_acsl_delete_block((void *)(& process_status_14)); } - __e_acsl_delete_block((void *)(& tmp_62)); - __e_acsl_delete_block((void *)(& jmp_ctxt_14)); } - __e_acsl_initialize((void *)(& nal[3]),sizeof(char)); nal[3] = (char)'d'; { - int tmp_66; - __e_acsl_store_block((void *)(& tmp_66),(size_t)4); - sigjmp_buf *jmp_ctxt_15 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_15),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_15)); - __e_acsl_full_init((void *)(& tmp_66)); - tmp_66 = sigsetjmp(*jmp_ctxt_15,1); - switch (tmp_66) { - case 0: - { - int tmp_67; - int tmp_68; - __e_acsl_store_block((void *)(& tmp_68),(size_t)4); - __e_acsl_store_block((void *)(& tmp_67),(size_t)4); - set_handler(); - __e_acsl_full_init((void *)(& tmp_67)); - tmp_67 = __gen_e_acsl_strncmp((char const *)(nal), - (char const *)(nar),(unsigned long)4); - __e_acsl_full_init((void *)(& tmp_68)); - tmp_68 = __gen_e_acsl_strncmp((char const *)(nal), - (char const *)(nar),(unsigned long)4); - fail_ncomp(tmp_68 == 0,(char *)__gen_e_acsl_literal_string_20,tmp_67, - 0); - test_successful(); - __e_acsl_delete_block((void *)(& tmp_67)); - __e_acsl_delete_block((void *)(& tmp_68)); - break; - __e_acsl_delete_block((void *)(& tmp_68)); - __e_acsl_delete_block((void *)(& tmp_67)); - } - case 1: { - signal_eval(0,0,__gen_e_acsl_literal_string_21); - break; - } - case 2: { - signal_eval(1,0,__gen_e_acsl_literal_string_21); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_21); - __gen_e_acsl_exit(3); - } + pid_t pid_15 = __gen_e_acsl_fork(); + if (! pid_15) { + int tmp_50; + int tmp_51; + tmp_50 = __gen_e_acsl_strncmp((char const *)(nal),(char const *)(nar), + (unsigned long)4); + tmp_51 = __gen_e_acsl_strncmp((char const *)(nal),(char const *)(nar), + (unsigned long)4); + fail_ncomp(tmp_51 == 0,(char *)__gen_e_acsl_literal_string_24,tmp_50,0); + __gen_e_acsl_exit(0); + } + else { + int process_status_15; + __e_acsl_store_block((void *)(& process_status_15),(size_t)4); + __gen_e_acsl_waitpid(pid_15,& process_status_15,0); + signal_eval(process_status_15,0,__gen_e_acsl_literal_string_25); + __e_acsl_delete_block((void *)(& process_status_15)); } - __e_acsl_delete_block((void *)(& tmp_66)); - __e_acsl_delete_block((void *)(& jmp_ctxt_15)); } - __e_acsl_initialize((void *)(& nar[3]),sizeof(char)); nar[3] = (char)'d'; - __e_acsl_initialize((void *)(& nal[3]),sizeof(char)); nal[3] = (char)0; { - int tmp_70; - __e_acsl_store_block((void *)(& tmp_70),(size_t)4); - sigjmp_buf *jmp_ctxt_16 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_16),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_16)); - __e_acsl_full_init((void *)(& tmp_70)); - tmp_70 = sigsetjmp(*jmp_ctxt_16,1); - switch (tmp_70) { - case 0: - { - int tmp_71; - int tmp_72; - __e_acsl_store_block((void *)(& tmp_72),(size_t)4); - __e_acsl_store_block((void *)(& tmp_71),(size_t)4); - set_handler(); - __e_acsl_full_init((void *)(& tmp_71)); - tmp_71 = __gen_e_acsl_strncmp((char const *)(nal), - (char const *)(nar),(unsigned long)4); - __e_acsl_full_init((void *)(& tmp_72)); - tmp_72 = __gen_e_acsl_strncmp((char const *)(nal), - (char const *)(nar),(unsigned long)4); - fail_ncomp(tmp_72 == 0,(char *)__gen_e_acsl_literal_string_20,tmp_71, - 0); - test_successful(); - __e_acsl_delete_block((void *)(& tmp_71)); - __e_acsl_delete_block((void *)(& tmp_72)); - break; - __e_acsl_delete_block((void *)(& tmp_72)); - __e_acsl_delete_block((void *)(& tmp_71)); - } - case 1: { - signal_eval(0,0,__gen_e_acsl_literal_string_22); - break; - } - case 2: { - signal_eval(1,0,__gen_e_acsl_literal_string_22); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_22); - __gen_e_acsl_exit(3); - } + pid_t pid_16 = __gen_e_acsl_fork(); + if (! pid_16) { + int tmp_53; + int tmp_54; + tmp_53 = __gen_e_acsl_strncmp((char const *)(nal),(char const *)(nar), + (unsigned long)4); + tmp_54 = __gen_e_acsl_strncmp((char const *)(nal),(char const *)(nar), + (unsigned long)4); + fail_ncomp(tmp_54 == 0,(char *)__gen_e_acsl_literal_string_24,tmp_53,0); + __gen_e_acsl_exit(0); + } + else { + int process_status_16; + __e_acsl_store_block((void *)(& process_status_16),(size_t)4); + __gen_e_acsl_waitpid(pid_16,& process_status_16,0); + signal_eval(process_status_16,0,__gen_e_acsl_literal_string_26); + __e_acsl_delete_block((void *)(& process_status_16)); } - __e_acsl_delete_block((void *)(& tmp_70)); - __e_acsl_delete_block((void *)(& jmp_ctxt_16)); } - __e_acsl_initialize((void *)(dl + 3),sizeof(char)); *(dl + 3) = (char)'d'; { - int tmp_74; - __e_acsl_store_block((void *)(& tmp_74),(size_t)4); - sigjmp_buf *jmp_ctxt_17 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_17),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_17)); - __e_acsl_full_init((void *)(& tmp_74)); - tmp_74 = sigsetjmp(*jmp_ctxt_17,1); - switch (tmp_74) { - case 0: - { - int tmp_75; - int tmp_76; - __e_acsl_store_block((void *)(& tmp_76),(size_t)4); - __e_acsl_store_block((void *)(& tmp_75),(size_t)4); - set_handler(); - __e_acsl_full_init((void *)(& tmp_75)); - tmp_75 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr, - (unsigned long)4); - __e_acsl_full_init((void *)(& tmp_76)); - tmp_76 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr, - (unsigned long)4); - fail_ncomp(tmp_76 == 0,(char *)__gen_e_acsl_literal_string_20,tmp_75, - 0); - test_successful(); - __e_acsl_delete_block((void *)(& tmp_75)); - __e_acsl_delete_block((void *)(& tmp_76)); - break; - __e_acsl_delete_block((void *)(& tmp_76)); - __e_acsl_delete_block((void *)(& tmp_75)); - } - case 1: { - signal_eval(0,0,__gen_e_acsl_literal_string_23); - break; - } - case 2: { - signal_eval(1,0,__gen_e_acsl_literal_string_23); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_23); - __gen_e_acsl_exit(3); - } + pid_t pid_17 = __gen_e_acsl_fork(); + if (! pid_17) { + int tmp_56; + int tmp_57; + tmp_56 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr, + (unsigned long)4); + tmp_57 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr, + (unsigned long)4); + fail_ncomp(tmp_57 == 0,(char *)__gen_e_acsl_literal_string_24,tmp_56,0); + __gen_e_acsl_exit(0); + } + else { + int process_status_17; + __e_acsl_store_block((void *)(& process_status_17),(size_t)4); + __gen_e_acsl_waitpid(pid_17,& process_status_17,0); + signal_eval(process_status_17,0,__gen_e_acsl_literal_string_27); + __e_acsl_delete_block((void *)(& process_status_17)); } - __e_acsl_delete_block((void *)(& tmp_74)); - __e_acsl_delete_block((void *)(& jmp_ctxt_17)); } - __e_acsl_initialize((void *)(dr + 3),sizeof(char)); *(dr + 3) = (char)'d'; - __e_acsl_initialize((void *)(dl + 3),sizeof(char)); *(dl + 3) = (char)0; { - int tmp_78; - __e_acsl_store_block((void *)(& tmp_78),(size_t)4); - sigjmp_buf *jmp_ctxt_18 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_18),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_18)); - __e_acsl_full_init((void *)(& tmp_78)); - tmp_78 = sigsetjmp(*jmp_ctxt_18,1); - switch (tmp_78) { - case 0: - { - int tmp_79; - int tmp_80; - __e_acsl_store_block((void *)(& tmp_80),(size_t)4); - __e_acsl_store_block((void *)(& tmp_79),(size_t)4); - set_handler(); - __e_acsl_full_init((void *)(& tmp_79)); - tmp_79 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr, - (unsigned long)4); - __e_acsl_full_init((void *)(& tmp_80)); - tmp_80 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr, - (unsigned long)4); - fail_ncomp(tmp_80 == 0,(char *)__gen_e_acsl_literal_string_20,tmp_79, - 0); - test_successful(); - __e_acsl_delete_block((void *)(& tmp_79)); - __e_acsl_delete_block((void *)(& tmp_80)); - break; - __e_acsl_delete_block((void *)(& tmp_80)); - __e_acsl_delete_block((void *)(& tmp_79)); - } - case 1: { - signal_eval(0,0,__gen_e_acsl_literal_string_24); - break; - } - case 2: { - signal_eval(1,0,__gen_e_acsl_literal_string_24); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_24); - __gen_e_acsl_exit(3); - } + pid_t pid_18 = __gen_e_acsl_fork(); + if (! pid_18) { + int tmp_59; + int tmp_60; + tmp_59 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr, + (unsigned long)4); + tmp_60 = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr, + (unsigned long)4); + fail_ncomp(tmp_60 == 0,(char *)__gen_e_acsl_literal_string_24,tmp_59,0); + __gen_e_acsl_exit(0); + } + else { + int process_status_18; + __e_acsl_store_block((void *)(& process_status_18),(size_t)4); + __gen_e_acsl_waitpid(pid_18,& process_status_18,0); + signal_eval(process_status_18,0,__gen_e_acsl_literal_string_28); + __e_acsl_delete_block((void *)(& process_status_18)); } - __e_acsl_delete_block((void *)(& tmp_78)); - __e_acsl_delete_block((void *)(& jmp_ctxt_18)); } { - int tmp_82; - __e_acsl_store_block((void *)(& tmp_82),(size_t)4); - sigjmp_buf *jmp_ctxt_19 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_19),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_19)); - __e_acsl_full_init((void *)(& tmp_82)); - tmp_82 = sigsetjmp(*jmp_ctxt_19,1); - switch (tmp_82) { - case 0: - { - set_handler(); - __e_acsl_full_init((void *)(& res)); - res = __gen_e_acsl_strncmp((char const *)(nal),(char const *)(nar), - (unsigned long)5); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_25); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_25); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_25); - __gen_e_acsl_exit(3); - } + pid_t pid_19 = __gen_e_acsl_fork(); + if (! pid_19) { + res = __gen_e_acsl_strncmp((char const *)(nal),(char const *)(nar), + (unsigned long)5); + __gen_e_acsl_exit(0); + } + else { + int process_status_19; + __e_acsl_store_block((void *)(& process_status_19),(size_t)4); + __gen_e_acsl_waitpid(pid_19,& process_status_19,0); + signal_eval(process_status_19,1,__gen_e_acsl_literal_string_29); + __e_acsl_delete_block((void *)(& process_status_19)); } - __e_acsl_delete_block((void *)(& tmp_82)); - __e_acsl_delete_block((void *)(& jmp_ctxt_19)); } - __e_acsl_initialize((void *)(& nal[3]),sizeof(char)); nal[3] = (char)'d'; - __e_acsl_initialize((void *)(& nar[3]),sizeof(char)); nar[3] = (char)0; { - int tmp_84; - __e_acsl_store_block((void *)(& tmp_84),(size_t)4); - sigjmp_buf *jmp_ctxt_20 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_20),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_20)); - __e_acsl_full_init((void *)(& tmp_84)); - tmp_84 = sigsetjmp(*jmp_ctxt_20,1); - switch (tmp_84) { - case 0: - { - set_handler(); - __e_acsl_full_init((void *)(& res)); - res = __gen_e_acsl_strncmp((char const *)(al),(char const *)(ar), - (unsigned long)5); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_26); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_26); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_26); - __gen_e_acsl_exit(3); - } + pid_t pid_20 = __gen_e_acsl_fork(); + if (! pid_20) { + res = __gen_e_acsl_strncmp((char const *)(al),(char const *)(ar), + (unsigned long)5); + __gen_e_acsl_exit(0); + } + else { + int process_status_20; + __e_acsl_store_block((void *)(& process_status_20),(size_t)4); + __gen_e_acsl_waitpid(pid_20,& process_status_20,0); + signal_eval(process_status_20,1,__gen_e_acsl_literal_string_30); + __e_acsl_delete_block((void *)(& process_status_20)); } - __e_acsl_delete_block((void *)(& tmp_84)); - __e_acsl_delete_block((void *)(& jmp_ctxt_20)); } { - int tmp_86; - __e_acsl_store_block((void *)(& tmp_86),(size_t)4); - sigjmp_buf *jmp_ctxt_21 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_21),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_21)); - __e_acsl_full_init((void *)(& tmp_86)); - tmp_86 = sigsetjmp(*jmp_ctxt_21,1); - switch (tmp_86) { - case 0: - { - set_handler(); - __e_acsl_full_init((void *)(& res)); - res = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr, - (unsigned long)5); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_27); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_27); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_27); - __gen_e_acsl_exit(3); - } + pid_t pid_21 = __gen_e_acsl_fork(); + if (! pid_21) { + res = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr, + (unsigned long)5); + __gen_e_acsl_exit(0); + } + else { + int process_status_21; + __e_acsl_store_block((void *)(& process_status_21),(size_t)4); + __gen_e_acsl_waitpid(pid_21,& process_status_21,0); + signal_eval(process_status_21,1,__gen_e_acsl_literal_string_31); + __e_acsl_delete_block((void *)(& process_status_21)); } - __e_acsl_delete_block((void *)(& tmp_86)); - __e_acsl_delete_block((void *)(& jmp_ctxt_21)); } - __e_acsl_initialize((void *)(dl + 3),sizeof(char)); *(dl + 3) = (char)'d'; - __e_acsl_initialize((void *)(dr + 3),sizeof(char)); *(dr + 3) = (char)0; { - int tmp_88; - __e_acsl_store_block((void *)(& tmp_88),(size_t)4); - sigjmp_buf *jmp_ctxt_22 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_22),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_22)); - __e_acsl_full_init((void *)(& tmp_88)); - tmp_88 = sigsetjmp(*jmp_ctxt_22,1); - switch (tmp_88) { - case 0: - { - set_handler(); - __e_acsl_full_init((void *)(& res)); - res = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr, - (unsigned long)5); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_28); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_28); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_4,__gen_e_acsl_literal_string_28); - __gen_e_acsl_exit(3); - } + pid_t pid_22 = __gen_e_acsl_fork(); + if (! pid_22) { + res = __gen_e_acsl_strncmp((char const *)dl,(char const *)dr, + (unsigned long)5); + __gen_e_acsl_exit(0); + } + else { + int process_status_22; + __e_acsl_store_block((void *)(& process_status_22),(size_t)4); + __gen_e_acsl_waitpid(pid_22,& process_status_22,0); + signal_eval(process_status_22,1,__gen_e_acsl_literal_string_32); + __e_acsl_delete_block((void *)(& process_status_22)); } - __e_acsl_delete_block((void *)(& tmp_88)); - __e_acsl_delete_block((void *)(& jmp_ctxt_22)); } free((void *)dl); free((void *)dr); - __e_acsl_full_init((void *)(& __retres)); __retres = 0; - __e_acsl_delete_block((void *)(& argv)); - __e_acsl_delete_block((void *)(& argc)); - __e_acsl_delete_block((void *)(& fail_ncomp)); - __e_acsl_delete_block((void *)(& __fc_p_strerror)); - __e_acsl_delete_block((void *)(strerror)); - __e_acsl_delete_block((void *)(& __fc_strtok_ptr)); - __e_acsl_delete_block((void *)(& __fc_p_fopen)); - __e_acsl_delete_block((void *)(__fc_fopen)); - __e_acsl_delete_block((void *)(& stderr)); - __e_acsl_delete_block((void *)(& __fc_p_random48_counter)); - __e_acsl_delete_block((void *)(random48_counter)); - __e_acsl_delete_block((void *)(& __fc_random48_init)); - __e_acsl_delete_block((void *)(& __fc_rand_max)); - __e_acsl_delete_block((void *)(nar)); - __e_acsl_delete_block((void *)(nal)); - __e_acsl_delete_block((void *)(& res)); - __e_acsl_delete_block((void *)(& dr)); - __e_acsl_delete_block((void *)(& dl)); - __e_acsl_delete_block((void *)(ar)); - __e_acsl_delete_block((void *)(al)); - __e_acsl_delete_block((void *)(& cr)); - __e_acsl_delete_block((void *)(& cl)); - __e_acsl_delete_block((void *)(& __retres)); __e_acsl_memory_clean(); return __retres; } diff --git a/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strcpy.c b/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strcpy.c index 9e679e5810106c7d8204433ef64b6aca91e092d9..93d63197ed80be0e7170a58068a95c2d46d23744 100644 --- a/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strcpy.c +++ b/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strcpy.c @@ -1,9 +1,18 @@ /* Generated by Frama-C */ -#include "setjmp.h" #include "signal.h" +#include "stddef.h" #include "stdio.h" #include "stdlib.h" #include "string.h" +#include "sys/select.h" +#include "sys/time.h" +#include "sys/types.h" +#include "sys/wait.h" +#include "unistd.h" +char *__gen_e_acsl_literal_string_24; +char *__gen_e_acsl_literal_string_23; +char *__gen_e_acsl_literal_string_22; +char *__gen_e_acsl_literal_string_21; char *__gen_e_acsl_literal_string_20; char *__gen_e_acsl_literal_string_19; char *__gen_e_acsl_literal_string_18; @@ -16,139 +25,613 @@ char *__gen_e_acsl_literal_string_12; char *__gen_e_acsl_literal_string_11; char *__gen_e_acsl_literal_string_10; char *__gen_e_acsl_literal_string_9; -char *__gen_e_acsl_literal_string_8; char *__gen_e_acsl_literal_string_7; char *__gen_e_acsl_literal_string_6; -char *__gen_e_acsl_literal_string_5; -char *__gen_e_acsl_literal_string_2; char *__gen_e_acsl_literal_string; +char *__gen_e_acsl_literal_string_2; char *__gen_e_acsl_literal_string_3; +char *__gen_e_acsl_literal_string_5; char *__gen_e_acsl_literal_string_4; +char *__gen_e_acsl_literal_string_8; extern int __e_acsl_sound_verdict; +/*@ exits status: \exit_status ≡ \old(status); + ensures never_terminates: \false; + + assigns \exit_status \from status; + */ +void __gen_e_acsl_exit(int status); + +/*@ ensures result_ok_or_error: \result ≡ -1 ∨ \result ≥ 0; + ensures + initialization: stat_loc_init_on_success: + \result ≥ 0 ∧ \old(stat_loc) ≢ \null ⇒ + \initialized(\old(stat_loc)); + assigns \result, *stat_loc; + assigns \result \from (indirect: options); + assigns *stat_loc \from (indirect: options); + + behavior stat_loc_null: + assumes stat_loc_null: stat_loc ≡ \null; + assigns \result; + assigns \result \from \nothing; + + behavior stat_loc_non_null: + assumes stat_loc_non_null: stat_loc ≢ \null; + requires valid_stat_loc: \valid(stat_loc); + */ +pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options); + +/*@ ensures + result_ok_child_or_error: + \result ≡ 0 ∨ \result > 0 ∨ \result ≡ -1; + assigns \result; + assigns \result \from \nothing; + */ +pid_t __gen_e_acsl_fork(void); + +/*@ requires valid_string_src: valid_read_string(src); + requires room_string: \valid(dest + (0 .. strlen(src))); + requires + separation: + \separated(dest + (0 .. strlen(src)), src + (0 .. strlen(src))); + ensures equal_contents: strcmp(\old(dest), \old(src)) ≡ 0; + ensures result_ptr: \result ≡ \old(dest); + assigns *(dest + (0 .. strlen{Old}(src))), \result; + assigns *(dest + (0 .. strlen{Old}(src))) + \from *(src + (0 .. strlen{Old}(src))); + assigns \result \from dest; + */ +char *__gen_e_acsl_strcpy(char * restrict dest, char const * restrict src); + +/*@ requires valid_nstring_src: valid_read_nstring(src, n); + requires room_nstring: \valid(dest + (0 .. n - 1)); + requires separation: \separated(dest + (0 .. n - 1), src + (0 .. n - 1)); + ensures result_ptr: \result ≡ \old(dest); + ensures initialization: \initialized(\old(dest) + (0 .. \old(n) - 1)); + assigns *(dest + (0 .. n - 1)), \result; + assigns *(dest + (0 .. n - 1)) \from *(src + (0 .. n - 1)); + assigns \result \from dest; + + behavior complete: + assumes src_fits: strlen(src) < n; + ensures equal_after_copy: strcmp(\old(dest), \old(src)) ≡ 0; + + behavior partial: + assumes src_too_long: n ≤ strlen(src); + ensures + equal_prefix: + memcmp{Post, Post}(\old(dest), \old(src), \old(n)) ≡ 0; + */ +char *__gen_e_acsl_strncpy(char * restrict dest, char const * restrict src, + size_t n); + +/*@ requires valid_string_s: valid_read_string(s); + assigns \result; + assigns \result + \from (indirect: *(s + (0 .. strlen{Old}(s)))), + (indirect: __fc_heap_status); + allocates \result; + + behavior allocation: + assumes can_allocate: is_allocable(strlen(s)); + ensures allocation: \fresh{Old, Here}(\result,strlen(\old(s))); + ensures + result_valid_string_and_same_contents: + valid_string(\result) ∧ strcmp(\result, \old(s)) ≡ 0; + assigns __fc_heap_status, \result; + assigns __fc_heap_status \from (indirect: s), __fc_heap_status; + assigns \result + \from (indirect: *(s + (0 .. strlen{Old}(s)))), + (indirect: __fc_heap_status); + + behavior no_allocation: + assumes cannot_allocate: ¬is_allocable(strlen(s)); + ensures result_null: \result ≡ \null; + assigns \result; + assigns \result \from \nothing; + allocates \nothing; + */ +char *__gen_e_acsl_strdup(char const *s); + +/*@ requires valid_string_s: valid_read_string(s); + assigns \result; + assigns \result + \from (indirect: *(s + (0 .. strlen{Old}(s)))), + (indirect: __fc_heap_status); + allocates \result; + + behavior allocation: + assumes can_allocate: is_allocable(strlen(s)); + ensures allocation: \fresh{Old, Here}(\result,strlen(\old(s))); + ensures + result_valid_string_and_same_contents: + valid_string(\result) ∧ strcmp(\result, \old(s)) ≡ 0; + assigns __fc_heap_status, \result; + assigns __fc_heap_status \from (indirect: s), __fc_heap_status; + assigns \result + \from (indirect: *(s + (0 .. strlen{Old}(s)))), + (indirect: __fc_heap_status); + + behavior no_allocation: + assumes cannot_allocate: ¬is_allocable(strlen(s)); + ensures result_null: \result ≡ \null; + assigns \result; + assigns \result \from \nothing; + allocates \nothing; + */ +char *__gen_e_acsl_strdup(char const *s) +{ + __e_acsl_contract_t *__gen_e_acsl_contract; + char *__retres; + __e_acsl_store_block((void *)(& __retres),(size_t)8); + __gen_e_acsl_contract = __e_acsl_contract_init((size_t)2); + __retres = strdup(s); + { + int __gen_e_acsl_assumes_value; + __gen_e_acsl_assumes_value = __e_acsl_contract_get_behavior_assumes + ((__e_acsl_contract_t const *)__gen_e_acsl_contract,(size_t)1); + if (__gen_e_acsl_assumes_value) __e_acsl_assert(__retres == (char *)0,1, + "Postcondition","strdup", + "no_allocation: result_null: \\result == \\null", + "FRAMAC_SHARE/libc/string.h", + 485); + __e_acsl_contract_clean(__gen_e_acsl_contract); + __e_acsl_delete_block((void *)(& __retres)); + return __retres; + } +} + +/*@ requires valid_nstring_src: valid_read_nstring(src, n); + requires room_nstring: \valid(dest + (0 .. n - 1)); + requires separation: \separated(dest + (0 .. n - 1), src + (0 .. n - 1)); + ensures result_ptr: \result ≡ \old(dest); + ensures initialization: \initialized(\old(dest) + (0 .. \old(n) - 1)); + assigns *(dest + (0 .. n - 1)), \result; + assigns *(dest + (0 .. n - 1)) \from *(src + (0 .. n - 1)); + assigns \result \from dest; + + behavior complete: + assumes src_fits: strlen(src) < n; + ensures equal_after_copy: strcmp(\old(dest), \old(src)) ≡ 0; + + behavior partial: + assumes src_too_long: n ≤ strlen(src); + ensures + equal_prefix: + memcmp{Post, Post}(\old(dest), \old(src), \old(n)) ≡ 0; + */ +char *__gen_e_acsl_strncpy(char * restrict dest, char const * restrict src, + size_t n) +{ + __e_acsl_mpz_t __gen_e_acsl_at_3; + char *__gen_e_acsl_at_2; + char *__gen_e_acsl_at; + __e_acsl_contract_t *__gen_e_acsl_contract; + char *__retres; + { + unsigned long __gen_e_acsl_size; + __e_acsl_mpz_t __gen_e_acsl_n; + __e_acsl_mpz_t __gen_e_acsl_; + __e_acsl_mpz_t __gen_e_acsl_sub; + __e_acsl_mpz_t __gen_e_acsl__2; + __e_acsl_mpz_t __gen_e_acsl_sub_2; + __e_acsl_mpz_t __gen_e_acsl_add; + unsigned long __gen_e_acsl__3; + unsigned long __gen_e_acsl_if; + int __gen_e_acsl_valid; + unsigned long __gen_e_acsl_size_2; + unsigned long __gen_e_acsl__4; + unsigned long __gen_e_acsl_if_2; + int __gen_e_acsl_valid_read; + unsigned long __gen_e_acsl_size_3; + unsigned long __gen_e_acsl__5; + unsigned long __gen_e_acsl_if_3; + int __gen_e_acsl_valid_read_2; + unsigned long __gen_e_acsl_size_4; + unsigned long __gen_e_acsl__6; + unsigned long __gen_e_acsl_if_4; + unsigned long __gen_e_acsl_size_5; + unsigned long __gen_e_acsl__7; + unsigned long __gen_e_acsl_if_5; + int __gen_e_acsl_separated; + __e_acsl_store_block((void *)(& src),(size_t)8); + __e_acsl_store_block((void *)(& dest),(size_t)8); + __gen_e_acsl_contract = __e_acsl_contract_init((size_t)2); + __gmpz_init_set_ui(__gen_e_acsl_n,n); + __gmpz_init_set_si(__gen_e_acsl_,1L); + __gmpz_init(__gen_e_acsl_sub); + __gmpz_sub(__gen_e_acsl_sub, + (__e_acsl_mpz_struct const *)(__gen_e_acsl_n), + (__e_acsl_mpz_struct const *)(__gen_e_acsl_)); + __gmpz_init_set_si(__gen_e_acsl__2,0L); + __gmpz_init(__gen_e_acsl_sub_2); + __gmpz_sub(__gen_e_acsl_sub_2, + (__e_acsl_mpz_struct const *)(__gen_e_acsl_sub), + (__e_acsl_mpz_struct const *)(__gen_e_acsl__2)); + __gmpz_init(__gen_e_acsl_add); + __gmpz_add(__gen_e_acsl_add, + (__e_acsl_mpz_struct const *)(__gen_e_acsl_sub_2), + (__e_acsl_mpz_struct const *)(__gen_e_acsl_)); + __gen_e_acsl__3 = __gmpz_get_ui((__e_acsl_mpz_struct const *)(__gen_e_acsl_add)); + __gen_e_acsl_size = 1UL * __gen_e_acsl__3; + if (__gen_e_acsl_size <= 0UL) __gen_e_acsl_if = 0UL; + else __gen_e_acsl_if = __gen_e_acsl_size; + __gen_e_acsl_valid = __e_acsl_valid((void *)(dest + 1 * 0), + __gen_e_acsl_if,(void *)dest, + (void *)(& dest)); + __e_acsl_assert(__gen_e_acsl_valid,1,"Precondition","strncpy", + "room_nstring: \\valid(dest + (0 .. n - 1))", + "FRAMAC_SHARE/libc/string.h",367); + __gen_e_acsl__4 = __gmpz_get_ui((__e_acsl_mpz_struct const *)(__gen_e_acsl_add)); + __gen_e_acsl_size_2 = 1UL * __gen_e_acsl__4; + if (__gen_e_acsl_size_2 <= 0UL) __gen_e_acsl_if_2 = 0UL; + else __gen_e_acsl_if_2 = __gen_e_acsl_size_2; + __gen_e_acsl_valid_read = __e_acsl_valid_read((void *)(dest + 1 * 0), + __gen_e_acsl_if_2, + (void *)dest, + (void *)(& dest)); + /*@ assert E_ACSL: separated_guard: \valid_read(dest + (0 .. n - 1)); */ + __e_acsl_assert(__gen_e_acsl_valid_read,1,"RTE","strncpy", + "separated_guard: \\valid_read(dest + (0 .. n - 1))", + "FRAMAC_SHARE/libc/string.h",369); + __gen_e_acsl__5 = __gmpz_get_ui((__e_acsl_mpz_struct const *)(__gen_e_acsl_add)); + __gen_e_acsl_size_3 = 1UL * __gen_e_acsl__5; + if (__gen_e_acsl_size_3 <= 0UL) __gen_e_acsl_if_3 = 0UL; + else __gen_e_acsl_if_3 = __gen_e_acsl_size_3; + __gen_e_acsl_valid_read_2 = __e_acsl_valid_read((void *)(src + 1 * 0), + __gen_e_acsl_if_3, + (void *)src, + (void *)(& src)); + /*@ assert E_ACSL: separated_guard: \valid_read(src + (0 .. n - 1)); */ + __e_acsl_assert(__gen_e_acsl_valid_read_2,1,"RTE","strncpy", + "separated_guard: \\valid_read(src + (0 .. n - 1))", + "FRAMAC_SHARE/libc/string.h",369); + __gen_e_acsl__6 = __gmpz_get_ui((__e_acsl_mpz_struct const *)(__gen_e_acsl_add)); + __gen_e_acsl_size_4 = 1UL * __gen_e_acsl__6; + if (__gen_e_acsl_size_4 <= 0UL) __gen_e_acsl_if_4 = 0UL; + else __gen_e_acsl_if_4 = __gen_e_acsl_size_4; + __gen_e_acsl__7 = __gmpz_get_ui((__e_acsl_mpz_struct const *)(__gen_e_acsl_add)); + __gen_e_acsl_size_5 = 1UL * __gen_e_acsl__7; + if (__gen_e_acsl_size_5 <= 0UL) __gen_e_acsl_if_5 = 0UL; + else __gen_e_acsl_if_5 = __gen_e_acsl_size_5; + __gen_e_acsl_separated = __e_acsl_separated((size_t)2,dest + 1 * 0, + __gen_e_acsl_if_4, + src + 1 * 0, + __gen_e_acsl_if_5); + __e_acsl_assert(__gen_e_acsl_separated,1,"Precondition","strncpy", + "separation: \\separated(dest + (0 .. n - 1), src + (0 .. n - 1))", + "FRAMAC_SHARE/libc/string.h",369); + __gmpz_clear(__gen_e_acsl_n); + __gmpz_clear(__gen_e_acsl_); + __gmpz_clear(__gen_e_acsl_sub); + __gmpz_clear(__gen_e_acsl__2); + __gmpz_clear(__gen_e_acsl_sub_2); + __gmpz_clear(__gen_e_acsl_add); + } + { + __e_acsl_mpz_t __gen_e_acsl_n_2; + __gmpz_init_set_ui(__gen_e_acsl_n_2,n); + __gmpz_init_set(__gen_e_acsl_at_3, + (__e_acsl_mpz_struct const *)(__gen_e_acsl_n_2)); + __gmpz_clear(__gen_e_acsl_n_2); + } + __gen_e_acsl_at_2 = dest; + __gen_e_acsl_at = dest; + __retres = __e_acsl_builtin_strncpy(dest,src,n); + { + unsigned long __gen_e_acsl_size_6; + __e_acsl_mpz_t __gen_e_acsl__8; + __e_acsl_mpz_t __gen_e_acsl_sub_3; + __e_acsl_mpz_t __gen_e_acsl__9; + __e_acsl_mpz_t __gen_e_acsl_sub_4; + __e_acsl_mpz_t __gen_e_acsl_add_2; + unsigned long __gen_e_acsl__10; + unsigned long __gen_e_acsl_if_6; + int __gen_e_acsl_initialized; + __e_acsl_assert(__retres == __gen_e_acsl_at,1,"Postcondition","strncpy", + "result_ptr: \\result == \\old(dest)", + "FRAMAC_SHARE/libc/string.h",372); + __gmpz_init_set_si(__gen_e_acsl__8,1L); + __gmpz_init(__gen_e_acsl_sub_3); + __gmpz_sub(__gen_e_acsl_sub_3, + (__e_acsl_mpz_struct const *)(__gen_e_acsl_at_3), + (__e_acsl_mpz_struct const *)(__gen_e_acsl__8)); + __gmpz_init_set_si(__gen_e_acsl__9,0L); + __gmpz_init(__gen_e_acsl_sub_4); + __gmpz_sub(__gen_e_acsl_sub_4, + (__e_acsl_mpz_struct const *)(__gen_e_acsl_sub_3), + (__e_acsl_mpz_struct const *)(__gen_e_acsl__9)); + __gmpz_init(__gen_e_acsl_add_2); + __gmpz_add(__gen_e_acsl_add_2, + (__e_acsl_mpz_struct const *)(__gen_e_acsl_sub_4), + (__e_acsl_mpz_struct const *)(__gen_e_acsl__8)); + __gen_e_acsl__10 = __gmpz_get_ui((__e_acsl_mpz_struct const *)(__gen_e_acsl_add_2)); + __gen_e_acsl_size_6 = 1UL * __gen_e_acsl__10; + if (__gen_e_acsl_size_6 <= 0UL) __gen_e_acsl_if_6 = 0UL; + else __gen_e_acsl_if_6 = __gen_e_acsl_size_6; + __gen_e_acsl_initialized = __e_acsl_initialized((void *)(__gen_e_acsl_at_2 + + 1 * 0), + __gen_e_acsl_if_6); + __e_acsl_assert(__gen_e_acsl_initialized,1,"Postcondition","strncpy", + "initialization: \\initialized(\\old(dest) + (0 .. \\old(n) - 1))", + "FRAMAC_SHARE/libc/string.h",373); + __e_acsl_contract_clean(__gen_e_acsl_contract); + __e_acsl_delete_block((void *)(& src)); + __e_acsl_delete_block((void *)(& dest)); + __gmpz_clear(__gen_e_acsl__8); + __gmpz_clear(__gen_e_acsl_sub_3); + __gmpz_clear(__gen_e_acsl__9); + __gmpz_clear(__gen_e_acsl_sub_4); + __gmpz_clear(__gen_e_acsl_add_2); + __gmpz_clear(__gen_e_acsl_at_3); + return __retres; + } +} + +/*@ requires valid_string_src: valid_read_string(src); + requires room_string: \valid(dest + (0 .. strlen(src))); + requires + separation: + \separated(dest + (0 .. strlen(src)), src + (0 .. strlen(src))); + ensures equal_contents: strcmp(\old(dest), \old(src)) ≡ 0; + ensures result_ptr: \result ≡ \old(dest); + assigns *(dest + (0 .. strlen{Old}(src))), \result; + assigns *(dest + (0 .. strlen{Old}(src))) + \from *(src + (0 .. strlen{Old}(src))); + assigns \result \from dest; + */ +char *__gen_e_acsl_strcpy(char * restrict dest, char const * restrict src) +{ + char *__gen_e_acsl_at; + char *__retres; + __e_acsl_store_block((void *)(& src),(size_t)8); + __e_acsl_store_block((void *)(& dest),(size_t)8); + __gen_e_acsl_at = dest; + __retres = __e_acsl_builtin_strcpy(dest,src); + __e_acsl_assert(__retres == __gen_e_acsl_at,1,"Postcondition","strcpy", + "result_ptr: \\result == \\old(dest)", + "FRAMAC_SHARE/libc/string.h",361); + __e_acsl_delete_block((void *)(& src)); + __e_acsl_delete_block((void *)(& dest)); + return __retres; +} + +/*@ ensures + result_ok_child_or_error: + \result ≡ 0 ∨ \result > 0 ∨ \result ≡ -1; + assigns \result; + assigns \result \from \nothing; + */ +pid_t __gen_e_acsl_fork(void) +{ + pid_t __retres; + __retres = fork(); + { + int __gen_e_acsl_or; + int __gen_e_acsl_or_2; + if (__retres == 0) __gen_e_acsl_or = 1; + else __gen_e_acsl_or = __retres > 0; + if (__gen_e_acsl_or) __gen_e_acsl_or_2 = 1; + else __gen_e_acsl_or_2 = __retres == -1; + __e_acsl_assert(__gen_e_acsl_or_2,1,"Postcondition","fork", + "result_ok_child_or_error: \\result == 0 || \\result > 0 || \\result == -1", + "FRAMAC_SHARE/libc/unistd.h",859); + return __retres; + } +} + +/*@ ensures result_ok_or_error: \result ≡ -1 ∨ \result ≥ 0; + ensures + initialization: stat_loc_init_on_success: + \result ≥ 0 ∧ \old(stat_loc) ≢ \null ⇒ + \initialized(\old(stat_loc)); + assigns \result, *stat_loc; + assigns \result \from (indirect: options); + assigns *stat_loc \from (indirect: options); + + behavior stat_loc_null: + assumes stat_loc_null: stat_loc ≡ \null; + assigns \result; + assigns \result \from \nothing; + + behavior stat_loc_non_null: + assumes stat_loc_non_null: stat_loc ≢ \null; + requires valid_stat_loc: \valid(stat_loc); + */ +pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options) +{ + int *__gen_e_acsl_at_2; + int *__gen_e_acsl_at; + __e_acsl_contract_t *__gen_e_acsl_contract; + pid_t __retres; + { + int __gen_e_acsl_assumes_value; + __e_acsl_store_block((void *)(& stat_loc),(size_t)8); + __gen_e_acsl_contract = __e_acsl_contract_init((size_t)2); + __e_acsl_contract_set_behavior_assumes(__gen_e_acsl_contract,(size_t)0, + stat_loc == (int *)0); + __e_acsl_contract_set_behavior_assumes(__gen_e_acsl_contract,(size_t)1, + stat_loc != (int *)0); + __gen_e_acsl_assumes_value = __e_acsl_contract_get_behavior_assumes + ((__e_acsl_contract_t const *)__gen_e_acsl_contract,(size_t)1); + if (__gen_e_acsl_assumes_value) { + int __gen_e_acsl_valid; + __gen_e_acsl_valid = __e_acsl_valid((void *)stat_loc,sizeof(int), + (void *)stat_loc, + (void *)(& stat_loc)); + __e_acsl_assert(__gen_e_acsl_valid,1,"Precondition","waitpid", + "stat_loc_non_null: valid_stat_loc: \\valid(stat_loc)", + "FRAMAC_SHARE/libc/sys/wait.h",92); + } + } + __gen_e_acsl_at_2 = stat_loc; + __gen_e_acsl_at = stat_loc; + __retres = waitpid(pid,stat_loc,options); + { + int __gen_e_acsl_or; + int __gen_e_acsl_and; + int __gen_e_acsl_implies; + if (__retres == -1) __gen_e_acsl_or = 1; + else __gen_e_acsl_or = __retres >= 0; + __e_acsl_assert(__gen_e_acsl_or,1,"Postcondition","waitpid", + "result_ok_or_error: \\result == -1 || \\result >= 0", + "FRAMAC_SHARE/libc/sys/wait.h",84); + if (__retres >= 0) __gen_e_acsl_and = __gen_e_acsl_at != (int *)0; + else __gen_e_acsl_and = 0; + if (! __gen_e_acsl_and) __gen_e_acsl_implies = 1; + else { + int __gen_e_acsl_initialized; + __gen_e_acsl_initialized = __e_acsl_initialized((void *)__gen_e_acsl_at_2, + sizeof(int)); + __gen_e_acsl_implies = __gen_e_acsl_initialized; + } + __e_acsl_assert(__gen_e_acsl_implies,1,"Postcondition","waitpid", + "initialization: stat_loc_init_on_success:\n \\result >= 0 && \\old(stat_loc) != \\null ==> \\initialized(\\old(stat_loc))", + "FRAMAC_SHARE/libc/sys/wait.h",86); + __e_acsl_contract_clean(__gen_e_acsl_contract); + __e_acsl_delete_block((void *)(& stat_loc)); + return __retres; + } +} + +/*@ exits status: \exit_status ≡ \old(status); + ensures never_terminates: \false; + + assigns \exit_status \from status; + */ +void __gen_e_acsl_exit(int status) +{ + exit(status); + __e_acsl_assert(0,1,"Postcondition","exit","never_terminates: \\false", + "FRAMAC_SHARE/libc/stdlib.h",473); + return; +} + void __e_acsl_globals_init(void) { static char __e_acsl_already_run = 0; if (! __e_acsl_already_run) { __e_acsl_already_run = 1; - __gen_e_acsl_literal_string_20 = "tests/builtin/strcpy.c:39"; - __e_acsl_store_block((void *)__gen_e_acsl_literal_string_20, + __gen_e_acsl_literal_string_24 = "tests/builtin/strcpy.c:39"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_24, sizeof("tests/builtin/strcpy.c:39")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_24); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_24); + __gen_e_acsl_literal_string_23 = "tests/builtin/strcpy.c:38"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_23, + sizeof("tests/builtin/strcpy.c:38")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_23); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_23); + __gen_e_acsl_literal_string_22 = "tests/builtin/strcpy.c:37"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_22, + sizeof("tests/builtin/strcpy.c:37")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_22); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_22); + __gen_e_acsl_literal_string_21 = "tests/builtin/strcpy.c:36"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_21, + sizeof("tests/builtin/strcpy.c:36")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_21); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_21); + __gen_e_acsl_literal_string_20 = "tests/builtin/strcpy.c:35"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_20, + sizeof("tests/builtin/strcpy.c:35")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_20); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_20); - __gen_e_acsl_literal_string_19 = "tests/builtin/strcpy.c:38"; + __gen_e_acsl_literal_string_19 = "tests/builtin/strcpy.c:34"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_19, - sizeof("tests/builtin/strcpy.c:38")); + sizeof("tests/builtin/strcpy.c:34")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_19); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_19); - __gen_e_acsl_literal_string_18 = "tests/builtin/strcpy.c:37"; + __gen_e_acsl_literal_string_18 = "tests/builtin/strcpy.c:33"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_18, - sizeof("tests/builtin/strcpy.c:37")); + sizeof("tests/builtin/strcpy.c:33")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_18); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_18); - __gen_e_acsl_literal_string_17 = "tests/builtin/strcpy.c:36"; + __gen_e_acsl_literal_string_17 = "tests/builtin/strcpy.c:32"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_17, - sizeof("tests/builtin/strcpy.c:36")); + sizeof("tests/builtin/strcpy.c:32")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_17); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_17); - __gen_e_acsl_literal_string_16 = "tests/builtin/strcpy.c:35"; + __gen_e_acsl_literal_string_16 = "tests/builtin/strcpy.c:29"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_16, - sizeof("tests/builtin/strcpy.c:35")); + sizeof("tests/builtin/strcpy.c:29")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_16); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_16); - __gen_e_acsl_literal_string_15 = "tests/builtin/strcpy.c:34"; + __gen_e_acsl_literal_string_15 = "tests/builtin/strcpy.c:28"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_15, - sizeof("tests/builtin/strcpy.c:34")); + sizeof("tests/builtin/strcpy.c:28")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_15); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_15); - __gen_e_acsl_literal_string_14 = "tests/builtin/strcpy.c:33"; + __gen_e_acsl_literal_string_14 = "tests/builtin/strcpy.c:27"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_14, - sizeof("tests/builtin/strcpy.c:33")); + sizeof("tests/builtin/strcpy.c:27")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_14); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_14); - __gen_e_acsl_literal_string_13 = "tests/builtin/strcpy.c:32"; + __gen_e_acsl_literal_string_13 = "tests/builtin/strcpy.c:26"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_13, - sizeof("tests/builtin/strcpy.c:32")); + sizeof("tests/builtin/strcpy.c:26")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_13); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_13); - __gen_e_acsl_literal_string_12 = "tests/builtin/strcpy.c:29"; + __gen_e_acsl_literal_string_12 = "tests/builtin/strcpy.c:25"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_12, - sizeof("tests/builtin/strcpy.c:29")); + sizeof("tests/builtin/strcpy.c:25")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_12); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_12); - __gen_e_acsl_literal_string_11 = "tests/builtin/strcpy.c:28"; + __gen_e_acsl_literal_string_11 = "tests/builtin/strcpy.c:24"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_11, - sizeof("tests/builtin/strcpy.c:28")); + sizeof("tests/builtin/strcpy.c:24")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_11); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_11); - __gen_e_acsl_literal_string_10 = "tests/builtin/strcpy.c:27"; + __gen_e_acsl_literal_string_10 = "tests/builtin/strcpy.c:23"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_10, - sizeof("tests/builtin/strcpy.c:27")); + sizeof("tests/builtin/strcpy.c:23")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_10); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_10); - __gen_e_acsl_literal_string_9 = "tests/builtin/strcpy.c:26"; + __gen_e_acsl_literal_string_9 = "tests/builtin/strcpy.c:22"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_9, - sizeof("tests/builtin/strcpy.c:26")); + sizeof("tests/builtin/strcpy.c:22")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_9); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_9); - __gen_e_acsl_literal_string_8 = "tests/builtin/strcpy.c:25"; - __e_acsl_store_block((void *)__gen_e_acsl_literal_string_8, - sizeof("tests/builtin/strcpy.c:25")); - __e_acsl_full_init((void *)__gen_e_acsl_literal_string_8); - __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_8); - __gen_e_acsl_literal_string_7 = "tests/builtin/strcpy.c:24"; + __gen_e_acsl_literal_string_7 = "tests/builtin/strcpy.c:21"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_7, - sizeof("tests/builtin/strcpy.c:24")); + sizeof("tests/builtin/strcpy.c:21")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_7); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_7); - __gen_e_acsl_literal_string_6 = "tests/builtin/strcpy.c:23"; + __gen_e_acsl_literal_string_6 = "abcd"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_6, - sizeof("tests/builtin/strcpy.c:23")); + sizeof("abcd")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_6); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_6); - __gen_e_acsl_literal_string_5 = "tests/builtin/strcpy.c:22"; - __e_acsl_store_block((void *)__gen_e_acsl_literal_string_5, - sizeof("tests/builtin/strcpy.c:22")); - __e_acsl_full_init((void *)__gen_e_acsl_literal_string_5); - __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_5); - __gen_e_acsl_literal_string_2 = "tests/builtin/strcpy.c:21"; + __gen_e_acsl_literal_string = "TEST %d: "; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string, + sizeof("TEST %d: ")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string); + __gen_e_acsl_literal_string_2 = "OK: Expected signal at %s\n"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_2, - sizeof("tests/builtin/strcpy.c:21")); + sizeof("OK: Expected signal at %s\n")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_2); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_2); - __gen_e_acsl_literal_string = "abcd"; - __e_acsl_store_block((void *)__gen_e_acsl_literal_string,sizeof("abcd")); - __e_acsl_full_init((void *)__gen_e_acsl_literal_string); - __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string); - __gen_e_acsl_literal_string_3 = "FAIL: Unexpected value return from test at %s\n"; + __gen_e_acsl_literal_string_3 = "OK: Expected execution at %s\n"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_3, - sizeof("FAIL: Unexpected value return from test at %s\n")); + sizeof("OK: Expected execution at %s\n")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_3); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_3); - __gen_e_acsl_literal_string_4 = ""; - __e_acsl_store_block((void *)__gen_e_acsl_literal_string_4,sizeof("")); + __gen_e_acsl_literal_string_5 = "FAIL: Unexpected signal at %s\n"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_5, + sizeof("FAIL: Unexpected signal at %s\n")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_5); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_5); + __gen_e_acsl_literal_string_4 = "FAIL: Unexpected execution at %s\n"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_4, + sizeof("FAIL: Unexpected execution at %s\n")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_4); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_4); - __e_acsl_store_block((void *)(& __gen_e_acsl_strdup),(size_t)1); - __e_acsl_full_init((void *)(& __gen_e_acsl_strdup)); - __e_acsl_store_block((void *)(& __gen_e_acsl_strncpy),(size_t)1); - __e_acsl_full_init((void *)(& __gen_e_acsl_strncpy)); - __e_acsl_store_block((void *)(& __gen_e_acsl_strcpy),(size_t)1); - __e_acsl_full_init((void *)(& __gen_e_acsl_strcpy)); - __e_acsl_store_block((void *)(& __gen_e_acsl_exit),(size_t)1); - __e_acsl_full_init((void *)(& __gen_e_acsl_exit)); - __e_acsl_store_block((void *)(& __fc_p_strerror),(size_t)8); - __e_acsl_full_init((void *)(& __fc_p_strerror)); - __e_acsl_store_block((void *)(strerror),(size_t)64); - __e_acsl_full_init((void *)(& strerror)); - __e_acsl_store_block((void *)(& __fc_strtok_ptr),(size_t)8); - __e_acsl_full_init((void *)(& __fc_strtok_ptr)); - __e_acsl_store_block((void *)(& __fc_p_fopen),(size_t)8); - __e_acsl_full_init((void *)(& __fc_p_fopen)); - __e_acsl_store_block((void *)(__fc_fopen),(size_t)128); - __e_acsl_full_init((void *)(& __fc_fopen)); - __e_acsl_store_block((void *)(& __fc_rand_max),(size_t)8); - __e_acsl_full_init((void *)(& __fc_rand_max)); + __gen_e_acsl_literal_string_8 = ""; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_8,sizeof("")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_8); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_8); } return; } @@ -158,14 +641,13 @@ int main(int argc, char const **argv) int __retres; __e_acsl_memory_init(& argc,(char ***)(& argv),(size_t)8); __e_acsl_globals_init(); - __e_acsl_store_block((void *)(& __retres),(size_t)4); char empty_str[1] = {(char)'\000'}; __e_acsl_store_block((void *)(empty_str),(size_t)1); __e_acsl_full_init((void *)(& empty_str)); - char *const_str = (char *)__gen_e_acsl_literal_string; + char *const_str = (char *)__gen_e_acsl_literal_string_6; __e_acsl_store_block((void *)(& const_str),(size_t)8); __e_acsl_full_init((void *)(& const_str)); - char *src = __gen_e_acsl_strdup(__gen_e_acsl_literal_string); + char *src = __gen_e_acsl_strdup(__gen_e_acsl_literal_string_6); __e_acsl_store_block((void *)(& src),(size_t)8); __e_acsl_full_init((void *)(& src)); char *dest1 = malloc((unsigned long)5); @@ -179,602 +661,260 @@ int main(int argc, char const **argv) __e_acsl_store_block((void *)(dest3),(size_t)256); __e_acsl_full_init((void *)(& dest3)); size_t len = (unsigned long)0; - __e_acsl_store_block((void *)(& len),(size_t)8); - __e_acsl_full_init((void *)(& len)); char *unalloc_str = malloc((unsigned long)5); __e_acsl_store_block((void *)(& unalloc_str),(size_t)8); __e_acsl_full_init((void *)(& unalloc_str)); char *_barrier = malloc((unsigned long)1); - __e_acsl_store_block((void *)(& _barrier),(size_t)8); - __e_acsl_full_init((void *)(& _barrier)); free((void *)unalloc_str); { - int tmp_5; - __e_acsl_store_block((void *)(& tmp_5),(size_t)4); - sigjmp_buf *jmp_ctxt = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt)); - __e_acsl_full_init((void *)(& tmp_5)); - /*@ assert Eva: mem_access: \valid_read(jmp_ctxt); */ - tmp_5 = sigsetjmp(*jmp_ctxt,1); - switch (tmp_5) { - case 0: - { - set_handler(); - __gen_e_acsl_strcpy(dest1,(char const *)src); - test_successful(); - break; - } - case 1: { - signal_eval(0,0,__gen_e_acsl_literal_string_2); - break; - } - case 2: { - signal_eval(1,0,__gen_e_acsl_literal_string_2); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_2); - __gen_e_acsl_exit(3); - } - } - __e_acsl_delete_block((void *)(& tmp_5)); - __e_acsl_delete_block((void *)(& jmp_ctxt)); + pid_t pid = __gen_e_acsl_fork(); + if (! pid) { + __gen_e_acsl_strcpy(dest1,(char const *)src); + __gen_e_acsl_exit(0); + } + else { + int process_status; + __e_acsl_store_block((void *)(& process_status),(size_t)4); + __gen_e_acsl_waitpid(pid,& process_status,0); + signal_eval(process_status,0,__gen_e_acsl_literal_string_7); + __e_acsl_delete_block((void *)(& process_status)); + } } { - int tmp_7; - __e_acsl_store_block((void *)(& tmp_7),(size_t)4); - sigjmp_buf *jmp_ctxt_0 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_0),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_0)); - __e_acsl_full_init((void *)(& tmp_7)); - tmp_7 = sigsetjmp(*jmp_ctxt_0,1); - switch (tmp_7) { - case 0: - { - set_handler(); - __gen_e_acsl_strcpy(empty_str,__gen_e_acsl_literal_string_4); - test_successful(); - break; - } - case 1: { - signal_eval(0,0,__gen_e_acsl_literal_string_5); - break; - } - case 2: { - signal_eval(1,0,__gen_e_acsl_literal_string_5); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_5); - __gen_e_acsl_exit(3); - } - } - __e_acsl_delete_block((void *)(& tmp_7)); - __e_acsl_delete_block((void *)(& jmp_ctxt_0)); + pid_t pid_0 = __gen_e_acsl_fork(); + if (! pid_0) { + __gen_e_acsl_strcpy(empty_str,__gen_e_acsl_literal_string_8); + __gen_e_acsl_exit(0); + } + else { + int process_status_0; + __e_acsl_store_block((void *)(& process_status_0),(size_t)4); + __gen_e_acsl_waitpid(pid_0,& process_status_0,0); + signal_eval(process_status_0,0,__gen_e_acsl_literal_string_9); + __e_acsl_delete_block((void *)(& process_status_0)); + } } { - int tmp_9; - __e_acsl_store_block((void *)(& tmp_9),(size_t)4); - sigjmp_buf *jmp_ctxt_1 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_1),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_1)); - __e_acsl_full_init((void *)(& tmp_9)); - tmp_9 = sigsetjmp(*jmp_ctxt_1,1); - switch (tmp_9) { - case 0: - { - set_handler(); - __gen_e_acsl_strcpy(dest2,(char const *)src); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_6); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_6); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_6); - __gen_e_acsl_exit(3); - } - } - __e_acsl_delete_block((void *)(& tmp_9)); - __e_acsl_delete_block((void *)(& jmp_ctxt_1)); + pid_t pid_1 = __gen_e_acsl_fork(); + if (! pid_1) { + __gen_e_acsl_strcpy(dest2,(char const *)src); + __gen_e_acsl_exit(0); + } + else { + int process_status_1; + __e_acsl_store_block((void *)(& process_status_1),(size_t)4); + __gen_e_acsl_waitpid(pid_1,& process_status_1,0); + signal_eval(process_status_1,1,__gen_e_acsl_literal_string_10); + __e_acsl_delete_block((void *)(& process_status_1)); + } } { - int tmp_11; - __e_acsl_store_block((void *)(& tmp_11),(size_t)4); - sigjmp_buf *jmp_ctxt_2 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_2),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_2)); - __e_acsl_full_init((void *)(& tmp_11)); - tmp_11 = sigsetjmp(*jmp_ctxt_2,1); - switch (tmp_11) { - case 0: - { - set_handler(); - __gen_e_acsl_strcpy(unalloc_str,(char const *)src); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_7); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_7); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_7); - __gen_e_acsl_exit(3); - } - } - __e_acsl_delete_block((void *)(& tmp_11)); - __e_acsl_delete_block((void *)(& jmp_ctxt_2)); + pid_t pid_2 = __gen_e_acsl_fork(); + if (! pid_2) { + __gen_e_acsl_strcpy(unalloc_str,(char const *)src); + __gen_e_acsl_exit(0); + } + else { + int process_status_2; + __e_acsl_store_block((void *)(& process_status_2),(size_t)4); + __gen_e_acsl_waitpid(pid_2,& process_status_2,0); + signal_eval(process_status_2,1,__gen_e_acsl_literal_string_11); + __e_acsl_delete_block((void *)(& process_status_2)); + } } { - int tmp_13; - __e_acsl_store_block((void *)(& tmp_13),(size_t)4); - sigjmp_buf *jmp_ctxt_3 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_3),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_3)); - __e_acsl_full_init((void *)(& tmp_13)); - tmp_13 = sigsetjmp(*jmp_ctxt_3,1); - switch (tmp_13) { - case 0: - { - set_handler(); - __gen_e_acsl_strcpy(const_str,(char const *)src); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_8); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_8); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_8); - __gen_e_acsl_exit(3); - } - } - __e_acsl_delete_block((void *)(& tmp_13)); - __e_acsl_delete_block((void *)(& jmp_ctxt_3)); + pid_t pid_3 = __gen_e_acsl_fork(); + if (! pid_3) { + __gen_e_acsl_strcpy(const_str,(char const *)src); + __gen_e_acsl_exit(0); + } + else { + int process_status_3; + __e_acsl_store_block((void *)(& process_status_3),(size_t)4); + __gen_e_acsl_waitpid(pid_3,& process_status_3,0); + signal_eval(process_status_3,1,__gen_e_acsl_literal_string_12); + __e_acsl_delete_block((void *)(& process_status_3)); + } } { - int tmp_15; - __e_acsl_store_block((void *)(& tmp_15),(size_t)4); - sigjmp_buf *jmp_ctxt_4 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_4),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_4)); - __e_acsl_full_init((void *)(& tmp_15)); - tmp_15 = sigsetjmp(*jmp_ctxt_4,1); - switch (tmp_15) { - case 0: - { - set_handler(); - __gen_e_acsl_strcpy(src,(char const *)const_str); - test_successful(); - break; - } - case 1: { - signal_eval(0,0,__gen_e_acsl_literal_string_9); - break; - } - case 2: { - signal_eval(1,0,__gen_e_acsl_literal_string_9); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_9); - __gen_e_acsl_exit(3); - } - } - __e_acsl_delete_block((void *)(& tmp_15)); - __e_acsl_delete_block((void *)(& jmp_ctxt_4)); + pid_t pid_4 = __gen_e_acsl_fork(); + if (! pid_4) { + __gen_e_acsl_strcpy(src,(char const *)const_str); + __gen_e_acsl_exit(0); + } + else { + int process_status_4; + __e_acsl_store_block((void *)(& process_status_4),(size_t)4); + __gen_e_acsl_waitpid(pid_4,& process_status_4,0); + signal_eval(process_status_4,0,__gen_e_acsl_literal_string_13); + __e_acsl_delete_block((void *)(& process_status_4)); + } } { - int tmp_17; - __e_acsl_store_block((void *)(& tmp_17),(size_t)4); - sigjmp_buf *jmp_ctxt_5 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_5),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_5)); - __e_acsl_full_init((void *)(& tmp_17)); - tmp_17 = sigsetjmp(*jmp_ctxt_5,1); - switch (tmp_17) { - case 0: - { - set_handler(); - __gen_e_acsl_strcpy(src,(char const *)src); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_10); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_10); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_10); - __gen_e_acsl_exit(3); - } - } - __e_acsl_delete_block((void *)(& tmp_17)); - __e_acsl_delete_block((void *)(& jmp_ctxt_5)); + pid_t pid_5 = __gen_e_acsl_fork(); + if (! pid_5) { + __gen_e_acsl_strcpy(src,(char const *)src); + __gen_e_acsl_exit(0); + } + else { + int process_status_5; + __e_acsl_store_block((void *)(& process_status_5),(size_t)4); + __gen_e_acsl_waitpid(pid_5,& process_status_5,0); + signal_eval(process_status_5,1,__gen_e_acsl_literal_string_14); + __e_acsl_delete_block((void *)(& process_status_5)); + } } { - int tmp_19; - __e_acsl_store_block((void *)(& tmp_19),(size_t)4); - sigjmp_buf *jmp_ctxt_6 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_6),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_6)); - __e_acsl_full_init((void *)(& tmp_19)); - tmp_19 = sigsetjmp(*jmp_ctxt_6,1); - switch (tmp_19) { - case 0: - { - set_handler(); - __gen_e_acsl_strcpy(& dest3[5],(char const *)(dest3)); - test_successful(); - break; - } - case 1: { - signal_eval(0,0,__gen_e_acsl_literal_string_11); - break; - } - case 2: { - signal_eval(1,0,__gen_e_acsl_literal_string_11); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_11); - __gen_e_acsl_exit(3); - } - } - __e_acsl_delete_block((void *)(& tmp_19)); - __e_acsl_delete_block((void *)(& jmp_ctxt_6)); + pid_t pid_6 = __gen_e_acsl_fork(); + if (! pid_6) { + __gen_e_acsl_strcpy(& dest3[5],(char const *)(dest3)); + __gen_e_acsl_exit(0); + } + else { + int process_status_6; + __e_acsl_store_block((void *)(& process_status_6),(size_t)4); + __gen_e_acsl_waitpid(pid_6,& process_status_6,0); + signal_eval(process_status_6,0,__gen_e_acsl_literal_string_15); + __e_acsl_delete_block((void *)(& process_status_6)); + } } { - int tmp_21; - __e_acsl_store_block((void *)(& tmp_21),(size_t)4); - sigjmp_buf *jmp_ctxt_7 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_7),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_7)); - __e_acsl_full_init((void *)(& tmp_21)); - tmp_21 = sigsetjmp(*jmp_ctxt_7,1); - switch (tmp_21) { - case 0: - { - set_handler(); - __gen_e_acsl_strcpy(& dest3[4],(char const *)(dest3)); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_12); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_12); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_12); - __gen_e_acsl_exit(3); - } - } - __e_acsl_delete_block((void *)(& tmp_21)); - __e_acsl_delete_block((void *)(& jmp_ctxt_7)); + pid_t pid_7 = __gen_e_acsl_fork(); + if (! pid_7) { + __gen_e_acsl_strcpy(& dest3[4],(char const *)(dest3)); + __gen_e_acsl_exit(0); + } + else { + int process_status_7; + __e_acsl_store_block((void *)(& process_status_7),(size_t)4); + __gen_e_acsl_waitpid(pid_7,& process_status_7,0); + signal_eval(process_status_7,1,__gen_e_acsl_literal_string_16); + __e_acsl_delete_block((void *)(& process_status_7)); + } } { - int tmp_23; - __e_acsl_store_block((void *)(& tmp_23),(size_t)4); - sigjmp_buf *jmp_ctxt_8 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_8),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_8)); - __e_acsl_full_init((void *)(& tmp_23)); - tmp_23 = sigsetjmp(*jmp_ctxt_8,1); - switch (tmp_23) { - case 0: - { - set_handler(); - __gen_e_acsl_strncpy(dest1,(char const *)src,(unsigned long)5); - test_successful(); - break; - } - case 1: { - signal_eval(0,0,__gen_e_acsl_literal_string_13); - break; - } - case 2: { - signal_eval(1,0,__gen_e_acsl_literal_string_13); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_13); - __gen_e_acsl_exit(3); - } - } - __e_acsl_delete_block((void *)(& tmp_23)); - __e_acsl_delete_block((void *)(& jmp_ctxt_8)); + pid_t pid_8 = __gen_e_acsl_fork(); + if (! pid_8) { + __gen_e_acsl_strncpy(dest1,(char const *)src,(unsigned long)5); + __gen_e_acsl_exit(0); + } + else { + int process_status_8; + __e_acsl_store_block((void *)(& process_status_8),(size_t)4); + __gen_e_acsl_waitpid(pid_8,& process_status_8,0); + signal_eval(process_status_8,0,__gen_e_acsl_literal_string_17); + __e_acsl_delete_block((void *)(& process_status_8)); + } } { - int tmp_25; - __e_acsl_store_block((void *)(& tmp_25),(size_t)4); - sigjmp_buf *jmp_ctxt_9 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_9),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_9)); - __e_acsl_full_init((void *)(& tmp_25)); - tmp_25 = sigsetjmp(*jmp_ctxt_9,1); - switch (tmp_25) { - case 0: - { - set_handler(); - __gen_e_acsl_strncpy(dest1,(char const *)src,(unsigned long)6); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_14); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_14); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_14); - __gen_e_acsl_exit(3); - } - } - __e_acsl_delete_block((void *)(& tmp_25)); - __e_acsl_delete_block((void *)(& jmp_ctxt_9)); + pid_t pid_9 = __gen_e_acsl_fork(); + if (! pid_9) { + __gen_e_acsl_strncpy(dest1,(char const *)src,(unsigned long)6); + __gen_e_acsl_exit(0); + } + else { + int process_status_9; + __e_acsl_store_block((void *)(& process_status_9),(size_t)4); + __gen_e_acsl_waitpid(pid_9,& process_status_9,0); + signal_eval(process_status_9,1,__gen_e_acsl_literal_string_18); + __e_acsl_delete_block((void *)(& process_status_9)); + } } { - int tmp_27; - __e_acsl_store_block((void *)(& tmp_27),(size_t)4); - sigjmp_buf *jmp_ctxt_10 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_10),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_10)); - __e_acsl_full_init((void *)(& tmp_27)); - tmp_27 = sigsetjmp(*jmp_ctxt_10,1); - switch (tmp_27) { - case 0: - { - set_handler(); - __gen_e_acsl_strncpy(unalloc_str,(char const *)src,(unsigned long)5); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_15); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_15); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_15); - __gen_e_acsl_exit(3); - } - } - __e_acsl_delete_block((void *)(& tmp_27)); - __e_acsl_delete_block((void *)(& jmp_ctxt_10)); + pid_t pid_10 = __gen_e_acsl_fork(); + if (! pid_10) { + __gen_e_acsl_strncpy(unalloc_str,(char const *)src,(unsigned long)5); + __gen_e_acsl_exit(0); + } + else { + int process_status_10; + __e_acsl_store_block((void *)(& process_status_10),(size_t)4); + __gen_e_acsl_waitpid(pid_10,& process_status_10,0); + signal_eval(process_status_10,1,__gen_e_acsl_literal_string_19); + __e_acsl_delete_block((void *)(& process_status_10)); + } } { - int tmp_29; - __e_acsl_store_block((void *)(& tmp_29),(size_t)4); - sigjmp_buf *jmp_ctxt_11 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_11),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_11)); - __e_acsl_full_init((void *)(& tmp_29)); - tmp_29 = sigsetjmp(*jmp_ctxt_11,1); - switch (tmp_29) { - case 0: - { - set_handler(); - __gen_e_acsl_strncpy(const_str,(char const *)src,(unsigned long)5); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_16); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_16); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_16); - __gen_e_acsl_exit(3); - } - } - __e_acsl_delete_block((void *)(& tmp_29)); - __e_acsl_delete_block((void *)(& jmp_ctxt_11)); + pid_t pid_11 = __gen_e_acsl_fork(); + if (! pid_11) { + __gen_e_acsl_strncpy(const_str,(char const *)src,(unsigned long)5); + __gen_e_acsl_exit(0); + } + else { + int process_status_11; + __e_acsl_store_block((void *)(& process_status_11),(size_t)4); + __gen_e_acsl_waitpid(pid_11,& process_status_11,0); + signal_eval(process_status_11,1,__gen_e_acsl_literal_string_20); + __e_acsl_delete_block((void *)(& process_status_11)); + } } { - int tmp_31; - __e_acsl_store_block((void *)(& tmp_31),(size_t)4); - sigjmp_buf *jmp_ctxt_12 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_12),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_12)); - __e_acsl_full_init((void *)(& tmp_31)); - tmp_31 = sigsetjmp(*jmp_ctxt_12,1); - switch (tmp_31) { - case 0: - { - set_handler(); - __gen_e_acsl_strncpy(src,(char const *)const_str,(unsigned long)5); - test_successful(); - break; - } - case 1: { - signal_eval(0,0,__gen_e_acsl_literal_string_17); - break; - } - case 2: { - signal_eval(1,0,__gen_e_acsl_literal_string_17); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_17); - __gen_e_acsl_exit(3); - } - } - __e_acsl_delete_block((void *)(& tmp_31)); - __e_acsl_delete_block((void *)(& jmp_ctxt_12)); + pid_t pid_12 = __gen_e_acsl_fork(); + if (! pid_12) { + __gen_e_acsl_strncpy(src,(char const *)const_str,(unsigned long)5); + __gen_e_acsl_exit(0); + } + else { + int process_status_12; + __e_acsl_store_block((void *)(& process_status_12),(size_t)4); + __gen_e_acsl_waitpid(pid_12,& process_status_12,0); + signal_eval(process_status_12,0,__gen_e_acsl_literal_string_21); + __e_acsl_delete_block((void *)(& process_status_12)); + } } { - int tmp_33; - __e_acsl_store_block((void *)(& tmp_33),(size_t)4); - sigjmp_buf *jmp_ctxt_13 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_13),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_13)); - __e_acsl_full_init((void *)(& tmp_33)); - tmp_33 = sigsetjmp(*jmp_ctxt_13,1); - switch (tmp_33) { - case 0: - { - set_handler(); - __gen_e_acsl_strncpy(src,(char const *)src,(unsigned long)5); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_18); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_18); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_18); - __gen_e_acsl_exit(3); - } - } - __e_acsl_delete_block((void *)(& tmp_33)); - __e_acsl_delete_block((void *)(& jmp_ctxt_13)); + pid_t pid_13 = __gen_e_acsl_fork(); + if (! pid_13) { + __gen_e_acsl_strncpy(src,(char const *)src,(unsigned long)5); + __gen_e_acsl_exit(0); + } + else { + int process_status_13; + __e_acsl_store_block((void *)(& process_status_13),(size_t)4); + __gen_e_acsl_waitpid(pid_13,& process_status_13,0); + signal_eval(process_status_13,1,__gen_e_acsl_literal_string_22); + __e_acsl_delete_block((void *)(& process_status_13)); + } } { - int tmp_35; - __e_acsl_store_block((void *)(& tmp_35),(size_t)4); - sigjmp_buf *jmp_ctxt_14 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_14),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_14)); - __e_acsl_full_init((void *)(& tmp_35)); - tmp_35 = sigsetjmp(*jmp_ctxt_14,1); - switch (tmp_35) { - case 0: - { - set_handler(); - __gen_e_acsl_strncpy(& dest3[5],(char const *)(dest3), - (unsigned long)5); - test_successful(); - break; - } - case 1: { - signal_eval(0,0,__gen_e_acsl_literal_string_19); - break; - } - case 2: { - signal_eval(1,0,__gen_e_acsl_literal_string_19); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_19); - __gen_e_acsl_exit(3); - } - } - __e_acsl_delete_block((void *)(& tmp_35)); - __e_acsl_delete_block((void *)(& jmp_ctxt_14)); + pid_t pid_14 = __gen_e_acsl_fork(); + if (! pid_14) { + __gen_e_acsl_strncpy(& dest3[5],(char const *)(dest3),(unsigned long)5); + __gen_e_acsl_exit(0); + } + else { + int process_status_14; + __e_acsl_store_block((void *)(& process_status_14),(size_t)4); + __gen_e_acsl_waitpid(pid_14,& process_status_14,0); + signal_eval(process_status_14,0,__gen_e_acsl_literal_string_23); + __e_acsl_delete_block((void *)(& process_status_14)); + } } { - int tmp_37; - __e_acsl_store_block((void *)(& tmp_37),(size_t)4); - sigjmp_buf *jmp_ctxt_15 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_15),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_15)); - __e_acsl_full_init((void *)(& tmp_37)); - tmp_37 = sigsetjmp(*jmp_ctxt_15,1); - switch (tmp_37) { - case 0: - { - set_handler(); - __gen_e_acsl_strncpy(& dest3[4],(char const *)(dest3), - (unsigned long)5); - test_successful(); - break; - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_20); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_20); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_3,__gen_e_acsl_literal_string_20); - __gen_e_acsl_exit(3); - } - } - __e_acsl_delete_block((void *)(& tmp_37)); - __e_acsl_delete_block((void *)(& jmp_ctxt_15)); + pid_t pid_15 = __gen_e_acsl_fork(); + if (! pid_15) { + __gen_e_acsl_strncpy(& dest3[4],(char const *)(dest3),(unsigned long)5); + __gen_e_acsl_exit(0); + } + else { + int process_status_15; + __e_acsl_store_block((void *)(& process_status_15),(size_t)4); + __gen_e_acsl_waitpid(pid_15,& process_status_15,0); + signal_eval(process_status_15,1,__gen_e_acsl_literal_string_24); + __e_acsl_delete_block((void *)(& process_status_15)); + } } free((void *)src); free((void *)dest1); free((void *)dest2); - __e_acsl_full_init((void *)(& __retres)); __retres = 0; - __e_acsl_delete_block((void *)(& argv)); - __e_acsl_delete_block((void *)(& argc)); - __e_acsl_delete_block((void *)(& __fc_p_strerror)); - __e_acsl_delete_block((void *)(strerror)); - __e_acsl_delete_block((void *)(& __fc_strtok_ptr)); - __e_acsl_delete_block((void *)(& __fc_p_fopen)); - __e_acsl_delete_block((void *)(__fc_fopen)); - __e_acsl_delete_block((void *)(& __fc_rand_max)); - __e_acsl_delete_block((void *)(& _barrier)); __e_acsl_delete_block((void *)(& unalloc_str)); - __e_acsl_delete_block((void *)(& len)); __e_acsl_delete_block((void *)(dest3)); __e_acsl_delete_block((void *)(& dest2)); __e_acsl_delete_block((void *)(& dest1)); __e_acsl_delete_block((void *)(& src)); __e_acsl_delete_block((void *)(& const_str)); __e_acsl_delete_block((void *)(empty_str)); - __e_acsl_delete_block((void *)(& __retres)); __e_acsl_memory_clean(); return __retres; } diff --git a/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strlen.c b/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strlen.c index 7867b6295cb6891ecc6de1aec8adc86cf7f4aaf5..c41b52a79621e44ffd8faabe1a653779c03485f0 100644 --- a/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strlen.c +++ b/src/plugins/e-acsl/tests/builtin/oracle_ci/gen_strlen.c @@ -1,107 +1,369 @@ /* Generated by Frama-C */ -#include "setjmp.h" #include "signal.h" +#include "stddef.h" #include "stdio.h" #include "stdlib.h" #include "string.h" -char *__gen_e_acsl_literal_string_3; -char *__gen_e_acsl_literal_string_2; +#include "sys/select.h" +#include "sys/time.h" +#include "sys/types.h" +#include "sys/wait.h" +#include "unistd.h" +char *__gen_e_acsl_literal_string_8; +char *__gen_e_acsl_literal_string_7; +char *__gen_e_acsl_literal_string_15; +char *__gen_e_acsl_literal_string_14; +char *__gen_e_acsl_literal_string_13; +char *__gen_e_acsl_literal_string_12; char *__gen_e_acsl_literal_string_11; char *__gen_e_acsl_literal_string_10; char *__gen_e_acsl_literal_string_9; -char *__gen_e_acsl_literal_string_8; -char *__gen_e_acsl_literal_string_7; -char *__gen_e_acsl_literal_string_6; -char *__gen_e_acsl_literal_string_4; -char *__gen_e_acsl_literal_string_5; char *__gen_e_acsl_literal_string; +char *__gen_e_acsl_literal_string_2; +char *__gen_e_acsl_literal_string_3; +char *__gen_e_acsl_literal_string_5; +char *__gen_e_acsl_literal_string_4; +char *__gen_e_acsl_literal_string_6; extern int __e_acsl_sound_verdict; +/*@ exits status: \exit_status ≢ 0; + ensures never_terminates: \false; + + assigns \exit_status \from \nothing; + */ +void __gen_e_acsl_abort(void); + +/*@ exits status: \exit_status ≡ \old(status); + ensures never_terminates: \false; + + assigns \exit_status \from status; + */ +void __gen_e_acsl_exit(int status); + +/*@ ensures result_ok_or_error: \result ≡ -1 ∨ \result ≥ 0; + ensures + initialization: stat_loc_init_on_success: + \result ≥ 0 ∧ \old(stat_loc) ≢ \null ⇒ + \initialized(\old(stat_loc)); + assigns \result, *stat_loc; + assigns \result \from (indirect: options); + assigns *stat_loc \from (indirect: options); + + behavior stat_loc_null: + assumes stat_loc_null: stat_loc ≡ \null; + assigns \result; + assigns \result \from \nothing; + + behavior stat_loc_non_null: + assumes stat_loc_non_null: stat_loc ≢ \null; + requires valid_stat_loc: \valid(stat_loc); + */ +pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options); + +/*@ ensures + result_ok_child_or_error: + \result ≡ 0 ∨ \result > 0 ∨ \result ≡ -1; + assigns \result; + assigns \result \from \nothing; + */ +pid_t __gen_e_acsl_fork(void); + +/*@ requires valid_string_s: valid_read_string(s); + ensures acsl_c_equiv: \result ≡ strlen(\old(s)); + assigns \result; + assigns \result \from (indirect: *(s + (0 ..))); + */ +size_t __gen_e_acsl_strlen(char const *s); + +/*@ requires valid_string_s: valid_read_string(s); + assigns \result; + assigns \result + \from (indirect: *(s + (0 .. strlen{Old}(s)))), + (indirect: __fc_heap_status); + allocates \result; + + behavior allocation: + assumes can_allocate: is_allocable(strlen(s)); + ensures allocation: \fresh{Old, Here}(\result,strlen(\old(s))); + ensures + result_valid_string_and_same_contents: + valid_string(\result) ∧ strcmp(\result, \old(s)) ≡ 0; + assigns __fc_heap_status, \result; + assigns __fc_heap_status \from (indirect: s), __fc_heap_status; + assigns \result + \from (indirect: *(s + (0 .. strlen{Old}(s)))), + (indirect: __fc_heap_status); + + behavior no_allocation: + assumes cannot_allocate: ¬is_allocable(strlen(s)); + ensures result_null: \result ≡ \null; + assigns \result; + assigns \result \from \nothing; + allocates \nothing; + */ +char *__gen_e_acsl_strdup(char const *s); + +/*@ requires valid_string_s: valid_read_string(s); + assigns \result; + assigns \result + \from (indirect: *(s + (0 .. strlen{Old}(s)))), + (indirect: __fc_heap_status); + allocates \result; + + behavior allocation: + assumes can_allocate: is_allocable(strlen(s)); + ensures allocation: \fresh{Old, Here}(\result,strlen(\old(s))); + ensures + result_valid_string_and_same_contents: + valid_string(\result) ∧ strcmp(\result, \old(s)) ≡ 0; + assigns __fc_heap_status, \result; + assigns __fc_heap_status \from (indirect: s), __fc_heap_status; + assigns \result + \from (indirect: *(s + (0 .. strlen{Old}(s)))), + (indirect: __fc_heap_status); + + behavior no_allocation: + assumes cannot_allocate: ¬is_allocable(strlen(s)); + ensures result_null: \result ≡ \null; + assigns \result; + assigns \result \from \nothing; + allocates \nothing; + */ +char *__gen_e_acsl_strdup(char const *s) +{ + __e_acsl_contract_t *__gen_e_acsl_contract; + char *__retres; + __gen_e_acsl_contract = __e_acsl_contract_init((size_t)2); + __retres = strdup(s); + { + int __gen_e_acsl_assumes_value; + __gen_e_acsl_assumes_value = __e_acsl_contract_get_behavior_assumes + ((__e_acsl_contract_t const *)__gen_e_acsl_contract,(size_t)1); + if (__gen_e_acsl_assumes_value) __e_acsl_assert(__retres == (char *)0,1, + "Postcondition","strdup", + "no_allocation: result_null: \\result == \\null", + "FRAMAC_SHARE/libc/string.h", + 485); + __e_acsl_contract_clean(__gen_e_acsl_contract); + return __retres; + } +} + +/*@ requires valid_string_s: valid_read_string(s); + ensures acsl_c_equiv: \result ≡ strlen(\old(s)); + assigns \result; + assigns \result \from (indirect: *(s + (0 ..))); + */ +size_t __gen_e_acsl_strlen(char const *s) +{ + size_t __retres; + __retres = __e_acsl_builtin_strlen(s); + return __retres; +} + +/*@ ensures + result_ok_child_or_error: + \result ≡ 0 ∨ \result > 0 ∨ \result ≡ -1; + assigns \result; + assigns \result \from \nothing; + */ +pid_t __gen_e_acsl_fork(void) +{ + pid_t __retres; + __retres = fork(); + { + int __gen_e_acsl_or; + int __gen_e_acsl_or_2; + if (__retres == 0) __gen_e_acsl_or = 1; + else __gen_e_acsl_or = __retres > 0; + if (__gen_e_acsl_or) __gen_e_acsl_or_2 = 1; + else __gen_e_acsl_or_2 = __retres == -1; + __e_acsl_assert(__gen_e_acsl_or_2,1,"Postcondition","fork", + "result_ok_child_or_error: \\result == 0 || \\result > 0 || \\result == -1", + "FRAMAC_SHARE/libc/unistd.h",859); + return __retres; + } +} + +/*@ ensures result_ok_or_error: \result ≡ -1 ∨ \result ≥ 0; + ensures + initialization: stat_loc_init_on_success: + \result ≥ 0 ∧ \old(stat_loc) ≢ \null ⇒ + \initialized(\old(stat_loc)); + assigns \result, *stat_loc; + assigns \result \from (indirect: options); + assigns *stat_loc \from (indirect: options); + + behavior stat_loc_null: + assumes stat_loc_null: stat_loc ≡ \null; + assigns \result; + assigns \result \from \nothing; + + behavior stat_loc_non_null: + assumes stat_loc_non_null: stat_loc ≢ \null; + requires valid_stat_loc: \valid(stat_loc); + */ +pid_t __gen_e_acsl_waitpid(pid_t pid, int *stat_loc, int options) +{ + int *__gen_e_acsl_at_2; + int *__gen_e_acsl_at; + __e_acsl_contract_t *__gen_e_acsl_contract; + pid_t __retres; + { + int __gen_e_acsl_assumes_value; + __e_acsl_store_block((void *)(& stat_loc),(size_t)8); + __gen_e_acsl_contract = __e_acsl_contract_init((size_t)2); + __e_acsl_contract_set_behavior_assumes(__gen_e_acsl_contract,(size_t)0, + stat_loc == (int *)0); + __e_acsl_contract_set_behavior_assumes(__gen_e_acsl_contract,(size_t)1, + stat_loc != (int *)0); + __gen_e_acsl_assumes_value = __e_acsl_contract_get_behavior_assumes + ((__e_acsl_contract_t const *)__gen_e_acsl_contract,(size_t)1); + if (__gen_e_acsl_assumes_value) { + int __gen_e_acsl_valid; + __gen_e_acsl_valid = __e_acsl_valid((void *)stat_loc,sizeof(int), + (void *)stat_loc, + (void *)(& stat_loc)); + __e_acsl_assert(__gen_e_acsl_valid,1,"Precondition","waitpid", + "stat_loc_non_null: valid_stat_loc: \\valid(stat_loc)", + "FRAMAC_SHARE/libc/sys/wait.h",92); + } + } + __gen_e_acsl_at_2 = stat_loc; + __gen_e_acsl_at = stat_loc; + __retres = waitpid(pid,stat_loc,options); + { + int __gen_e_acsl_or; + int __gen_e_acsl_and; + int __gen_e_acsl_implies; + if (__retres == -1) __gen_e_acsl_or = 1; + else __gen_e_acsl_or = __retres >= 0; + __e_acsl_assert(__gen_e_acsl_or,1,"Postcondition","waitpid", + "result_ok_or_error: \\result == -1 || \\result >= 0", + "FRAMAC_SHARE/libc/sys/wait.h",84); + if (__retres >= 0) __gen_e_acsl_and = __gen_e_acsl_at != (int *)0; + else __gen_e_acsl_and = 0; + if (! __gen_e_acsl_and) __gen_e_acsl_implies = 1; + else { + int __gen_e_acsl_initialized; + __gen_e_acsl_initialized = __e_acsl_initialized((void *)__gen_e_acsl_at_2, + sizeof(int)); + __gen_e_acsl_implies = __gen_e_acsl_initialized; + } + __e_acsl_assert(__gen_e_acsl_implies,1,"Postcondition","waitpid", + "initialization: stat_loc_init_on_success:\n \\result >= 0 && \\old(stat_loc) != \\null ==> \\initialized(\\old(stat_loc))", + "FRAMAC_SHARE/libc/sys/wait.h",86); + __e_acsl_contract_clean(__gen_e_acsl_contract); + __e_acsl_delete_block((void *)(& stat_loc)); + return __retres; + } +} + +/*@ exits status: \exit_status ≡ \old(status); + ensures never_terminates: \false; + + assigns \exit_status \from status; + */ +void __gen_e_acsl_exit(int status) +{ + exit(status); + __e_acsl_assert(0,1,"Postcondition","exit","never_terminates: \\false", + "FRAMAC_SHARE/libc/stdlib.h",473); + return; +} + +/*@ exits status: \exit_status ≢ 0; + ensures never_terminates: \false; + + assigns \exit_status \from \nothing; + */ +void __gen_e_acsl_abort(void) +{ + abort(); + __e_acsl_assert(0,1,"Postcondition","abort","never_terminates: \\false", + "FRAMAC_SHARE/libc/stdlib.h",460); + return; +} + void __e_acsl_globals_init(void) { static char __e_acsl_already_run = 0; if (! __e_acsl_already_run) { __e_acsl_already_run = 1; - __gen_e_acsl_literal_string_3 = "the hog"; - __e_acsl_store_block((void *)__gen_e_acsl_literal_string_3, + __gen_e_acsl_literal_string_8 = "the hog"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_8, sizeof("the hog")); - __e_acsl_full_init((void *)__gen_e_acsl_literal_string_3); - __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_3); - __gen_e_acsl_literal_string_2 = "the cat"; - __e_acsl_store_block((void *)__gen_e_acsl_literal_string_2, + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_8); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_8); + __gen_e_acsl_literal_string_7 = "the cat"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_7, sizeof("the cat")); - __e_acsl_full_init((void *)__gen_e_acsl_literal_string_2); - __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_2); - __gen_e_acsl_literal_string_11 = "tests/builtin/strlen.c:28"; - __e_acsl_store_block((void *)__gen_e_acsl_literal_string_11, + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_7); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_7); + __gen_e_acsl_literal_string_15 = "tests/builtin/strlen.c:28"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_15, sizeof("tests/builtin/strlen.c:28")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_15); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_15); + __gen_e_acsl_literal_string_14 = "tests/builtin/strlen.c:26"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_14, + sizeof("tests/builtin/strlen.c:26")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_14); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_14); + __gen_e_acsl_literal_string_13 = "tests/builtin/strlen.c:25"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_13, + sizeof("tests/builtin/strlen.c:25")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_13); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_13); + __gen_e_acsl_literal_string_12 = "tests/builtin/strlen.c:21"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_12, + sizeof("tests/builtin/strlen.c:21")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_12); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_12); + __gen_e_acsl_literal_string_11 = "tests/builtin/strlen.c:20"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_11, + sizeof("tests/builtin/strlen.c:20")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_11); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_11); - __gen_e_acsl_literal_string_10 = "tests/builtin/strlen.c:26"; + __gen_e_acsl_literal_string_10 = "tests/builtin/strlen.c:19"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_10, - sizeof("tests/builtin/strlen.c:26")); + sizeof("tests/builtin/strlen.c:19")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_10); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_10); - __gen_e_acsl_literal_string_9 = "tests/builtin/strlen.c:25"; + __gen_e_acsl_literal_string_9 = "tests/builtin/strlen.c:18"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_9, - sizeof("tests/builtin/strlen.c:25")); + sizeof("tests/builtin/strlen.c:18")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_9); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_9); - __gen_e_acsl_literal_string_8 = "tests/builtin/strlen.c:21"; - __e_acsl_store_block((void *)__gen_e_acsl_literal_string_8, - sizeof("tests/builtin/strlen.c:21")); - __e_acsl_full_init((void *)__gen_e_acsl_literal_string_8); - __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_8); - __gen_e_acsl_literal_string_7 = "tests/builtin/strlen.c:20"; - __e_acsl_store_block((void *)__gen_e_acsl_literal_string_7, - sizeof("tests/builtin/strlen.c:20")); - __e_acsl_full_init((void *)__gen_e_acsl_literal_string_7); - __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_7); - __gen_e_acsl_literal_string_6 = "tests/builtin/strlen.c:19"; - __e_acsl_store_block((void *)__gen_e_acsl_literal_string_6, - sizeof("tests/builtin/strlen.c:19")); - __e_acsl_full_init((void *)__gen_e_acsl_literal_string_6); - __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_6); - __gen_e_acsl_literal_string_4 = "tests/builtin/strlen.c:18"; - __e_acsl_store_block((void *)__gen_e_acsl_literal_string_4, - sizeof("tests/builtin/strlen.c:18")); - __e_acsl_full_init((void *)__gen_e_acsl_literal_string_4); - __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_4); - __gen_e_acsl_literal_string_5 = "FAIL: Unexpected value return from test at %s\n"; + __gen_e_acsl_literal_string = "TEST %d: "; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string, + sizeof("TEST %d: ")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string); + __gen_e_acsl_literal_string_2 = "OK: Expected signal at %s\n"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_2, + sizeof("OK: Expected signal at %s\n")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_2); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_2); + __gen_e_acsl_literal_string_3 = "OK: Expected execution at %s\n"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_3, + sizeof("OK: Expected execution at %s\n")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_3); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_3); + __gen_e_acsl_literal_string_5 = "FAIL: Unexpected signal at %s\n"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_5, - sizeof("FAIL: Unexpected value return from test at %s\n")); + sizeof("FAIL: Unexpected signal at %s\n")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_5); __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_5); - __gen_e_acsl_literal_string = ""; - __e_acsl_store_block((void *)__gen_e_acsl_literal_string,sizeof("")); - __e_acsl_full_init((void *)__gen_e_acsl_literal_string); - __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string); - __e_acsl_store_block((void *)(& __gen_e_acsl_strdup),(size_t)1); - __e_acsl_full_init((void *)(& __gen_e_acsl_strdup)); - __e_acsl_store_block((void *)(& __gen_e_acsl_strlen),(size_t)1); - __e_acsl_full_init((void *)(& __gen_e_acsl_strlen)); - __e_acsl_store_block((void *)(& __gen_e_acsl_exit),(size_t)1); - __e_acsl_full_init((void *)(& __gen_e_acsl_exit)); - __e_acsl_store_block((void *)(& __gen_e_acsl_abort),(size_t)1); - __e_acsl_full_init((void *)(& __gen_e_acsl_abort)); - __e_acsl_store_block((void *)(& __fc_p_strerror),(size_t)8); - __e_acsl_full_init((void *)(& __fc_p_strerror)); - __e_acsl_store_block((void *)(strerror),(size_t)64); - __e_acsl_full_init((void *)(& strerror)); - __e_acsl_store_block((void *)(& __fc_strtok_ptr),(size_t)8); - __e_acsl_full_init((void *)(& __fc_strtok_ptr)); - __e_acsl_store_block((void *)(& __fc_p_fopen),(size_t)8); - __e_acsl_full_init((void *)(& __fc_p_fopen)); - __e_acsl_store_block((void *)(__fc_fopen),(size_t)128); - __e_acsl_full_init((void *)(& __fc_fopen)); - __e_acsl_store_block((void *)(& __fc_p_random48_counter),(size_t)8); - __e_acsl_full_init((void *)(& __fc_p_random48_counter)); - __e_acsl_store_block((void *)(random48_counter),(size_t)6); - __e_acsl_full_init((void *)(& random48_counter)); - __e_acsl_store_block((void *)(& __fc_random48_init),(size_t)4); - __e_acsl_full_init((void *)(& __fc_random48_init)); - __e_acsl_store_block((void *)(& __fc_rand_max),(size_t)8); - __e_acsl_full_init((void *)(& __fc_rand_max)); + __gen_e_acsl_literal_string_4 = "FAIL: Unexpected execution at %s\n"; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_4, + sizeof("FAIL: Unexpected execution at %s\n")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_4); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_4); + __gen_e_acsl_literal_string_6 = ""; + __e_acsl_store_block((void *)__gen_e_acsl_literal_string_6,sizeof("")); + __e_acsl_full_init((void *)__gen_e_acsl_literal_string_6); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_6); } return; } @@ -112,14 +374,8 @@ int main(int argc, char const **argv) int len; __e_acsl_memory_init(& argc,(char ***)(& argv),(size_t)8); __e_acsl_globals_init(); - __e_acsl_store_block((void *)(& len),(size_t)4); - __e_acsl_store_block((void *)(& __retres),(size_t)4); - char *empty_str = (char *)__gen_e_acsl_literal_string; - __e_acsl_store_block((void *)(& empty_str),(size_t)8); - __e_acsl_full_init((void *)(& empty_str)); - char *heap_str = __gen_e_acsl_strdup(__gen_e_acsl_literal_string_2); - __e_acsl_store_block((void *)(& heap_str),(size_t)8); - __e_acsl_full_init((void *)(& heap_str)); + char *empty_str = (char *)__gen_e_acsl_literal_string_6; + char *heap_str = __gen_e_acsl_strdup(__gen_e_acsl_literal_string_7); char stack_str[8] = {(char)'t', (char)'h', @@ -129,323 +385,130 @@ int main(int argc, char const **argv) (char)'o', (char)'g', (char)'\000'}; - __e_acsl_store_block((void *)(stack_str),(size_t)8); - __e_acsl_full_init((void *)(& stack_str)); - char *const_str = (char *)__gen_e_acsl_literal_string_3; - __e_acsl_store_block((void *)(& const_str),(size_t)8); - __e_acsl_full_init((void *)(& const_str)); + char *const_str = (char *)__gen_e_acsl_literal_string_8; { - int tmp_1; - __e_acsl_store_block((void *)(& tmp_1),(size_t)4); - sigjmp_buf *jmp_ctxt = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt)); - __e_acsl_full_init((void *)(& tmp_1)); - /*@ assert Eva: mem_access: \valid_read(jmp_ctxt); */ - tmp_1 = sigsetjmp(*jmp_ctxt,1); - switch (tmp_1) { - case 0: - { - size_t tmp_2; - __e_acsl_store_block((void *)(& tmp_2),(size_t)8); - set_handler(); - __e_acsl_full_init((void *)(& tmp_2)); - tmp_2 = __gen_e_acsl_strlen((char const *)empty_str); - __e_acsl_full_init((void *)(& len)); - len = tmp_2 != (size_t)0; - if (len) __gen_e_acsl_abort(); - test_successful(); - __e_acsl_delete_block((void *)(& tmp_2)); - break; - __e_acsl_delete_block((void *)(& tmp_2)); - } - case 1: { - signal_eval(0,0,__gen_e_acsl_literal_string_4); - break; - } - case 2: { - signal_eval(1,0,__gen_e_acsl_literal_string_4); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_5,__gen_e_acsl_literal_string_4); - __gen_e_acsl_exit(3); - } + pid_t pid = __gen_e_acsl_fork(); + if (! pid) { + size_t tmp_1; + tmp_1 = __gen_e_acsl_strlen((char const *)empty_str); + len = tmp_1 != (size_t)0; + if (len) __gen_e_acsl_abort(); + __gen_e_acsl_exit(0); + } + else { + int process_status; + __e_acsl_store_block((void *)(& process_status),(size_t)4); + __gen_e_acsl_waitpid(pid,& process_status,0); + signal_eval(process_status,0,__gen_e_acsl_literal_string_9); + __e_acsl_delete_block((void *)(& process_status)); } - __e_acsl_delete_block((void *)(& tmp_1)); - __e_acsl_delete_block((void *)(& jmp_ctxt)); } { - int tmp_4; - __e_acsl_store_block((void *)(& tmp_4),(size_t)4); - sigjmp_buf *jmp_ctxt_0 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_0),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_0)); - __e_acsl_full_init((void *)(& tmp_4)); - tmp_4 = sigsetjmp(*jmp_ctxt_0,1); - switch (tmp_4) { - case 0: - { - size_t tmp_5; - __e_acsl_store_block((void *)(& tmp_5),(size_t)8); - set_handler(); - __e_acsl_full_init((void *)(& tmp_5)); - tmp_5 = __gen_e_acsl_strlen((char const *)heap_str); - __e_acsl_full_init((void *)(& len)); - len = tmp_5 != (size_t)7; - if (len) __gen_e_acsl_abort(); - test_successful(); - __e_acsl_delete_block((void *)(& tmp_5)); - break; - __e_acsl_delete_block((void *)(& tmp_5)); - } - case 1: { - signal_eval(0,0,__gen_e_acsl_literal_string_6); - break; - } - case 2: { - signal_eval(1,0,__gen_e_acsl_literal_string_6); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_5,__gen_e_acsl_literal_string_6); - __gen_e_acsl_exit(3); - } + pid_t pid_0 = __gen_e_acsl_fork(); + if (! pid_0) { + size_t tmp_3; + tmp_3 = __gen_e_acsl_strlen((char const *)heap_str); + len = tmp_3 != (size_t)7; + if (len) __gen_e_acsl_abort(); + __gen_e_acsl_exit(0); + } + else { + int process_status_0; + __e_acsl_store_block((void *)(& process_status_0),(size_t)4); + __gen_e_acsl_waitpid(pid_0,& process_status_0,0); + signal_eval(process_status_0,0,__gen_e_acsl_literal_string_10); + __e_acsl_delete_block((void *)(& process_status_0)); } - __e_acsl_delete_block((void *)(& tmp_4)); - __e_acsl_delete_block((void *)(& jmp_ctxt_0)); } { - int tmp_7; - __e_acsl_store_block((void *)(& tmp_7),(size_t)4); - sigjmp_buf *jmp_ctxt_1 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_1),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_1)); - __e_acsl_full_init((void *)(& tmp_7)); - tmp_7 = sigsetjmp(*jmp_ctxt_1,1); - switch (tmp_7) { - case 0: - { - size_t tmp_8; - __e_acsl_store_block((void *)(& tmp_8),(size_t)8); - set_handler(); - __e_acsl_full_init((void *)(& tmp_8)); - tmp_8 = __gen_e_acsl_strlen((char const *)(stack_str)); - __e_acsl_full_init((void *)(& len)); - len = tmp_8 != (size_t)7; - if (len) __gen_e_acsl_abort(); - test_successful(); - __e_acsl_delete_block((void *)(& tmp_8)); - break; - __e_acsl_delete_block((void *)(& tmp_8)); - } - case 1: { - signal_eval(0,0,__gen_e_acsl_literal_string_7); - break; - } - case 2: { - signal_eval(1,0,__gen_e_acsl_literal_string_7); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_5,__gen_e_acsl_literal_string_7); - __gen_e_acsl_exit(3); - } + pid_t pid_1 = __gen_e_acsl_fork(); + if (! pid_1) { + size_t tmp_5; + tmp_5 = __gen_e_acsl_strlen((char const *)(stack_str)); + len = tmp_5 != (size_t)7; + if (len) __gen_e_acsl_abort(); + __gen_e_acsl_exit(0); + } + else { + int process_status_1; + __e_acsl_store_block((void *)(& process_status_1),(size_t)4); + __gen_e_acsl_waitpid(pid_1,& process_status_1,0); + signal_eval(process_status_1,0,__gen_e_acsl_literal_string_11); + __e_acsl_delete_block((void *)(& process_status_1)); } - __e_acsl_delete_block((void *)(& tmp_7)); - __e_acsl_delete_block((void *)(& jmp_ctxt_1)); } { - int tmp_10; - __e_acsl_store_block((void *)(& tmp_10),(size_t)4); - sigjmp_buf *jmp_ctxt_2 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_2),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_2)); - __e_acsl_full_init((void *)(& tmp_10)); - tmp_10 = sigsetjmp(*jmp_ctxt_2,1); - switch (tmp_10) { - case 0: - { - size_t tmp_11; - __e_acsl_store_block((void *)(& tmp_11),(size_t)8); - set_handler(); - __e_acsl_full_init((void *)(& tmp_11)); - tmp_11 = __gen_e_acsl_strlen((char const *)const_str); - __e_acsl_full_init((void *)(& len)); - len = tmp_11 != (size_t)7; - if (len) __gen_e_acsl_abort(); - test_successful(); - __e_acsl_delete_block((void *)(& tmp_11)); - break; - __e_acsl_delete_block((void *)(& tmp_11)); - } - case 1: { - signal_eval(0,0,__gen_e_acsl_literal_string_8); - break; - } - case 2: { - signal_eval(1,0,__gen_e_acsl_literal_string_8); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_5,__gen_e_acsl_literal_string_8); - __gen_e_acsl_exit(3); - } + pid_t pid_2 = __gen_e_acsl_fork(); + if (! pid_2) { + size_t tmp_7; + tmp_7 = __gen_e_acsl_strlen((char const *)const_str); + len = tmp_7 != (size_t)7; + if (len) __gen_e_acsl_abort(); + __gen_e_acsl_exit(0); + } + else { + int process_status_2; + __e_acsl_store_block((void *)(& process_status_2),(size_t)4); + __gen_e_acsl_waitpid(pid_2,& process_status_2,0); + signal_eval(process_status_2,0,__gen_e_acsl_literal_string_12); + __e_acsl_delete_block((void *)(& process_status_2)); } - __e_acsl_delete_block((void *)(& tmp_10)); - __e_acsl_delete_block((void *)(& jmp_ctxt_2)); } - __e_acsl_initialize((void *)(heap_str + 7),sizeof(char)); *(heap_str + 7) = (char)'a'; - __e_acsl_initialize((void *)(& stack_str[7]),sizeof(char)); stack_str[7] = (char)'a'; { - int tmp_13; - __e_acsl_store_block((void *)(& tmp_13),(size_t)4); - sigjmp_buf *jmp_ctxt_3 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_3),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_3)); - __e_acsl_full_init((void *)(& tmp_13)); - tmp_13 = sigsetjmp(*jmp_ctxt_3,1); - switch (tmp_13) { - case 0: - { - size_t tmp_14; - __e_acsl_store_block((void *)(& tmp_14),(size_t)8); - set_handler(); - __e_acsl_full_init((void *)(& tmp_14)); - tmp_14 = __gen_e_acsl_strlen((char const *)heap_str); - __e_acsl_full_init((void *)(& len)); - len = tmp_14 != (size_t)7; - if (len) __gen_e_acsl_abort(); - test_successful(); - __e_acsl_delete_block((void *)(& tmp_14)); - break; - __e_acsl_delete_block((void *)(& tmp_14)); - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_9); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_9); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_5,__gen_e_acsl_literal_string_9); - __gen_e_acsl_exit(3); - } + pid_t pid_3 = __gen_e_acsl_fork(); + if (! pid_3) { + size_t tmp_9; + tmp_9 = __gen_e_acsl_strlen((char const *)heap_str); + len = tmp_9 != (size_t)7; + if (len) __gen_e_acsl_abort(); + __gen_e_acsl_exit(0); + } + else { + int process_status_3; + __e_acsl_store_block((void *)(& process_status_3),(size_t)4); + __gen_e_acsl_waitpid(pid_3,& process_status_3,0); + signal_eval(process_status_3,1,__gen_e_acsl_literal_string_13); + __e_acsl_delete_block((void *)(& process_status_3)); } - __e_acsl_delete_block((void *)(& tmp_13)); - __e_acsl_delete_block((void *)(& jmp_ctxt_3)); } { - int tmp_16; - __e_acsl_store_block((void *)(& tmp_16),(size_t)4); - sigjmp_buf *jmp_ctxt_4 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_4),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_4)); - __e_acsl_full_init((void *)(& tmp_16)); - tmp_16 = sigsetjmp(*jmp_ctxt_4,1); - switch (tmp_16) { - case 0: - { - size_t tmp_17; - __e_acsl_store_block((void *)(& tmp_17),(size_t)8); - set_handler(); - __e_acsl_full_init((void *)(& tmp_17)); - tmp_17 = __gen_e_acsl_strlen((char const *)(stack_str)); - __e_acsl_full_init((void *)(& len)); - len = tmp_17 != (size_t)7; - if (len) __gen_e_acsl_abort(); - test_successful(); - __e_acsl_delete_block((void *)(& tmp_17)); - break; - __e_acsl_delete_block((void *)(& tmp_17)); - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_10); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_10); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_5,__gen_e_acsl_literal_string_10); - __gen_e_acsl_exit(3); - } + pid_t pid_4 = __gen_e_acsl_fork(); + if (! pid_4) { + size_t tmp_11; + tmp_11 = __gen_e_acsl_strlen((char const *)(stack_str)); + len = tmp_11 != (size_t)7; + if (len) __gen_e_acsl_abort(); + __gen_e_acsl_exit(0); + } + else { + int process_status_4; + __e_acsl_store_block((void *)(& process_status_4),(size_t)4); + __gen_e_acsl_waitpid(pid_4,& process_status_4,0); + signal_eval(process_status_4,1,__gen_e_acsl_literal_string_14); + __e_acsl_delete_block((void *)(& process_status_4)); } - __e_acsl_delete_block((void *)(& tmp_16)); - __e_acsl_delete_block((void *)(& jmp_ctxt_4)); } free((void *)heap_str); { - int tmp_19; - __e_acsl_store_block((void *)(& tmp_19),(size_t)4); - sigjmp_buf *jmp_ctxt_5 = get_jmp_ctxt(); - __e_acsl_store_block((void *)(& jmp_ctxt_5),(size_t)8); - __e_acsl_full_init((void *)(& jmp_ctxt_5)); - __e_acsl_full_init((void *)(& tmp_19)); - tmp_19 = sigsetjmp(*jmp_ctxt_5,1); - switch (tmp_19) { - case 0: - { - size_t tmp_20; - __e_acsl_store_block((void *)(& tmp_20),(size_t)8); - set_handler(); - __e_acsl_full_init((void *)(& tmp_20)); - tmp_20 = __gen_e_acsl_strlen((char const *)heap_str); - __e_acsl_full_init((void *)(& len)); - len = tmp_20 != (size_t)7; - if (len) __gen_e_acsl_abort(); - test_successful(); - __e_acsl_delete_block((void *)(& tmp_20)); - break; - __e_acsl_delete_block((void *)(& tmp_20)); - } - case 1: { - signal_eval(0,1,__gen_e_acsl_literal_string_11); - break; - } - case 2: { - signal_eval(1,1,__gen_e_acsl_literal_string_11); - break; - } - default: - { - printf(__gen_e_acsl_literal_string_5,__gen_e_acsl_literal_string_11); - __gen_e_acsl_exit(3); - } + pid_t pid_5 = __gen_e_acsl_fork(); + if (! pid_5) { + size_t tmp_13; + tmp_13 = __gen_e_acsl_strlen((char const *)heap_str); + len = tmp_13 != (size_t)7; + if (len) __gen_e_acsl_abort(); + __gen_e_acsl_exit(0); + } + else { + int process_status_5; + __e_acsl_store_block((void *)(& process_status_5),(size_t)4); + __gen_e_acsl_waitpid(pid_5,& process_status_5,0); + signal_eval(process_status_5,1,__gen_e_acsl_literal_string_15); + __e_acsl_delete_block((void *)(& process_status_5)); } - __e_acsl_delete_block((void *)(& tmp_19)); - __e_acsl_delete_block((void *)(& jmp_ctxt_5)); } - __e_acsl_full_init((void *)(& __retres)); __retres = 0; - __e_acsl_delete_block((void *)(& argv)); - __e_acsl_delete_block((void *)(& argc)); - __e_acsl_delete_block((void *)(& __fc_p_strerror)); - __e_acsl_delete_block((void *)(strerror)); - __e_acsl_delete_block((void *)(& __fc_strtok_ptr)); - __e_acsl_delete_block((void *)(& __fc_p_fopen)); - __e_acsl_delete_block((void *)(__fc_fopen)); - __e_acsl_delete_block((void *)(& __fc_p_random48_counter)); - __e_acsl_delete_block((void *)(random48_counter)); - __e_acsl_delete_block((void *)(& __fc_random48_init)); - __e_acsl_delete_block((void *)(& __fc_rand_max)); - __e_acsl_delete_block((void *)(& const_str)); - __e_acsl_delete_block((void *)(stack_str)); - __e_acsl_delete_block((void *)(& heap_str)); - __e_acsl_delete_block((void *)(& empty_str)); - __e_acsl_delete_block((void *)(& len)); - __e_acsl_delete_block((void *)(& __retres)); __e_acsl_memory_clean(); return __retres; } diff --git a/src/plugins/e-acsl/tests/builtin/oracle_ci/strcat.res.oracle b/src/plugins/e-acsl/tests/builtin/oracle_ci/strcat.res.oracle index db06f9cb2ec734289a0ff74f65f844fded8e2b94..c671cb08c98861ff4f19e9bb3975242b6eadd4c7 100644 --- a/src/plugins/e-acsl/tests/builtin/oracle_ci/strcat.res.oracle +++ b/src/plugins/e-acsl/tests/builtin/oracle_ci/strcat.res.oracle @@ -2,112 +2,105 @@ [e-acsl] Warning: annotating undefined function `exit': the generated program may miss memory instrumentation if there are memory-related annotations. +[e-acsl] Warning: annotating undefined function `waitpid': + the generated program may miss memory instrumentation + if there are memory-related annotations. +[e-acsl] Warning: annotating undefined function `fork': + the generated program may miss memory instrumentation + if there are memory-related annotations. [e-acsl] Warning: annotating undefined function `strcat': the generated program may miss memory instrumentation if there are memory-related annotations. [e-acsl] Warning: annotating undefined function `strncat': the generated program may miss memory instrumentation if there are memory-related annotations. -[kernel:annot:missing-spec] FRAMAC_SHARE/libc/stdio.h:169: Warning: - Neither code nor specification for function printf, generating default assigns from the prototype -[kernel:annot:missing-spec] FRAMAC_SHARE/libc/setjmp.h:47: Warning: - Neither code nor specification for function sigsetjmp, generating default assigns from the prototype -[kernel:annot:missing-spec] tests/builtin/signalled.h:14: Warning: - Neither code nor specification for function signal_eval, generating default assigns from the prototype -[kernel:annot:missing-spec] tests/builtin/signalled.h:18: Warning: - Neither code nor specification for function get_jmp_ctxt, generating default assigns from the prototype -[kernel:annot:missing-spec] tests/builtin/signalled.h:20: Warning: - Neither code nor specification for function set_handler, generating default assigns from the prototype -[kernel:annot:missing-spec] tests/builtin/signalled.h:22: Warning: - Neither code nor specification for function test_successful, generating default assigns from the prototype -[e-acsl] FRAMAC_SHARE/libc/string.h:421: Warning: - E-ACSL construct `logic function application' is not yet supported. - Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:422: Warning: - E-ACSL construct `logic function application' is not yet supported. +[e-acsl] FRAMAC_SHARE/libc/string.h:432: Warning: + E-ACSL construct `logic functions performing read accesses' + is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/string.h:440: Warning: + E-ACSL construct `logic functions performing read accesses' + is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/string.h:426: Warning: + E-ACSL construct `logic functions with labels' is not yet supported. Ignoring annotation. [e-acsl] FRAMAC_SHARE/libc/string.h:427: Warning: - E-ACSL construct `logic function application' is not yet supported. + E-ACSL construct `logic functions with labels' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:435: Warning: - E-ACSL construct `logic function application' is not yet supported. +[e-acsl] FRAMAC_SHARE/libc/string.h:433: Warning: + E-ACSL construct `logic functions performing read accesses' + is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:435: Warning: +[e-acsl] FRAMAC_SHARE/libc/string.h:441: Warning: + E-ACSL construct `logic functions performing read accesses' + is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/string.h:425: Warning: + Some assumes clauses could not be translated. + Ignoring complete and disjoint behaviors annotations. +[e-acsl] FRAMAC_SHARE/libc/string.h:425: Warning: E-ACSL construct `assigns clause in behavior' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:427: Warning: +[e-acsl] FRAMAC_SHARE/libc/string.h:430: Warning: E-ACSL construct `assigns clause in behavior' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:425: Warning: +[e-acsl] FRAMAC_SHARE/libc/string.h:437: Warning: + E-ACSL construct `logic functions performing read accesses' + is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/string.h:437: Warning: E-ACSL construct `assigns clause in behavior' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:406: Warning: - E-ACSL construct `logic function application' is not yet supported. +[e-acsl] FRAMAC_SHARE/libc/string.h:445: Warning: + E-ACSL construct `logic functions performing read accesses' + is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:407: Warning: - E-ACSL construct `logic function application' is not yet supported. +[e-acsl] FRAMAC_SHARE/libc/string.h:411: Warning: + E-ACSL construct `logic functions with labels' is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/string.h:412: Warning: + E-ACSL construct `logic functions with labels' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:408: Warning: - E-ACSL construct `logic function returning an integer' is not yet supported. +[e-acsl] FRAMAC_SHARE/libc/string.h:413: Warning: + E-ACSL construct `logic functions performing read accesses' + is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:408: Warning: +[e-acsl] FRAMAC_SHARE/libc/string.h:410: Warning: E-ACSL construct `assigns clause in behavior' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:411: Warning: - E-ACSL construct `logic function returning an integer' is not yet supported. +[e-acsl] FRAMAC_SHARE/libc/string.h:416: Warning: + E-ACSL construct `logic functions performing read accesses' + is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:414: Warning: - E-ACSL construct `logic function returning an integer' is not yet supported. +[e-acsl] FRAMAC_SHARE/libc/string.h:419: Warning: + E-ACSL construct `logic functions performing read accesses' + is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:415: Warning: - E-ACSL construct `logic function returning an integer' is not yet supported. +[e-acsl] FRAMAC_SHARE/libc/string.h:420: Warning: + E-ACSL construct `logic functions performing read accesses' + is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:416: Warning: +[e-acsl] FRAMAC_SHARE/libc/unistd.h:856: Warning: + E-ACSL construct `assigns clause in behavior' is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/sys/wait.h:79: Warning: + E-ACSL construct `assigns clause in behavior' is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/sys/wait.h:86: Warning: E-ACSL construct `assigns clause in behavior' is not yet supported. Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/stdlib.h:470: Warning: + E-ACSL construct `assigns clause in behavior' is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/stdlib.h:472: Warning: + E-ACSL construct `abnormal termination case in behavior' + is not yet supported. + Ignoring annotation. [e-acsl] translation done in project "e-acsl". -[eva] Analyzing a complete application starting at main -[eva] Computing initial state -[eva] Initial state computed -[eva:initial-state] Values of globals at initialization - __e_acsl_init ∈ [--..--] - __e_acsl_heap_allocation_size ∈ [--..--] - __e_acsl_math_HUGE_VAL ∈ [-1.79769313486e+308 .. 1.79769313486e+308] - __e_acsl_math_HUGE_VALF ∈ [-3.40282346639e+38 .. 3.40282346639e+38] - __e_acsl_math_INFINITY ∈ [-1.79769313486e+308 .. 1.79769313486e+308] - __e_acsl_sound_verdict ∈ [--..--] - __gen_e_acsl_literal_string ∈ {0} - __gen_e_acsl_literal_string_2 ∈ {0} - __gen_e_acsl_literal_string_3 ∈ {0} - __gen_e_acsl_literal_string_4 ∈ {0} - __gen_e_acsl_literal_string_5 ∈ {0} - __gen_e_acsl_literal_string_6 ∈ {0} - __gen_e_acsl_literal_string_7 ∈ {0} - __gen_e_acsl_literal_string_8 ∈ {0} - __gen_e_acsl_literal_string_9 ∈ {0} - __gen_e_acsl_literal_string_10 ∈ {0} - __gen_e_acsl_literal_string_11 ∈ {0} - __gen_e_acsl_literal_string_12 ∈ {0} - __gen_e_acsl_literal_string_13 ∈ {0} - __gen_e_acsl_literal_string_14 ∈ {0} - __gen_e_acsl_literal_string_15 ∈ {0} - __gen_e_acsl_literal_string_16 ∈ {0} - __gen_e_acsl_literal_string_17 ∈ {0} - __gen_e_acsl_literal_string_18 ∈ {0} - __gen_e_acsl_literal_string_19 ∈ {0} - __gen_e_acsl_literal_string_20 ∈ {0} - __gen_e_acsl_literal_string_21 ∈ {0} - __gen_e_acsl_literal_string_22 ∈ {0} - __gen_e_acsl_literal_string_23 ∈ {0} - __gen_e_acsl_literal_string_24 ∈ {0} - __gen_e_acsl_literal_string_25 ∈ {0} -[eva] using specification for function __e_acsl_memory_init -[eva] using specification for function __e_acsl_store_block -[eva] using specification for function __e_acsl_full_init -[eva] using specification for function __e_acsl_mark_readonly -[eva] tests/builtin/strcat.c:11: allocating variable __malloc_main_l11 -[eva] tests/builtin/strcat.c:12: allocating variable __malloc_main_l12 -[eva] using specification for function get_jmp_ctxt -[eva:alarm] tests/builtin/strcat.c:27: Warning: - out of bounds read. assert \valid_read(jmp_ctxt); -[eva] done for function main +[eva:alarm] FRAMAC_SHARE/libc/unistd.h:859: Warning: + function __e_acsl_assert, behavior blocking: precondition got status unknown. +[eva:alarm] FRAMAC_SHARE/libc/unistd.h:859: Warning: + function __gen_e_acsl_fork: postcondition 'result_ok_child_or_error' got status unknown. +[eva:alarm] FRAMAC_SHARE/libc/string.h:416: Warning: + function __gen_e_acsl_strcat: postcondition 'sum_of_lengths' got status unknown. diff --git a/src/plugins/e-acsl/tests/builtin/oracle_ci/strcmp.res.oracle b/src/plugins/e-acsl/tests/builtin/oracle_ci/strcmp.res.oracle index 008bdcc7f190644e55759a874790c59c6d659fa7..f6cbb2f80f2b420d8c1f639511a592fe4f85adec 100644 --- a/src/plugins/e-acsl/tests/builtin/oracle_ci/strcmp.res.oracle +++ b/src/plugins/e-acsl/tests/builtin/oracle_ci/strcmp.res.oracle @@ -1,3 +1,6 @@ +[variadic] tests/builtin/strcmp.c:11: Warning: + Call to function fprintf with non-static format argument: + no specification will be generated. [e-acsl] beginning translation. [e-acsl] Warning: annotating undefined function `abort': the generated program may miss memory instrumentation @@ -5,6 +8,12 @@ [e-acsl] Warning: annotating undefined function `exit': the generated program may miss memory instrumentation if there are memory-related annotations. +[e-acsl] Warning: annotating undefined function `waitpid': + the generated program may miss memory instrumentation + if there are memory-related annotations. +[e-acsl] Warning: annotating undefined function `fork': + the generated program may miss memory instrumentation + if there are memory-related annotations. [e-acsl] Warning: annotating undefined function `strcmp': the generated program may miss memory instrumentation if there are memory-related annotations. @@ -14,120 +23,79 @@ [e-acsl] Warning: annotating undefined function `strdup': the generated program may miss memory instrumentation if there are memory-related annotations. -[kernel:annot:missing-spec] FRAMAC_SHARE/libc/stdio.h:165: Warning: - Neither code nor specification for function fprintf, generating default assigns from the prototype -[kernel:annot:missing-spec] FRAMAC_SHARE/libc/stdio.h:169: Warning: - Neither code nor specification for function printf, generating default assigns from the prototype -[kernel:annot:missing-spec] FRAMAC_SHARE/libc/setjmp.h:47: Warning: - Neither code nor specification for function sigsetjmp, generating default assigns from the prototype -[kernel:annot:missing-spec] tests/builtin/signalled.h:14: Warning: - Neither code nor specification for function signal_eval, generating default assigns from the prototype -[kernel:annot:missing-spec] tests/builtin/signalled.h:18: Warning: - Neither code nor specification for function get_jmp_ctxt, generating default assigns from the prototype -[kernel:annot:missing-spec] tests/builtin/signalled.h:20: Warning: - Neither code nor specification for function set_handler, generating default assigns from the prototype -[kernel:annot:missing-spec] tests/builtin/signalled.h:22: Warning: - Neither code nor specification for function test_successful, generating default assigns from the prototype -[e-acsl] FRAMAC_SHARE/libc/stdlib.h:457: Warning: - E-ACSL construct `assigns clause in behavior' is not yet supported. +[e-acsl] FRAMAC_SHARE/libc/string.h:471: Warning: + E-ACSL construct `\fresh' is not yet supported. Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/string.h:475: Warning: + E-ACSL construct `predicate performing read accesses' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:469: Warning: - E-ACSL construct `logic function application' is not yet supported. +[e-acsl] FRAMAC_SHARE/libc/string.h:482: Warning: + E-ACSL construct `predicate performing read accesses' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:469: Warning: - E-ACSL construct `assigns clause in behavior' is not yet supported. +[e-acsl] FRAMAC_SHARE/libc/string.h:471: Warning: + E-ACSL construct `logic functions with labels' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:476: Warning: - E-ACSL construct `logic function application' is not yet supported. - Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:144: Warning: - E-ACSL construct `logic function application' is not yet supported. +[e-acsl] FRAMAC_SHARE/libc/string.h:471: Warning: + Some assumes clauses could not be translated. + Ignoring complete and disjoint behaviors annotations. +[e-acsl] FRAMAC_SHARE/libc/string.h:471: Warning: + E-ACSL construct `assigns clause in behavior' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:145: Warning: - E-ACSL construct `logic function application' is not yet supported. +[e-acsl] FRAMAC_SHARE/libc/string.h:478: Warning: + E-ACSL construct `\fresh' is not yet supported. Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/string.h:480: Warning: + E-ACSL construct `logic functions performing read accesses' + is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:145: Warning: +[e-acsl] FRAMAC_SHARE/libc/string.h:480: Warning: E-ACSL construct `assigns clause in behavior' is not yet supported. Ignoring annotation. [e-acsl] FRAMAC_SHARE/libc/string.h:147: Warning: - E-ACSL construct `logic function returning an integer' is not yet supported. - Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:137: Warning: - E-ACSL construct `logic function application' is not yet supported. + E-ACSL construct `logic functions with labels' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:138: Warning: - E-ACSL construct `logic function application' is not yet supported. +[e-acsl] FRAMAC_SHARE/libc/string.h:148: Warning: + E-ACSL construct `logic functions with labels' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:138: Warning: +[e-acsl] FRAMAC_SHARE/libc/string.h:147: Warning: E-ACSL construct `assigns clause in behavior' is not yet supported. Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/string.h:150: Warning: + E-ACSL construct `logic functions performing read accesses' + is not yet supported. + Ignoring annotation. [e-acsl] FRAMAC_SHARE/libc/string.h:140: Warning: - E-ACSL construct `logic function returning an integer' is not yet supported. + E-ACSL construct `logic functions with labels' is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/string.h:141: Warning: + E-ACSL construct `logic functions with labels' is not yet supported. Ignoring annotation. [e-acsl] FRAMAC_SHARE/libc/string.h:140: Warning: E-ACSL construct `assigns clause in behavior' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/stdlib.h:469: Warning: +[e-acsl] FRAMAC_SHARE/libc/string.h:143: Warning: + E-ACSL construct `logic functions performing read accesses' + is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/unistd.h:856: Warning: + E-ACSL construct `assigns clause in behavior' is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/sys/wait.h:79: Warning: + E-ACSL construct `assigns clause in behavior' is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/sys/wait.h:86: Warning: + E-ACSL construct `assigns clause in behavior' is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/stdlib.h:470: Warning: + E-ACSL construct `assigns clause in behavior' is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/stdlib.h:472: Warning: + E-ACSL construct `abnormal termination case in behavior' + is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/stdlib.h:457: Warning: E-ACSL construct `assigns clause in behavior' is not yet supported. Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/stdlib.h:459: Warning: + E-ACSL construct `abnormal termination case in behavior' + is not yet supported. + Ignoring annotation. [e-acsl] translation done in project "e-acsl". -[eva] Analyzing a complete application starting at main -[eva] Computing initial state -[eva] Initial state computed -[eva:initial-state] Values of globals at initialization - __e_acsl_init ∈ [--..--] - __e_acsl_heap_allocation_size ∈ [--..--] - __e_acsl_math_HUGE_VAL ∈ [-1.79769313486e+308 .. 1.79769313486e+308] - __e_acsl_math_HUGE_VALF ∈ [-3.40282346639e+38 .. 3.40282346639e+38] - __e_acsl_math_INFINITY ∈ [-1.79769313486e+308 .. 1.79769313486e+308] - __e_acsl_sound_verdict ∈ [--..--] - __gen_e_acsl_literal_string ∈ {0} - __gen_e_acsl_literal_string_2 ∈ {0} - __gen_e_acsl_literal_string_3 ∈ {0} - __gen_e_acsl_literal_string_4 ∈ {0} - __gen_e_acsl_literal_string_5 ∈ {0} - __gen_e_acsl_literal_string_6 ∈ {0} - __gen_e_acsl_literal_string_7 ∈ {0} - __gen_e_acsl_literal_string_8 ∈ {0} - __gen_e_acsl_literal_string_9 ∈ {0} - __gen_e_acsl_literal_string_10 ∈ {0} - __gen_e_acsl_literal_string_11 ∈ {0} - __gen_e_acsl_literal_string_12 ∈ {0} - __gen_e_acsl_literal_string_13 ∈ {0} - __gen_e_acsl_literal_string_14 ∈ {0} - __gen_e_acsl_literal_string_15 ∈ {0} - __gen_e_acsl_literal_string_16 ∈ {0} - __gen_e_acsl_literal_string_17 ∈ {0} - __gen_e_acsl_literal_string_18 ∈ {0} - __gen_e_acsl_literal_string_19 ∈ {0} - __gen_e_acsl_literal_string_20 ∈ {0} - __gen_e_acsl_literal_string_21 ∈ {0} - __gen_e_acsl_literal_string_22 ∈ {0} - __gen_e_acsl_literal_string_23 ∈ {0} - __gen_e_acsl_literal_string_24 ∈ {0} - __gen_e_acsl_literal_string_25 ∈ {0} - __gen_e_acsl_literal_string_26 ∈ {0} - __gen_e_acsl_literal_string_27 ∈ {0} - __gen_e_acsl_literal_string_28 ∈ {0} -[eva] using specification for function __e_acsl_memory_init -[eva] using specification for function __e_acsl_store_block -[eva] using specification for function __e_acsl_full_init -[eva] using specification for function __e_acsl_mark_readonly -[eva] using specification for function strdup -[eva:libc:unsupported-spec] FRAMAC_SHARE/libc/string.h:466: Warning: - The specification of function 'strdup' is currently not supported by Eva. - Consider adding FRAMAC_SHARE/libc/string.c - to the analyzed source files. -[eva] FRAMAC_SHARE/libc/string.h:466: Warning: - ignoring unsupported \allocates clause -[eva] using specification for function __e_acsl_delete_block -[eva:alarm] FRAMAC_SHARE/libc/string.h:472: Warning: - function __gen_e_acsl_strdup, behavior allocation: postcondition 'allocation' got status unknown. (Behavior may be inactive, no reduction performed.) -[eva:alarm] FRAMAC_SHARE/libc/string.h:474: Warning: - function __gen_e_acsl_strdup, behavior allocation: postcondition 'result_valid_string_and_same_contents' got status invalid. (Behavior may be inactive, no reduction performed.) -[eva:alarm] FRAMAC_SHARE/libc/string.h:479: Warning: - function __gen_e_acsl_strdup, behavior no_allocation: postcondition 'result_null' got status unknown. (Behavior may be inactive, no reduction performed.) -[eva] using specification for function get_jmp_ctxt -[eva:alarm] tests/builtin/strcmp.c:32: Warning: - out of bounds read. assert \valid_read(jmp_ctxt); -[eva] done for function main diff --git a/src/plugins/e-acsl/tests/builtin/oracle_ci/strcpy.res.oracle b/src/plugins/e-acsl/tests/builtin/oracle_ci/strcpy.res.oracle index bfb97b289981bcf30441d74821038c0a8281eaad..b36d6936026e912519fc77c972b7cbd084fb1fce 100644 --- a/src/plugins/e-acsl/tests/builtin/oracle_ci/strcpy.res.oracle +++ b/src/plugins/e-acsl/tests/builtin/oracle_ci/strcpy.res.oracle @@ -2,6 +2,12 @@ [e-acsl] Warning: annotating undefined function `exit': the generated program may miss memory instrumentation if there are memory-related annotations. +[e-acsl] Warning: annotating undefined function `waitpid': + the generated program may miss memory instrumentation + if there are memory-related annotations. +[e-acsl] Warning: annotating undefined function `fork': + the generated program may miss memory instrumentation + if there are memory-related annotations. [e-acsl] Warning: annotating undefined function `strcpy': the generated program may miss memory instrumentation if there are memory-related annotations. @@ -11,115 +17,89 @@ [e-acsl] Warning: annotating undefined function `strdup': the generated program may miss memory instrumentation if there are memory-related annotations. -[kernel:annot:missing-spec] FRAMAC_SHARE/libc/stdio.h:169: Warning: - Neither code nor specification for function printf, generating default assigns from the prototype -[kernel:annot:missing-spec] FRAMAC_SHARE/libc/setjmp.h:47: Warning: - Neither code nor specification for function sigsetjmp, generating default assigns from the prototype -[kernel:annot:missing-spec] tests/builtin/signalled.h:14: Warning: - Neither code nor specification for function signal_eval, generating default assigns from the prototype -[kernel:annot:missing-spec] tests/builtin/signalled.h:18: Warning: - Neither code nor specification for function get_jmp_ctxt, generating default assigns from the prototype -[kernel:annot:missing-spec] tests/builtin/signalled.h:20: Warning: - Neither code nor specification for function set_handler, generating default assigns from the prototype -[kernel:annot:missing-spec] tests/builtin/signalled.h:22: Warning: - Neither code nor specification for function test_successful, generating default assigns from the prototype -[e-acsl] FRAMAC_SHARE/libc/stdlib.h:404: Warning: +[e-acsl] FRAMAC_SHARE/libc/string.h:471: Warning: + E-ACSL construct `\fresh' is not yet supported. Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/string.h:475: Warning: + E-ACSL construct `predicate performing read accesses' is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/string.h:482: Warning: + E-ACSL construct `predicate performing read accesses' is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/string.h:471: Warning: + E-ACSL construct `logic functions with labels' is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/string.h:471: Warning: + Some assumes clauses could not be translated. + Ignoring complete and disjoint behaviors annotations. +[e-acsl] FRAMAC_SHARE/libc/string.h:471: Warning: E-ACSL construct `assigns clause in behavior' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:469: Warning: - E-ACSL construct `logic function application' is not yet supported. +[e-acsl] FRAMAC_SHARE/libc/string.h:478: Warning: + E-ACSL construct `\fresh' is not yet supported. Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/string.h:480: Warning: + E-ACSL construct `logic functions performing read accesses' + is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:469: Warning: +[e-acsl] FRAMAC_SHARE/libc/string.h:480: Warning: E-ACSL construct `assigns clause in behavior' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:476: Warning: - E-ACSL construct `logic function application' is not yet supported. +[e-acsl] FRAMAC_SHARE/libc/string.h:375: Warning: + E-ACSL construct `logic functions performing read accesses' + is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:359: Warning: - E-ACSL construct `logic function application' is not yet supported. +[e-acsl] FRAMAC_SHARE/libc/string.h:378: Warning: + E-ACSL construct `logic functions performing read accesses' + is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:362: Warning: - E-ACSL construct `\separated' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:368: Warning: - E-ACSL construct `logic function returning an integer' is not yet supported. +[e-acsl] FRAMAC_SHARE/libc/string.h:366: Warning: + E-ACSL construct `logic functions with labels' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:368: Warning: +[e-acsl] FRAMAC_SHARE/libc/string.h:365: Warning: + Some assumes clauses could not be translated. + Ignoring complete and disjoint behaviors annotations. +[e-acsl] FRAMAC_SHARE/libc/string.h:365: Warning: E-ACSL construct `assigns clause in behavior' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:371: Warning: - E-ACSL construct `logic function returning an integer' is not yet supported. +[e-acsl] FRAMAC_SHARE/libc/string.h:376: Warning: + E-ACSL construct `logic functions performing read accesses' + is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:347: Warning: - E-ACSL construct `logic function application' is not yet supported. +[e-acsl] FRAMAC_SHARE/libc/string.h:379: Warning: + E-ACSL construct `logic functions performing read accesses' + is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:348: Warning: - E-ACSL construct `logic function returning an integer' is not yet supported. +[e-acsl] FRAMAC_SHARE/libc/string.h:354: Warning: + E-ACSL construct `logic functions with labels' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:350: Warning: - E-ACSL construct `\separated' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:350: Warning: - E-ACSL construct `assigns clause in behavior' is not yet supported. +[e-acsl] FRAMAC_SHARE/libc/string.h:355: Warning: + E-ACSL construct `logic functions performing read accesses' + is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:353: Warning: - E-ACSL construct `logic function returning an integer' is not yet supported. +[e-acsl] FRAMAC_SHARE/libc/string.h:357: Warning: + E-ACSL construct `logic functions performing read accesses' + is not yet supported. Ignoring annotation. [e-acsl] FRAMAC_SHARE/libc/string.h:354: Warning: E-ACSL construct `assigns clause in behavior' is not yet supported. Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/string.h:360: Warning: + E-ACSL construct `logic functions performing read accesses' + is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/unistd.h:856: Warning: + E-ACSL construct `assigns clause in behavior' is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/sys/wait.h:79: Warning: + E-ACSL construct `assigns clause in behavior' is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/sys/wait.h:86: Warning: + E-ACSL construct `assigns clause in behavior' is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/stdlib.h:470: Warning: + E-ACSL construct `assigns clause in behavior' is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/stdlib.h:472: Warning: + E-ACSL construct `abnormal termination case in behavior' + is not yet supported. + Ignoring annotation. [e-acsl] translation done in project "e-acsl". -[eva] Analyzing a complete application starting at main -[eva] Computing initial state -[eva] Initial state computed -[eva:initial-state] Values of globals at initialization - __e_acsl_init ∈ [--..--] - __e_acsl_heap_allocation_size ∈ [--..--] - __e_acsl_math_HUGE_VAL ∈ [-1.79769313486e+308 .. 1.79769313486e+308] - __e_acsl_math_HUGE_VALF ∈ [-3.40282346639e+38 .. 3.40282346639e+38] - __e_acsl_math_INFINITY ∈ [-1.79769313486e+308 .. 1.79769313486e+308] - __e_acsl_sound_verdict ∈ [--..--] - __gen_e_acsl_literal_string ∈ {0} - __gen_e_acsl_literal_string_2 ∈ {0} - __gen_e_acsl_literal_string_3 ∈ {0} - __gen_e_acsl_literal_string_4 ∈ {0} - __gen_e_acsl_literal_string_5 ∈ {0} - __gen_e_acsl_literal_string_6 ∈ {0} - __gen_e_acsl_literal_string_7 ∈ {0} - __gen_e_acsl_literal_string_8 ∈ {0} - __gen_e_acsl_literal_string_9 ∈ {0} - __gen_e_acsl_literal_string_10 ∈ {0} - __gen_e_acsl_literal_string_11 ∈ {0} - __gen_e_acsl_literal_string_12 ∈ {0} - __gen_e_acsl_literal_string_13 ∈ {0} - __gen_e_acsl_literal_string_14 ∈ {0} - __gen_e_acsl_literal_string_15 ∈ {0} - __gen_e_acsl_literal_string_16 ∈ {0} - __gen_e_acsl_literal_string_17 ∈ {0} - __gen_e_acsl_literal_string_18 ∈ {0} - __gen_e_acsl_literal_string_19 ∈ {0} - __gen_e_acsl_literal_string_20 ∈ {0} -[eva] using specification for function __e_acsl_memory_init -[eva] using specification for function __e_acsl_store_block -[eva] using specification for function __e_acsl_full_init -[eva] using specification for function __e_acsl_mark_readonly -[eva] using specification for function strdup -[eva:libc:unsupported-spec] FRAMAC_SHARE/libc/string.h:466: Warning: - The specification of function 'strdup' is currently not supported by Eva. - Consider adding FRAMAC_SHARE/libc/string.c - to the analyzed source files. -[eva] FRAMAC_SHARE/libc/string.h:466: Warning: - ignoring unsupported \allocates clause -[eva] using specification for function __e_acsl_delete_block -[eva:alarm] FRAMAC_SHARE/libc/string.h:472: Warning: - function __gen_e_acsl_strdup, behavior allocation: postcondition 'allocation' got status unknown. (Behavior may be inactive, no reduction performed.) -[eva:alarm] FRAMAC_SHARE/libc/string.h:474: Warning: - function __gen_e_acsl_strdup, behavior allocation: postcondition 'result_valid_string_and_same_contents' got status invalid. (Behavior may be inactive, no reduction performed.) -[eva:alarm] FRAMAC_SHARE/libc/string.h:479: Warning: - function __gen_e_acsl_strdup, behavior no_allocation: postcondition 'result_null' got status unknown. (Behavior may be inactive, no reduction performed.) -[eva] tests/builtin/strcpy.c:13: allocating variable __malloc_main_l13 -[eva] tests/builtin/strcpy.c:14: allocating variable __malloc_main_l14 -[eva] tests/builtin/strcpy.c:18: allocating variable __malloc_main_l18 -[eva] tests/builtin/strcpy.c:18: allocating variable __malloc_main_l18_0 -[eva] using specification for function get_jmp_ctxt -[eva:alarm] tests/builtin/strcpy.c:21: Warning: - out of bounds read. assert \valid_read(jmp_ctxt); -[eva] done for function main diff --git a/src/plugins/e-acsl/tests/builtin/oracle_ci/strlen.res.oracle b/src/plugins/e-acsl/tests/builtin/oracle_ci/strlen.res.oracle index e0d81d086eed867d6131626321014fd72b2506b9..b1dce3cca73734a26bbe419c6e8ebece8913c525 100644 --- a/src/plugins/e-acsl/tests/builtin/oracle_ci/strlen.res.oracle +++ b/src/plugins/e-acsl/tests/builtin/oracle_ci/strlen.res.oracle @@ -5,92 +5,75 @@ [e-acsl] Warning: annotating undefined function `exit': the generated program may miss memory instrumentation if there are memory-related annotations. +[e-acsl] Warning: annotating undefined function `waitpid': + the generated program may miss memory instrumentation + if there are memory-related annotations. +[e-acsl] Warning: annotating undefined function `fork': + the generated program may miss memory instrumentation + if there are memory-related annotations. [e-acsl] Warning: annotating undefined function `strlen': the generated program may miss memory instrumentation if there are memory-related annotations. [e-acsl] Warning: annotating undefined function `strdup': the generated program may miss memory instrumentation if there are memory-related annotations. -[kernel:annot:missing-spec] FRAMAC_SHARE/libc/stdio.h:169: Warning: - Neither code nor specification for function printf, generating default assigns from the prototype -[kernel:annot:missing-spec] FRAMAC_SHARE/libc/setjmp.h:47: Warning: - Neither code nor specification for function sigsetjmp, generating default assigns from the prototype -[kernel:annot:missing-spec] tests/builtin/signalled.h:14: Warning: - Neither code nor specification for function signal_eval, generating default assigns from the prototype -[kernel:annot:missing-spec] tests/builtin/signalled.h:18: Warning: - Neither code nor specification for function get_jmp_ctxt, generating default assigns from the prototype -[kernel:annot:missing-spec] tests/builtin/signalled.h:20: Warning: - Neither code nor specification for function set_handler, generating default assigns from the prototype -[kernel:annot:missing-spec] tests/builtin/signalled.h:22: Warning: - Neither code nor specification for function test_successful, generating default assigns from the prototype -[e-acsl] FRAMAC_SHARE/libc/stdlib.h:457: Warning: +[e-acsl] FRAMAC_SHARE/libc/string.h:471: Warning: + E-ACSL construct `\fresh' is not yet supported. Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/string.h:475: Warning: + E-ACSL construct `predicate performing read accesses' is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/string.h:482: Warning: + E-ACSL construct `predicate performing read accesses' is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/string.h:471: Warning: + E-ACSL construct `logic functions with labels' is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/string.h:471: Warning: + Some assumes clauses could not be translated. + Ignoring complete and disjoint behaviors annotations. +[e-acsl] FRAMAC_SHARE/libc/string.h:471: Warning: E-ACSL construct `assigns clause in behavior' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:469: Warning: - E-ACSL construct `logic function application' is not yet supported. +[e-acsl] FRAMAC_SHARE/libc/string.h:478: Warning: + E-ACSL construct `\fresh' is not yet supported. Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/string.h:480: Warning: + E-ACSL construct `logic functions performing read accesses' + is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:469: Warning: +[e-acsl] FRAMAC_SHARE/libc/string.h:480: Warning: E-ACSL construct `assigns clause in behavior' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:476: Warning: - E-ACSL construct `logic function application' is not yet supported. +[e-acsl] FRAMAC_SHARE/libc/string.h:128: Warning: + E-ACSL construct `logic functions with labels' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:125: Warning: - E-ACSL construct `logic function application' is not yet supported. +[e-acsl] FRAMAC_SHARE/libc/string.h:128: Warning: + E-ACSL construct `assigns clause in behavior' is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/string.h:130: Warning: + E-ACSL construct `logic functions performing read accesses' + is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/unistd.h:856: Warning: + E-ACSL construct `assigns clause in behavior' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:125: Warning: +[e-acsl] FRAMAC_SHARE/libc/sys/wait.h:79: Warning: E-ACSL construct `assigns clause in behavior' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:127: Warning: - E-ACSL construct `logic function returning an integer' is not yet supported. +[e-acsl] FRAMAC_SHARE/libc/sys/wait.h:86: Warning: + E-ACSL construct `assigns clause in behavior' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/string.h:127: Warning: +[e-acsl] FRAMAC_SHARE/libc/stdlib.h:470: Warning: E-ACSL construct `assigns clause in behavior' is not yet supported. Ignoring annotation. -[e-acsl] FRAMAC_SHARE/libc/stdlib.h:469: Warning: +[e-acsl] FRAMAC_SHARE/libc/stdlib.h:472: Warning: + E-ACSL construct `abnormal termination case in behavior' + is not yet supported. + Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/stdlib.h:457: Warning: E-ACSL construct `assigns clause in behavior' is not yet supported. Ignoring annotation. +[e-acsl] FRAMAC_SHARE/libc/stdlib.h:459: Warning: + E-ACSL construct `abnormal termination case in behavior' + is not yet supported. + Ignoring annotation. [e-acsl] translation done in project "e-acsl". -[eva] Analyzing a complete application starting at main -[eva] Computing initial state -[eva] Initial state computed -[eva:initial-state] Values of globals at initialization - __e_acsl_init ∈ [--..--] - __e_acsl_heap_allocation_size ∈ [--..--] - __e_acsl_math_HUGE_VAL ∈ [-1.79769313486e+308 .. 1.79769313486e+308] - __e_acsl_math_HUGE_VALF ∈ [-3.40282346639e+38 .. 3.40282346639e+38] - __e_acsl_math_INFINITY ∈ [-1.79769313486e+308 .. 1.79769313486e+308] - __e_acsl_sound_verdict ∈ [--..--] - __gen_e_acsl_literal_string ∈ {0} - __gen_e_acsl_literal_string_2 ∈ {0} - __gen_e_acsl_literal_string_3 ∈ {0} - __gen_e_acsl_literal_string_4 ∈ {0} - __gen_e_acsl_literal_string_5 ∈ {0} - __gen_e_acsl_literal_string_6 ∈ {0} - __gen_e_acsl_literal_string_7 ∈ {0} - __gen_e_acsl_literal_string_8 ∈ {0} - __gen_e_acsl_literal_string_9 ∈ {0} - __gen_e_acsl_literal_string_10 ∈ {0} - __gen_e_acsl_literal_string_11 ∈ {0} -[eva] using specification for function __e_acsl_memory_init -[eva] using specification for function __e_acsl_store_block -[eva] using specification for function __e_acsl_full_init -[eva] using specification for function __e_acsl_mark_readonly -[eva] using specification for function strdup -[eva:libc:unsupported-spec] FRAMAC_SHARE/libc/string.h:466: Warning: - The specification of function 'strdup' is currently not supported by Eva. - Consider adding FRAMAC_SHARE/libc/string.c - to the analyzed source files. -[eva] FRAMAC_SHARE/libc/string.h:466: Warning: - ignoring unsupported \allocates clause -[eva] using specification for function __e_acsl_delete_block -[eva:alarm] FRAMAC_SHARE/libc/string.h:472: Warning: - function __gen_e_acsl_strdup, behavior allocation: postcondition 'allocation' got status unknown. (Behavior may be inactive, no reduction performed.) -[eva:alarm] FRAMAC_SHARE/libc/string.h:474: Warning: - function __gen_e_acsl_strdup, behavior allocation: postcondition 'result_valid_string_and_same_contents' got status invalid. (Behavior may be inactive, no reduction performed.) -[eva:alarm] FRAMAC_SHARE/libc/string.h:479: Warning: - function __gen_e_acsl_strdup, behavior no_allocation: postcondition 'result_null' got status unknown. (Behavior may be inactive, no reduction performed.) -[eva] using specification for function get_jmp_ctxt -[eva:alarm] tests/builtin/strlen.c:18: Warning: - out of bounds read. assert \valid_read(jmp_ctxt); -[eva] done for function main diff --git a/src/plugins/e-acsl/tests/builtin/oracle_dev/strcat.e-acsl.err.log b/src/plugins/e-acsl/tests/builtin/oracle_dev/strcat.e-acsl.err.log new file mode 100644 index 0000000000000000000000000000000000000000..ab8fc09f1676ffab5bdec0fd761e37747f9f9bcd --- /dev/null +++ b/src/plugins/e-acsl/tests/builtin/oracle_dev/strcat.e-acsl.err.log @@ -0,0 +1,40 @@ +TEST 1: OK: Expected execution at tests/builtin/strcat.c:27 +TEST 2: OK: Expected execution at tests/builtin/strcat.c:28 +strcat: insufficient space in destination string, available: 8 bytes, requires at least 9 bytes +TEST 3: OK: Expected signal at tests/builtin/strcat.c:29 +strcat: destination string string unallocated +TEST 4: OK: Expected signal at tests/builtin/strcat.c:30 +strcat: source string string unallocated +TEST 5: OK: Expected signal at tests/builtin/strcat.c:31 +strcat: destination string string unallocated +TEST 6: OK: Expected signal at tests/builtin/strcat.c:32 +strcat: source string string unallocated +TEST 7: OK: Expected signal at tests/builtin/strcat.c:33 +strcat: destination string string is not writable +TEST 8: OK: Expected signal at tests/builtin/strcat.c:34 +strcat: overlapping memory areas +TEST 9: OK: Expected signal at tests/builtin/strcat.c:35 +strcat: overlapping memory areas +TEST 10: OK: Expected signal at tests/builtin/strcat.c:36 +strcat: overlapping memory areas +TEST 11: OK: Expected signal at tests/builtin/strcat.c:37 +TEST 12: OK: Expected execution at tests/builtin/strcat.c:38 +TEST 13: OK: Expected execution at tests/builtin/strcat.c:51 +strncat: insufficient space in destination string, available: 8 bytes, requires at least 9 bytes +TEST 14: OK: Expected signal at tests/builtin/strcat.c:52 +strcat: destination string string unallocated +TEST 15: OK: Expected signal at tests/builtin/strcat.c:53 +strncat: source string string unallocated +TEST 16: OK: Expected signal at tests/builtin/strcat.c:54 +strcat: destination string string unallocated +TEST 17: OK: Expected signal at tests/builtin/strcat.c:55 +strncat: source string string unallocated +TEST 18: OK: Expected signal at tests/builtin/strcat.c:56 +strcat: destination string string is not writable +TEST 19: OK: Expected signal at tests/builtin/strcat.c:57 +strcat: overlapping memory areas +TEST 20: OK: Expected signal at tests/builtin/strcat.c:59 +strncat: insufficient space in destination string, available: 6 bytes, requires at least 7 bytes +TEST 21: OK: Expected signal at tests/builtin/strcat.c:60 +strcat: overlapping memory areas +TEST 22: OK: Expected signal at tests/builtin/strcat.c:61 diff --git a/src/plugins/e-acsl/tests/builtin/oracle_dev/strcmp.e-acsl.err.log b/src/plugins/e-acsl/tests/builtin/oracle_dev/strcmp.e-acsl.err.log new file mode 100644 index 0000000000000000000000000000000000000000..d105e29238caee343744b76cbfa7880c60a42cdc --- /dev/null +++ b/src/plugins/e-acsl/tests/builtin/oracle_dev/strcmp.e-acsl.err.log @@ -0,0 +1,36 @@ +TEST 1: OK: Expected execution at tests/builtin/strcmp.c:32 +TEST 2: OK: Expected execution at tests/builtin/strcmp.c:33 +TEST 3: OK: Expected execution at tests/builtin/strcmp.c:34 +strcmp: string 1 string not NUL-terminated +TEST 4: OK: Expected signal at tests/builtin/strcmp.c:37 +strcmp: string 2 string not NUL-terminated +TEST 5: OK: Expected signal at tests/builtin/strcmp.c:39 +strcmp: string 1 string not NUL-terminated +TEST 6: OK: Expected signal at tests/builtin/strcmp.c:41 +strcmp: string 2 string not NUL-terminated +TEST 7: OK: Expected signal at tests/builtin/strcmp.c:43 +strcmp: string 2 string unallocated +TEST 8: OK: Expected signal at tests/builtin/strcmp.c:45 +strcmp: string 1 string unallocated +TEST 9: OK: Expected signal at tests/builtin/strcmp.c:46 +strcmp: string 1 string unallocated +TEST 10: OK: Expected signal at tests/builtin/strcmp.c:51 +strcmp: string 2 string unallocated +TEST 11: OK: Expected signal at tests/builtin/strcmp.c:52 +TEST 12: OK: Expected execution at tests/builtin/strcmp.c:64 +TEST 13: OK: Expected execution at tests/builtin/strcmp.c:65 +TEST 14: OK: Expected execution at tests/builtin/strcmp.c:66 +TEST 15: OK: Expected execution at tests/builtin/strcmp.c:68 +TEST 16: OK: Expected execution at tests/builtin/strcmp.c:69 +TEST 17: OK: Expected execution at tests/builtin/strcmp.c:73 +TEST 18: OK: Expected execution at tests/builtin/strcmp.c:75 +TEST 19: OK: Expected execution at tests/builtin/strcmp.c:77 +TEST 20: OK: Expected execution at tests/builtin/strcmp.c:79 +strncmp: string 2 string has insufficient length +TEST 21: OK: Expected signal at tests/builtin/strcmp.c:82 +strncmp: string 2 string has insufficient length +TEST 22: OK: Expected signal at tests/builtin/strcmp.c:84 +strncmp: string 2 string has insufficient length +TEST 23: OK: Expected signal at tests/builtin/strcmp.c:85 +strncmp: string 1 string has insufficient length +TEST 24: OK: Expected signal at tests/builtin/strcmp.c:87 diff --git a/src/plugins/e-acsl/tests/builtin/oracle_dev/strcpy.e-acsl.err.log b/src/plugins/e-acsl/tests/builtin/oracle_dev/strcpy.e-acsl.err.log new file mode 100644 index 0000000000000000000000000000000000000000..eba27da36697e403eec185fdb5fc59294a9703ad --- /dev/null +++ b/src/plugins/e-acsl/tests/builtin/oracle_dev/strcpy.e-acsl.err.log @@ -0,0 +1,27 @@ +TEST 1: OK: Expected execution at tests/builtin/strcpy.c:21 +TEST 2: OK: Expected execution at tests/builtin/strcpy.c:22 +strlen: insufficient space in destination string, at least 5 bytes required +TEST 3: OK: Expected signal at tests/builtin/strcpy.c:23 +strlen: destination string space unallocated or cannot be written +TEST 4: OK: Expected signal at tests/builtin/strcpy.c:24 +strlen: destination string space unallocated or cannot be written +TEST 5: OK: Expected signal at tests/builtin/strcpy.c:25 +TEST 6: OK: Expected execution at tests/builtin/strcpy.c:26 +strcpy: overlapping memory areas +TEST 7: OK: Expected signal at tests/builtin/strcpy.c:27 +TEST 8: OK: Expected execution at tests/builtin/strcpy.c:28 +strcpy: overlapping memory areas +TEST 9: OK: Expected signal at tests/builtin/strcpy.c:29 +TEST 10: OK: Expected execution at tests/builtin/strcpy.c:32 +strncpy: insufficient space in destination string , at least 6 bytes required +TEST 11: OK: Expected signal at tests/builtin/strcpy.c:33 +strncpy: destination string space unallocated or cannot be written +TEST 12: OK: Expected signal at tests/builtin/strcpy.c:34 +strncpy: destination string space unallocated or cannot be written +TEST 13: OK: Expected signal at tests/builtin/strcpy.c:35 +TEST 14: OK: Expected execution at tests/builtin/strcpy.c:36 +strncpy: overlapping memory areas +TEST 15: OK: Expected signal at tests/builtin/strcpy.c:37 +TEST 16: OK: Expected execution at tests/builtin/strcpy.c:38 +strncpy: overlapping memory areas +TEST 17: OK: Expected signal at tests/builtin/strcpy.c:39 diff --git a/src/plugins/e-acsl/tests/builtin/oracle_dev/strlen.e-acsl.err.log b/src/plugins/e-acsl/tests/builtin/oracle_dev/strlen.e-acsl.err.log new file mode 100644 index 0000000000000000000000000000000000000000..73c10d123a2469ab83d8ddc961286d65f6a06b17 --- /dev/null +++ b/src/plugins/e-acsl/tests/builtin/oracle_dev/strlen.e-acsl.err.log @@ -0,0 +1,10 @@ +TEST 1: OK: Expected execution at tests/builtin/strlen.c:18 +TEST 2: OK: Expected execution at tests/builtin/strlen.c:19 +TEST 3: OK: Expected execution at tests/builtin/strlen.c:20 +TEST 4: OK: Expected execution at tests/builtin/strlen.c:21 +strlen: input string not NUL-terminated +TEST 5: OK: Expected signal at tests/builtin/strlen.c:25 +strlen: input string not NUL-terminated +TEST 6: OK: Expected signal at tests/builtin/strlen.c:26 +strlen: input string unallocated +TEST 7: OK: Expected signal at tests/builtin/strlen.c:28 diff --git a/src/plugins/e-acsl/tests/builtin/signalled.c b/src/plugins/e-acsl/tests/builtin/signalled.c deleted file mode 100644 index ebb74f89b4b88c76804cf539f7502ac5aea991a8..0000000000000000000000000000000000000000 --- a/src/plugins/e-acsl/tests/builtin/signalled.c +++ /dev/null @@ -1,51 +0,0 @@ -/* run.config -DONTRUN: auxiliary file use by tests -*/ -#include "signalled.h" - -static sigjmp_buf jmp_ctxt; -static int got_signal; -static int testno = 0; - -sigjmp_buf* get_jmp_ctxt(void) { return &jmp_ctxt; } - -void signalled(int sig) { - printf("signalled\n"); - struct sigaction sig_dfl; - sig_dfl.sa_handler = SIG_DFL; - sigemptyset(&sig_dfl.sa_mask); - sigaction(SIGABRT,&sig_dfl,NULL); - got_signal = 1; - siglongjmp(jmp_ctxt,EXE_SIGNAL); -} - -void signal_eval(int signalled, int expect_signal, const char* at) { - printf("TEST %d: ", ++testno); - if (signalled && expect_signal) - printf("OK: Expected signal at %s\n", at); - else if (!signalled && !expect_signal) - printf("OK: Expected execution at %s\n", at); - else if (!signalled && expect_signal) { - printf("FAIL: Unexpected execution at %s\n", at); - exit(1); - } else if (signalled && !expect_signal) { - printf("FAIL: Unexpected signal at %s\n", at); - exit(2); - } -} - -void set_handler(void) { - struct sigaction check_signal; - check_signal.sa_handler = signalled; - sigemptyset(&check_signal.sa_mask); - check_signal.sa_flags = 0; - sigaction(SIGABRT,&check_signal,NULL); -} - -void test_successful(void) { - struct sigaction sig_dfl; - sig_dfl.sa_handler = SIG_DFL; - sigemptyset(&sig_dfl.sa_mask); - sigaction(SIGABRT,&sig_dfl,NULL); - siglongjmp(jmp_ctxt,EXE_SUCCESS); -} diff --git a/src/plugins/e-acsl/tests/builtin/signalled.h b/src/plugins/e-acsl/tests/builtin/signalled.h deleted file mode 100644 index 1a16fdf7c5a22c3fdab0766fe22a8d277932f925..0000000000000000000000000000000000000000 --- a/src/plugins/e-acsl/tests/builtin/signalled.h +++ /dev/null @@ -1,53 +0,0 @@ -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <signal.h> -#include <setjmp.h> - -#define STRINGIFY(x) #x -#define TOSTRING(x) STRINGIFY(x) -#define AT __FILE__ ":" TOSTRING(__LINE__) - -#define EXE_SUCCESS 1 -#define EXE_SIGNAL 2 - -void signal_eval(int signalled, int expect_signal, const char *at); - -void signalled(int sig); - -sigjmp_buf* get_jmp_ctxt(void); - -void set_handler(void); - -void test_successful(void); - -/* The following macro runs a chunk of code in a subprocess and evaluates - the result. This macro assumes that fork is always successful. */ -#define SIGNALLED_AT(code, expect_signal, at) { \ - sigjmp_buf* jmp_ctxt = get_jmp_ctxt(); \ - switch (sigsetjmp(*jmp_ctxt,1)) { \ - case 0: { \ - set_handler(); \ - code; \ - test_successful(); \ - break; \ - } \ - case EXE_SUCCESS: { \ - signal_eval(0,expect_signal,at); \ - break; \ - } \ - case EXE_SIGNAL: { \ - signal_eval(1,expect_signal,at); \ - break; \ - } \ - default: { \ - printf("FAIL: Unexpected value return from test at %s\n", at); \ - exit(3); \ - } \ - } \ - } - -#define ABRT(code) SIGNALLED_AT(code, 1, AT) -#define OK(code) SIGNALLED_AT(code, 0, AT); -#define ABRT_AT(code,at) SIGNALLED_AT(code, 1, at) -#define OK_AT(code,at) SIGNALLED_AT(code, 0, at) diff --git a/src/plugins/e-acsl/tests/builtin/strcat.c b/src/plugins/e-acsl/tests/builtin/strcat.c index 3edb44098d8a2a370612d97953a0ccded31a2819..913f1208a138f2010f722fde361ce55cb58c4649 100644 --- a/src/plugins/e-acsl/tests/builtin/strcat.c +++ b/src/plugins/e-acsl/tests/builtin/strcat.c @@ -2,7 +2,7 @@ COMMENT: Test `strcat` and `strncat` E-ACSL built-ins */ -#include "signalled.h" +#include "../utils/signalled.h" #include <string.h> #include <stdlib.h> diff --git a/src/plugins/e-acsl/tests/builtin/strcmp.c b/src/plugins/e-acsl/tests/builtin/strcmp.c index eaf63cb7e24a981a225df14570dac5227b415d83..3618105f7e3928623b29811582a4a927e7b63264 100644 --- a/src/plugins/e-acsl/tests/builtin/strcmp.c +++ b/src/plugins/e-acsl/tests/builtin/strcmp.c @@ -2,7 +2,7 @@ COMMENT: Test `strcmp` and `strncmp` E-ACSL built-ins */ -#include "signalled.h" +#include "../utils/signalled.h" #include <string.h> #include <stdlib.h> diff --git a/src/plugins/e-acsl/tests/builtin/strcpy.c b/src/plugins/e-acsl/tests/builtin/strcpy.c index 425d98815a41a2e103ef270f0abd3ce8f27a10d8..ad599900304c0c5f4a40a852d196025cb90b58e4 100644 --- a/src/plugins/e-acsl/tests/builtin/strcpy.c +++ b/src/plugins/e-acsl/tests/builtin/strcpy.c @@ -2,7 +2,7 @@ COMMENT: Test `strcpy` and `strncpy` E-ACSL built-ins */ -#include "signalled.h" +#include "../utils/signalled.h" #include <string.h> #include <stdlib.h> diff --git a/src/plugins/e-acsl/tests/builtin/strlen.c b/src/plugins/e-acsl/tests/builtin/strlen.c index fd95215e70851cce422ef894574e10be84c8f964..b64c51052e10014e8a8ca7c70cf68c238c04a3bc 100644 --- a/src/plugins/e-acsl/tests/builtin/strlen.c +++ b/src/plugins/e-acsl/tests/builtin/strlen.c @@ -2,7 +2,7 @@ COMMENT: Test `strlen` E-ACSL built-ins */ -#include "signalled.h" +#include "../utils/signalled.h" #include <string.h> #include <stdlib.h> diff --git a/src/plugins/e-acsl/tests/builtin/test_config_dev b/src/plugins/e-acsl/tests/builtin/test_config_dev index 75244f22baf113b9a89e5613d15e66d948db1264..40aa6abeb704643c14f4d2cbc122f63263b77964 100644 --- a/src/plugins/e-acsl/tests/builtin/test_config_dev +++ b/src/plugins/e-acsl/tests/builtin/test_config_dev @@ -1,2 +1,2 @@ -MACRO: ROOT_EACSL_GCC_OPTS_EXT --libc-replacements -STDOPT: +COMMENT: Remove --full-mtracking once e-acsl#118 is fixed +MACRO: ROOT_EACSL_GCC_OPTS_EXT --libc-replacements --full-mtracking diff --git a/src/plugins/e-acsl/tests/format/fprintf.c b/src/plugins/e-acsl/tests/format/fprintf.c index 4c10fef60952d476c5e9aa8474cbedfc5a0aeb9a..562a89a4f6be9b0398ea3cf9857d2acffd570fe1 100644 --- a/src/plugins/e-acsl/tests/format/fprintf.c +++ b/src/plugins/e-acsl/tests/format/fprintf.c @@ -4,7 +4,7 @@ #include <stdlib.h> #include <stdio.h> -#include "signalled.h" +#include "../utils/signalled.h" int main(int argc, const char **argv) { char *pstr = "Hello world!"; diff --git a/src/plugins/e-acsl/tests/format/oracle_ci/printf.res.oracle b/src/plugins/e-acsl/tests/format/oracle_ci/printf.res.oracle index 1faab6ba910f0584577be279eb015cf69a1684fc..dfcc2cbe04f0eaa345bb32d1e95e4d40370542cb 100644 --- a/src/plugins/e-acsl/tests/format/oracle_ci/printf.res.oracle +++ b/src/plugins/e-acsl/tests/format/oracle_ci/printf.res.oracle @@ -60,7 +60,7 @@ E-ACSL construct `logic functions with labels' is not yet supported. Ignoring annotation. [e-acsl] FRAMAC_SHARE/libc/string.h:160: Warning: - Some assumes clauses couldn't be translated. + Some assumes clauses could not be translated. Ignoring complete and disjoint behaviors annotations. [e-acsl] FRAMAC_SHARE/libc/string.h:160: Warning: E-ACSL construct `assigns clause in behavior' is not yet supported. diff --git a/src/plugins/e-acsl/tests/format/printf.c b/src/plugins/e-acsl/tests/format/printf.c index d641651c13768f8d49c9fdf48c771c4bfcae39d8..9120259d2bc1a4629f7a8c2ae1962ca80b5b3d60 100644 --- a/src/plugins/e-acsl/tests/format/printf.c +++ b/src/plugins/e-acsl/tests/format/printf.c @@ -12,7 +12,7 @@ #include <stdint.h> #include <limits.h> #include <wchar.h> -#include "signalled.h" +#include "../utils/signalled.h" #define ABRT_AT(code,at) SIGNALLED_AT(code, 1, at) #define OK_AT(code,at) SIGNALLED_AT(code, 0, at) diff --git a/src/plugins/e-acsl/tests/format/test_config_dev b/src/plugins/e-acsl/tests/format/test_config_dev index d7f6f441060ba9eb22b426eaf816ff05a679840b..dd9937641ad9afdd509b8fa4fcad02299d072049 100644 --- a/src/plugins/e-acsl/tests/format/test_config_dev +++ b/src/plugins/e-acsl/tests/format/test_config_dev @@ -1,3 +1,3 @@ +COMMENT: Remove --full-mtracking once e-acsl#118 is fixed MACRO: ROOT_EACSL_GCC_OPTS_EXT --validate-format-strings --full-mtracking -F -variadic-no-translation MACRO: ROOT_EACSL_EXEC_FILTER @SEDCMD@ -e "s|/.*/share/e-acsl|FRAMAC_SHARE/e-acsl|" -STDOPT: diff --git a/src/plugins/e-acsl/tests/memory/oracle_ci/memalign.res.oracle b/src/plugins/e-acsl/tests/memory/oracle_ci/memalign.res.oracle index a08399a71e09e3fde121d5d0a7439511ae6e23f0..e06d7eea4c4d8afea7628d45323b31fb7847fe25 100644 --- a/src/plugins/e-acsl/tests/memory/oracle_ci/memalign.res.oracle +++ b/src/plugins/e-acsl/tests/memory/oracle_ci/memalign.res.oracle @@ -11,7 +11,7 @@ E-ACSL construct `predicate performing read accesses' is not yet supported. Ignoring annotation. [e-acsl] FRAMAC_SHARE/libc/stdlib.h:665: Warning: - Some assumes clauses couldn't be translated. + Some assumes clauses could not be translated. Ignoring complete and disjoint behaviors annotations. [e-acsl] FRAMAC_SHARE/libc/stdlib.h:665: Warning: E-ACSL construct `assigns clause in behavior' is not yet supported. diff --git a/src/plugins/e-acsl/tests/format/signalled.h b/src/plugins/e-acsl/tests/utils/signalled.h similarity index 100% rename from src/plugins/e-acsl/tests/format/signalled.h rename to src/plugins/e-acsl/tests/utils/signalled.h