From b558bd5888591d9c7a8b51ae0febeab022f8022c Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Wed, 8 Sep 2010 16:29:17 +0000 Subject: [PATCH] Made sure that DRD processes empty address ranges without triggering an assertion failure. Added a unit test in drd/tests/unit_bitmap.c. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11346 --- drd/drd_bitmap.c | 4 ++-- drd/drd_clientobj.c | 2 +- drd/drd_main.c | 4 ++-- drd/drd_suppression.c | 10 +++++----- drd/tests/unit_bitmap.c | 1 + 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/drd/drd_bitmap.c b/drd/drd_bitmap.c index 8e0e4c08cd..1d97d7b032 100644 --- a/drd/drd_bitmap.c +++ b/drd/drd_bitmap.c @@ -129,7 +129,7 @@ void DRD_(bm_access_range_load)(struct bitmap* const bm, Addr a1, Addr a2) Addr b, b_next; tl_assert(bm); - tl_assert(a1 < a2); + tl_assert(a1 <= a2); tl_assert(a2 < first_address_with_higher_msb(a2)); tl_assert(a1 == first_address_with_same_lsb(a1)); tl_assert(a2 == first_address_with_same_lsb(a2)); @@ -226,7 +226,7 @@ void DRD_(bm_access_range_store)(struct bitmap* const bm, Addr b, b_next; tl_assert(bm); - tl_assert(a1 < a2); + tl_assert(a1 <= a2); tl_assert(a2 < first_address_with_higher_msb(a2)); tl_assert(a1 == first_address_with_same_lsb(a1)); tl_assert(a2 == first_address_with_same_lsb(a2)); diff --git a/drd/drd_clientobj.c b/drd/drd_clientobj.c index 780b793c9e..e3b6a94a36 100644 --- a/drd/drd_clientobj.c +++ b/drd/drd_clientobj.c @@ -107,7 +107,7 @@ Bool DRD_(clientobj_present)(const Addr a1, const Addr a2) { DrdClientobj *p; - tl_assert(a1 < a2); + tl_assert(a1 <= a2); VG_(OSetGen_ResetIter)(s_clientobj_set); for ( ; (p = VG_(OSetGen_Next)(s_clientobj_set)) != 0; ) { diff --git a/drd/drd_main.c b/drd/drd_main.c index cc019afcd7..92b38c03ed 100644 --- a/drd/drd_main.c +++ b/drd/drd_main.c @@ -288,7 +288,7 @@ static __inline__ void drd_start_using_mem(const Addr a1, const SizeT len, const Bool is_stack_mem) { - tl_assert(a1 < a1 + len); + tl_assert(a1 <= a1 + len); if (!is_stack_mem && s_trace_alloc) VG_(message)(Vg_UserMsg, "Started using memory range 0x%lx + %ld%s\n", @@ -326,7 +326,7 @@ void drd_stop_using_mem(const Addr a1, const SizeT len, { const Addr a2 = a1 + len; - tl_assert(a1 < a2); + tl_assert(a1 <= a2); if (UNLIKELY(DRD_(any_address_is_traced)())) DRD_(trace_mem_access)(a1, len, eEnd); diff --git a/drd/drd_suppression.c b/drd/drd_suppression.c index cfe4b037dc..bb12b9f58d 100644 --- a/drd/drd_suppression.c +++ b/drd/drd_suppression.c @@ -69,7 +69,7 @@ void DRD_(start_suppression)(const Addr a1, const Addr a2, a1, a2 - a1, reason); } - tl_assert(a1 < a2); + tl_assert(a1 <= a2); DRD_(bm_access_range_store)(DRD_(s_suppressed), a1, a2); } @@ -82,7 +82,7 @@ void DRD_(finish_suppression)(const Addr a1, const Addr a2) VG_(get_and_pp_StackTrace)(VG_(get_running_tid)(), 12); } - tl_assert(a1 < a2); + tl_assert(a1 <= a2); DRD_(bm_clear_store)(DRD_(s_suppressed), a1, a2); } @@ -118,7 +118,7 @@ Bool DRD_(range_contains_suppression_or_hbvar)(const Addr a1, const Addr a2) void DRD_(start_tracing_address_range)(const Addr a1, const Addr a2) { - tl_assert(a1 < a2); + tl_assert(a1 <= a2); DRD_(bm_access_range_load)(DRD_(s_traced), a1, a2); if (! DRD_(g_any_address_traced)) @@ -129,7 +129,7 @@ void DRD_(start_tracing_address_range)(const Addr a1, const Addr a2) void DRD_(stop_tracing_address_range)(const Addr a1, const Addr a2) { - tl_assert(a1 < a2); + tl_assert(a1 <= a2); DRD_(bm_clear_load)(DRD_(s_traced), a1, a2); if (DRD_(g_any_address_traced)) @@ -160,7 +160,7 @@ void DRD_(suppression_stop_using_mem)(const Addr a1, const Addr a2) } } tl_assert(a1); - tl_assert(a1 < a2); + tl_assert(a1 <= a2); DRD_(bm_clear)(DRD_(s_suppressed), a1, a2); DRD_(bm_clear)(DRD_(s_traced), a1, a2); } diff --git a/drd/tests/unit_bitmap.c b/drd/tests/unit_bitmap.c index 280943c6cb..236cf06819 100644 --- a/drd/tests/unit_bitmap.c +++ b/drd/tests/unit_bitmap.c @@ -63,6 +63,7 @@ static int s_verbose = 1; static struct { Addr address; SizeT size; BmAccessTypeT access_type; } s_test1_args[] = { + { 0, 0, eLoad }, { 0, 1, eLoad }, { 666, 4, eLoad }, { 667, 2, eStore }, -- 2.47.2