diff --git a/src/plugins/e-acsl/share/e-acsl/segment_model/e_acsl_segment_mmodel.c b/src/plugins/e-acsl/share/e-acsl/segment_model/e_acsl_segment_mmodel.c index 06de2ff30084b994cf94d4990e059c9f338cc1bd..b8d78267e6cc6534fe9a4bd24ee62245b08b95a6 100644 --- a/src/plugins/e-acsl/share/e-acsl/segment_model/e_acsl_segment_mmodel.c +++ b/src/plugins/e-acsl/share/e-acsl/segment_model/e_acsl_segment_mmodel.c @@ -80,7 +80,6 @@ static void mark_readonly(void * ptr) { /** \brief Return 1 if a given memory location is read-only and 0 otherwise */ static int readonly (void *ptr) { uintptr_t addr = (uintptr_t)ptr; - DVALIDATE_ALLOCATED(addr, 1, addr); return IS_ON_GLOBAL(addr) && global_readonly(addr) ? 1 : 0; } diff --git a/src/plugins/e-acsl/share/e-acsl/segment_model/e_acsl_segment_tracking.h b/src/plugins/e-acsl/share/e-acsl/segment_model/e_acsl_segment_tracking.h index f601e15c4ebfce8bde5120a454f3cefd053d1518..0b1e549001a93ffe68d98bab4afe6c1a814edb36 100644 --- a/src/plugins/e-acsl/share/e-acsl/segment_model/e_acsl_segment_tracking.h +++ b/src/plugins/e-acsl/share/e-acsl/segment_model/e_acsl_segment_tracking.h @@ -327,13 +327,13 @@ static void validate_memory_layout() { # define DVALIDATE_STATIC_ACCESS(_addr, _size) \ DVASSERT(IS_ON_STATIC(_addr), "Expected static location: %a\n ", _addr); \ DVASSERT(static_allocated((uintptr_t)_addr, _size,(uintptr_t)_addr), \ - "Operation on unallocated block [%a + %lu]\n ", _addr, _size) + "Operation on unallocated static block [%a + %lu]\n ", _addr, _size) /* Same as ::DVALIDATE_STATIC_LOCATION but for a single memory location */ # define DVALIDATE_STATIC_LOCATION(_addr) \ DVASSERT(IS_ON_STATIC(_addr), "Expected static location: %a\n", _addr); \ DVASSERT(static_allocated_one((uintptr_t)_addr), \ - "Operation on unallocated block [%a]\n ", _addr) + "Operation on unallocated static block [%a]\n ", _addr) /* Assert that every location belonging to the range [_addr, _addr + _size] is * - belongs to a tracked static region (i.e., stack, TLS or global) @@ -355,7 +355,7 @@ static void validate_memory_layout() { /* Assert that memory block [_addr, _addr + _size] is allocated */ # define DVALIDATE_ALLOCATED(_addr, _size, _base) \ DVASSERT(allocated((uintptr_t)_addr, _size, (uintptr_t)_base), \ - "Operation on unallocated block [%a + %lu] with base %lu\n ", \ + "Operation on unallocated block [%a + %lu] with base %a\n ", \ _addr, _size, _base) /* Assert that memory block [_addr, _addr + _size] is allocated diff --git a/src/plugins/e-acsl/tests/runtime/oracle/gen_block_valid.c b/src/plugins/e-acsl/tests/runtime/oracle/gen_block_valid.c index d52be564121ca61dc821df1d1de213a1344ca949..db06d1608c903c04c71dc2b00867e2c01e98617e 100644 --- a/src/plugins/e-acsl/tests/runtime/oracle/gen_block_valid.c +++ b/src/plugins/e-acsl/tests/runtime/oracle/gen_block_valid.c @@ -13,27 +13,17 @@ void __e_acsl_globals_init(void) int main(int argc, char **argv) { int __retres; - int *p; - int *q; - int a; - int b; - int c; - char *pmin; - char *pmax; - int diff; __e_acsl_memory_init(& argc,& argv,(size_t)8); __e_acsl_globals_init(); - __e_acsl_store_block((void *)(& pmax),(size_t)8); - __e_acsl_store_block((void *)(& pmin),(size_t)8); - __e_acsl_store_block((void *)(& b),(size_t)4); + int *p = (int *)0; __e_acsl_store_block((void *)(& p),(size_t)8); __e_acsl_full_init((void *)(& p)); - p = (int *)0; - q = (int *)0; - a = 1; + int *q = (int *)0; + int a = 1; + int b = 2; + __e_acsl_store_block((void *)(& b),(size_t)4); __e_acsl_full_init((void *)(& b)); - b = 2; - c = 3; + int c = 3; __e_acsl_full_init((void *)(& p)); p = & b; /*@ assert \valid(p); */ @@ -94,18 +84,19 @@ int main(int argc, char **argv) (char *)"main",(char *)"!\\valid(p + 1)",31); } } + char *pmin = malloc(sizeof(int)); + __e_acsl_store_block((void *)(& pmin),(size_t)8); __e_acsl_full_init((void *)(& pmin)); - pmin = (char *)malloc(sizeof(int)); + char *pmax = malloc(sizeof(int)); + __e_acsl_store_block((void *)(& pmax),(size_t)8); __e_acsl_full_init((void *)(& pmax)); - pmax = (char *)malloc(sizeof(int)); /*@ assert Value: ptr_comparison: \pointer_comparable((void *)pmin, (void *)pmax); */ if ((unsigned long)pmin > (unsigned long)pmax) { - char *t; + char *t = pmin; __e_acsl_store_block((void *)(& t),(size_t)8); __e_acsl_full_init((void *)(& t)); - t = pmin; __e_acsl_full_init((void *)(& pmin)); pmin = pmax; __e_acsl_full_init((void *)(& pmax)); @@ -118,7 +109,7 @@ int main(int argc, char **argv) __e_acsl_initialize((void *)pmax,sizeof(char)); /*@ assert Value: mem_access: \valid(pmax); */ *pmax = (char)'L'; - diff = (int)(pmax - pmin); + int diff = (int)(pmax - pmin); /*@ assert \valid(pmin); */ { { diff --git a/src/plugins/e-acsl/tests/runtime/oracle/gen_local_goto.c b/src/plugins/e-acsl/tests/runtime/oracle/gen_local_goto.c index f5a71822eb517779399c79fb801f5cc3f2f2211e..51cb3558778e1dd709c34ef1854bd9838cd97d38 100644 --- a/src/plugins/e-acsl/tests/runtime/oracle/gen_local_goto.c +++ b/src/plugins/e-acsl/tests/runtime/oracle/gen_local_goto.c @@ -11,19 +11,19 @@ void __e_acsl_globals_init(void) __e_acsl_store_block((void *)__gen_e_acsl_literal_string, sizeof("t is %d, going to %s\n")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string); - __e_acsl_readonly((void *)__gen_e_acsl_literal_string); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string); __gen_e_acsl_literal_string_3 = "UP"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_3,sizeof("UP")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_3); - __e_acsl_readonly((void *)__gen_e_acsl_literal_string_3); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_3); __gen_e_acsl_literal_string_2 = "RET"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_2,sizeof("RET")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_2); - __e_acsl_readonly((void *)__gen_e_acsl_literal_string_2); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_2); __gen_e_acsl_literal_string_4 = "AGAIN"; __e_acsl_store_block((void *)__gen_e_acsl_literal_string_4,sizeof("AGAIN")); __e_acsl_full_init((void *)__gen_e_acsl_literal_string_4); - __e_acsl_readonly((void *)__gen_e_acsl_literal_string_4); + __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_4); return; } @@ -47,10 +47,13 @@ int main(int argc, char const **argv) a = 1; /*@ assert \valid(&a); */ { - int __gen_e_acsl_valid; - __gen_e_acsl_valid = __e_acsl_valid((void *)(& a),sizeof(int)); - __e_acsl_assert(__gen_e_acsl_valid,(char *)"Assertion", - (char *)"main",(char *)"\\valid(&a)",25); + { + int __gen_e_acsl_valid; + __gen_e_acsl_valid = __e_acsl_valid((void *)(& a),sizeof(int), + (void *)(& a),(void *)(& a)); + __e_acsl_assert(__gen_e_acsl_valid,(char *)"Assertion", + (char *)"main",(char *)"\\valid(&a)",25); + } } if (t == 2) { __gen_e_acsl_printf_va_2(__gen_e_acsl_literal_string,t, @@ -64,10 +67,13 @@ int main(int argc, char const **argv) __e_acsl_full_init((void *)(& b)); /*@ assert \valid(&b); */ { - int __gen_e_acsl_valid_2; - __gen_e_acsl_valid_2 = __e_acsl_valid((void *)(& b),sizeof(int)); - __e_acsl_assert(__gen_e_acsl_valid_2,(char *)"Assertion", - (char *)"main",(char *)"\\valid(&b)",36); + { + int __gen_e_acsl_valid_2; + __gen_e_acsl_valid_2 = __e_acsl_valid((void *)(& b),sizeof(int), + (void *)(& b),(void *)(& b)); + __e_acsl_assert(__gen_e_acsl_valid_2,(char *)"Assertion", + (char *)"main",(char *)"\\valid(&b)",36); + } } __gen_e_acsl_printf_va_3(__gen_e_acsl_literal_string,t, (char *)__gen_e_acsl_literal_string_4); diff --git a/src/plugins/e-acsl/tests/runtime/oracle/gen_ptr.c b/src/plugins/e-acsl/tests/runtime/oracle/gen_ptr.c index aa98ce917a78fe13add39ee46ff574cbfe170643..bef3b9f0f0ae33f08f6b48d5e0521f3df324633a 100644 --- a/src/plugins/e-acsl/tests/runtime/oracle/gen_ptr.c +++ b/src/plugins/e-acsl/tests/runtime/oracle/gen_ptr.c @@ -71,7 +71,7 @@ int main(void) __gen_e_acsl_valid_read_2 = __e_acsl_valid_read((void *)(& t[2] - i), sizeof(int), (void *)(& t[2]), - (void *)(& t[2] - i)); + (void *)(& t[2])); __e_acsl_assert(__gen_e_acsl_valid_read_2,(char *)"RTE", (char *)"main", (char *)"mem_access: \\valid_read(&t[2] - i)",19);