From 548a008c26c7c9f3b1b4adccd10b1ae534211fc5 Mon Sep 17 00:00:00 2001 From: Kostyantyn Vorobyov <kostyantyn.vorobyov@cea.fr> Date: Mon, 15 May 2017 15:56:21 +0200 Subject: [PATCH] Weak validity in segment model --- .../e-acsl/segment_model/e_acsl_segment_tracking.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) 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 45fd1e1ab79..3bc186850f9 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 @@ -604,13 +604,13 @@ static int static_allocated(uintptr_t addr, long size, uintptr_t base_ptr) { length = short_lengths[code]; } +#ifndef E_ACSL_WEAK_VALIDITY if (addr != base_ptr) { - uintptr_t base_addr = addr - offset; - return BELONGS(base_ptr, base_addr, length) + return BELONGS(base_ptr, addr - offset, length) && offset + size <= length; - } else { - return offset + size <= length; } +#endif + return offset + size <= length; } return 0; } @@ -1053,8 +1053,12 @@ static int heap_allocated(uintptr_t addr, size_t size, uintptr_t base_ptr) { * offset is the difference between the address and base address (shadow[0]) * Then an address belongs to heap allocation if * offset + size <= length */ +#ifndef E_ACSL_WEAK_VALIDITY return base_shadow[0] == shadow[0] && (addr - shadow[0]) + size <= first_segment[1]; +#else + return (addr - shadow[0]) + size <= first_segment[1]; +#endif } return 0; } -- GitLab