|
From: <sv...@va...> - 2010-09-08 16:29:26
|
Author: bart
Date: 2010-09-08 17:29:17 +0100 (Wed, 08 Sep 2010)
New Revision: 11346
Log:
Made sure that DRD processes empty address ranges without triggering an assertion failure. Added a unit test in drd/tests/unit_bitmap.c.
Modified:
trunk/drd/drd_bitmap.c
trunk/drd/drd_clientobj.c
trunk/drd/drd_main.c
trunk/drd/drd_suppression.c
trunk/drd/tests/unit_bitmap.c
Modified: trunk/drd/drd_bitmap.c
===================================================================
--- trunk/drd/drd_bitmap.c 2010-09-08 15:12:33 UTC (rev 11345)
+++ trunk/drd/drd_bitmap.c 2010-09-08 16:29:17 UTC (rev 11346)
@@ -129,7 +129,7 @@
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 @@
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));
Modified: trunk/drd/drd_clientobj.c
===================================================================
--- trunk/drd/drd_clientobj.c 2010-09-08 15:12:33 UTC (rev 11345)
+++ trunk/drd/drd_clientobj.c 2010-09-08 16:29:17 UTC (rev 11346)
@@ -107,7 +107,7 @@
{
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; )
{
Modified: trunk/drd/drd_main.c
===================================================================
--- trunk/drd/drd_main.c 2010-09-08 15:12:33 UTC (rev 11345)
+++ trunk/drd/drd_main.c 2010-09-08 16:29:17 UTC (rev 11346)
@@ -288,7 +288,7 @@
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 @@
{
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);
Modified: trunk/drd/drd_suppression.c
===================================================================
--- trunk/drd/drd_suppression.c 2010-09-08 15:12:33 UTC (rev 11345)
+++ trunk/drd/drd_suppression.c 2010-09-08 16:29:17 UTC (rev 11346)
@@ -69,7 +69,7 @@
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 @@
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 @@
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_(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 @@
}
}
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);
}
Modified: trunk/drd/tests/unit_bitmap.c
===================================================================
--- trunk/drd/tests/unit_bitmap.c 2010-09-08 15:12:33 UTC (rev 11345)
+++ trunk/drd/tests/unit_bitmap.c 2010-09-08 16:29:17 UTC (rev 11346)
@@ -63,6 +63,7 @@
static
struct { Addr address; SizeT size; BmAccessTypeT access_type; }
s_test1_args[] = {
+ { 0, 0, eLoad },
{ 0, 1, eLoad },
{ 666, 4, eLoad },
{ 667, 2, eStore },
|