You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
|
1
(13) |
2
(15) |
|
3
(16) |
4
(42) |
5
(9) |
6
(20) |
7
(22) |
8
(24) |
9
(12) |
|
10
(24) |
11
(11) |
12
(2) |
13
(13) |
14
(8) |
15
|
16
(16) |
|
17
(24) |
18
(36) |
19
(100) |
20
(94) |
21
(50) |
22
(39) |
23
(10) |
|
24
(14) |
25
(19) |
26
(2) |
27
(6) |
28
(17) |
29
(9) |
30
(8) |
|
31
(21) |
|
|
|
|
|
|
|
From: <sv...@va...> - 2009-05-03 23:15:04
|
Author: njn
Date: 2009-05-04 00:14:55 +0100 (Mon, 04 May 2009)
New Revision: 9738
Log:
Merged a number of commits between r9708..r9733 (DRD changes, mostly) from
the trunk.
Added:
branches/DARWIN/drd/tests/custom_alloc.stderr.exp
branches/DARWIN/drd/tests/custom_alloc.vgtest
branches/DARWIN/drd/tests/sem_as_mutex3.stderr.exp
branches/DARWIN/drd/tests/sem_as_mutex3.vgtest
Modified:
branches/DARWIN/drd/drd_clientreq.c
branches/DARWIN/drd/drd_load_store.c
branches/DARWIN/drd/drd_load_store.h
branches/DARWIN/drd/drd_main.c
branches/DARWIN/drd/drd_malloc_wrappers.c
branches/DARWIN/drd/drd_malloc_wrappers.h
branches/DARWIN/drd/drd_segment.c
branches/DARWIN/drd/drd_segment.h
branches/DARWIN/drd/tests/Makefile.am
branches/DARWIN/drd/tests/drd_bitmap_test.c
branches/DARWIN/drd/tests/sem_as_mutex.vgtest
branches/DARWIN/drd/tests/sem_as_mutex2.vgtest
branches/DARWIN/memcheck/tests/linux/timerfd-syscall.c
Modified: branches/DARWIN/drd/drd_clientreq.c
===================================================================
--- branches/DARWIN/drd/drd_clientreq.c 2009-05-03 22:53:19 UTC (rev 9737)
+++ branches/DARWIN/drd/drd_clientreq.c 2009-05-03 23:14:55 UTC (rev 9738)
@@ -26,7 +26,9 @@
#include "drd_barrier.h"
#include "drd_clientreq.h"
#include "drd_cond.h"
+#include "drd_error.h"
#include "drd_load_store.h"
+#include "drd_malloc_wrappers.h"
#include "drd_mutex.h"
#include "drd_rwlock.h"
#include "drd_semaphore.h"
@@ -44,9 +46,8 @@
/* Local function declarations. */
-static
-Bool DRD_(handle_client_request)(ThreadId vg_tid, UWord* arg, UWord* ret);
-static Addr DRD_(highest_used_stack_address)(const ThreadId vg_tid);
+static Bool handle_client_request(ThreadId vg_tid, UWord* arg, UWord* ret);
+static Addr highest_used_stack_address(const ThreadId vg_tid);
/* Function definitions. */
@@ -57,15 +58,14 @@
*/
void DRD_(clientreq_init)(void)
{
- VG_(needs_client_requests)(DRD_(handle_client_request));
+ VG_(needs_client_requests)(handle_client_request);
}
/**
* DRD's handler for Valgrind client requests. The code below handles both
* DRD's public and tool-internal client requests.
*/
-static
-Bool DRD_(handle_client_request)(ThreadId vg_tid, UWord* arg, UWord* ret)
+static Bool handle_client_request(ThreadId vg_tid, UWord* arg, UWord* ret)
{
UWord result = 0;
const DrdThreadId drd_tid = DRD_(thread_get_running_tid)();
@@ -75,6 +75,22 @@
switch (arg[0])
{
+ case VG_USERREQ__MALLOCLIKE_BLOCK:
+ if (arg[1])
+ DRD_(malloclike_block)(vg_tid, arg[1]/*addr*/, arg[2]/*size*/);
+ break;
+
+ case VG_USERREQ__FREELIKE_BLOCK:
+ if (arg[1] && ! DRD_(freelike_block)(vg_tid, arg[1]/*addr*/))
+ {
+ VG_(maybe_record_error)(vg_tid,
+ GenericErr,
+ VG_(get_IP)(vg_tid),
+ "Invalid VG_USERREQ__FREELIKE_BLOCK request",
+ NULL);
+ }
+ break;
+
case VG_USERREQ__DRD_GET_VALGRIND_THREAD_ID:
result = vg_tid;
break;
@@ -93,7 +109,7 @@
case VG_USERREQ__DRD_SUPPRESS_CURRENT_STACK:
{
- const Addr topmost_sp = DRD_(highest_used_stack_address)(vg_tid);
+ const Addr topmost_sp = highest_used_stack_address(vg_tid);
#if 0
UInt nframes;
const UInt n_ips = 20;
@@ -375,9 +391,11 @@
break;
default:
+#if 0
VG_(message)(Vg_DebugMsg, "Unrecognized client request 0x%lx 0x%lx",
arg[0], arg[1]);
tl_assert(0);
+#endif
return False;
}
@@ -393,7 +411,7 @@
* in vgpreload_exp-drd-*.so or from the thread wrapper for a newly created
* thread. See also drd_pthread_intercepts.c.
*/
-static Addr DRD_(highest_used_stack_address)(const ThreadId vg_tid)
+static Addr highest_used_stack_address(const ThreadId vg_tid)
{
UInt nframes;
const UInt n_ips = 10;
Modified: branches/DARWIN/drd/drd_load_store.c
===================================================================
--- branches/DARWIN/drd/drd_load_store.c 2009-05-03 22:53:19 UTC (rev 9737)
+++ branches/DARWIN/drd/drd_load_store.c 2009-05-03 23:14:55 UTC (rev 9738)
@@ -53,22 +53,34 @@
/* Local variables. */
-static Bool DRD_(s_check_stack_accesses) = False;
+static Bool s_check_stack_accesses = False;
+static Bool s_first_race_only = False;
/* Function definitions. */
Bool DRD_(get_check_stack_accesses)()
{
- return DRD_(s_check_stack_accesses);
+ return s_check_stack_accesses;
}
void DRD_(set_check_stack_accesses)(const Bool c)
{
tl_assert(c == False || c == True);
- DRD_(s_check_stack_accesses) = c;
+ s_check_stack_accesses = c;
}
+Bool DRD_(get_first_race_only)()
+{
+ return s_first_race_only;
+}
+
+void DRD_(set_first_race_only)(const Bool fro)
+{
+ tl_assert(fro == False || fro == True);
+ s_first_race_only = fro;
+}
+
void DRD_(trace_mem_access)(const Addr addr, const SizeT size,
const BmAccessTypeT access_type)
{
@@ -124,6 +136,11 @@
VG_(get_IP)(VG_(get_running_tid)()),
"Conflicting accesses",
&drei);
+
+ if (s_first_race_only)
+ {
+ DRD_(start_suppression)(addr, addr + size, "first race only");
+ }
}
VG_REGPARM(2) void DRD_(trace_load)(Addr addr, SizeT size)
@@ -135,7 +152,7 @@
#endif
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_load_triggers_conflict(addr, addr + size)
&& ! DRD_(is_suppressed)(addr, addr + size))
@@ -147,7 +164,7 @@
static VG_REGPARM(1) void drd_trace_load_1(Addr addr)
{
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_load_1_triggers_conflict(addr)
&& ! DRD_(is_suppressed)(addr, addr + 1))
@@ -159,7 +176,7 @@
static VG_REGPARM(1) void drd_trace_load_2(Addr addr)
{
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_load_2_triggers_conflict(addr)
&& ! DRD_(is_suppressed)(addr, addr + 2))
@@ -171,7 +188,7 @@
static VG_REGPARM(1) void drd_trace_load_4(Addr addr)
{
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_load_4_triggers_conflict(addr)
&& ! DRD_(is_suppressed)(addr, addr + 4))
@@ -183,7 +200,7 @@
static VG_REGPARM(1) void drd_trace_load_8(Addr addr)
{
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_load_8_triggers_conflict(addr)
&& ! DRD_(is_suppressed)(addr, addr + 8))
@@ -201,7 +218,7 @@
#endif
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_store_triggers_conflict(addr, addr + size)
&& ! DRD_(is_suppressed)(addr, addr + size))
@@ -213,7 +230,7 @@
static VG_REGPARM(1) void drd_trace_store_1(Addr addr)
{
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_store_1_triggers_conflict(addr)
&& ! DRD_(is_suppressed)(addr, addr + 1))
@@ -225,7 +242,7 @@
static VG_REGPARM(1) void drd_trace_store_2(Addr addr)
{
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_store_2_triggers_conflict(addr)
&& ! DRD_(is_suppressed)(addr, addr + 2))
@@ -237,7 +254,7 @@
static VG_REGPARM(1) void drd_trace_store_4(Addr addr)
{
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_store_4_triggers_conflict(addr)
&& ! DRD_(is_suppressed)(addr, addr + 4))
@@ -249,7 +266,7 @@
static VG_REGPARM(1) void drd_trace_store_8(Addr addr)
{
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_store_8_triggers_conflict(addr)
&& ! DRD_(is_suppressed)(addr, addr + 8))
@@ -310,7 +327,7 @@
mkIRExpr_HWord(size)))));
}
- if (! DRD_(s_check_stack_accesses) && is_stack_access(bb, addr_expr))
+ if (! s_check_stack_accesses && is_stack_access(bb, addr_expr))
return;
switch (size)
@@ -375,7 +392,7 @@
mkIRExpr_HWord(size)))));
}
- if (! DRD_(s_check_stack_accesses) && is_stack_access(bb, addr_expr))
+ if (! s_check_stack_accesses && is_stack_access(bb, addr_expr))
return;
switch (size)
Modified: branches/DARWIN/drd/drd_load_store.h
===================================================================
--- branches/DARWIN/drd/drd_load_store.h 2009-05-03 22:53:19 UTC (rev 9737)
+++ branches/DARWIN/drd/drd_load_store.h 2009-05-03 23:14:55 UTC (rev 9738)
@@ -38,6 +38,8 @@
Bool DRD_(get_check_stack_accesses)(void);
void DRD_(set_check_stack_accesses)(const Bool c);
+Bool DRD_(get_first_race_only)(void);
+void DRD_(set_first_race_only)(const Bool fro);
IRSB* DRD_(instrument)(VgCallbackClosure* const closure,
IRSB* const bb_in,
VexGuestLayout* const layout,
Modified: branches/DARWIN/drd/drd_main.c
===================================================================
--- branches/DARWIN/drd/drd_main.c 2009-05-03 22:53:19 UTC (rev 9737)
+++ branches/DARWIN/drd/drd_main.c 2009-05-03 23:14:55 UTC (rev 9738)
@@ -67,6 +67,7 @@
{
int check_stack_accesses = -1;
int exclusive_threshold_ms = -1;
+ int first_race_only = -1;
int report_signal_unlocked = -1;
int segment_merging = -1;
int shared_threshold_ms = -1;
@@ -86,6 +87,7 @@
if VG_BOOL_CLO(arg, "--check-stack-var", check_stack_accesses) {}
else if VG_BOOL_CLO(arg, "--drd-stats", DRD_(s_print_stats)) {}
+ else if VG_BOOL_CLO(arg, "--first-race-only", first_race_only) {}
else if VG_BOOL_CLO(arg,"--report-signal-unlocked",report_signal_unlocked) {}
else if VG_BOOL_CLO(arg, "--segment-merging", segment_merging) {}
else if VG_BOOL_CLO(arg, "--show-confl-seg", show_confl_seg) {}
@@ -116,6 +118,10 @@
DRD_(mutex_set_lock_threshold)(exclusive_threshold_ms);
DRD_(rwlock_set_exclusive_threshold)(exclusive_threshold_ms);
}
+ if (first_race_only != -1)
+ {
+ DRD_(set_first_race_only)(first_race_only);
+ }
if (report_signal_unlocked != -1)
{
DRD_(cond_set_report_signal_unlocked)(report_signal_unlocked);
@@ -166,6 +172,8 @@
" stack variables [no].\n"
" --exclusive-threshold=<n> Print an error message if any mutex or\n"
" writer lock is held longer than the specified time (in milliseconds).\n"
+" --first-race-only=yes|no Only report the first data race that occurs on\n"
+" a memory location instead of all races [no].\n"
" --report-signal-unlocked=yes|no Whether to report calls to\n"
" pthread_cond_signal() where the mutex associated\n"
" with the signal via pthread_cond_wait() is not\n"
@@ -574,6 +582,9 @@
DRD_(sg_get_max_segments_alive_count)(),
DRD_(thread_get_discard_ordered_segments_count)());
VG_(message)(Vg_UserMsg,
+ " %lld merges.",
+ DRD_(sg_get_segment_merge_count)());
+ VG_(message)(Vg_UserMsg,
" (%lld m, %lld rw, %lld s, %lld b)",
DRD_(get_mutex_segment_creation_count)(),
DRD_(get_rwlock_segment_creation_count)(),
Modified: branches/DARWIN/drd/drd_malloc_wrappers.c
===================================================================
--- branches/DARWIN/drd/drd_malloc_wrappers.c 2009-05-03 22:53:19 UTC (rev 9737)
+++ branches/DARWIN/drd/drd_malloc_wrappers.c 2009-05-03 23:14:55 UTC (rev 9738)
@@ -50,14 +50,14 @@
/* Local variables. */
-static StartUsingMem DRD_(s_start_using_mem_callback);
-static StopUsingMem DRD_(s_stop_using_mem_callback);
+static StartUsingMem s_start_using_mem_callback;
+static StopUsingMem s_stop_using_mem_callback;
/* Stats ... */
-static SizeT DRD_(s_cmalloc_n_mallocs) = 0;
-static SizeT DRD_(s_cmalloc_n_frees) = 0;
-static SizeT DRD_(s_cmalloc_bs_mallocd) = 0;
+static SizeT s_cmalloc_n_mallocs = 0;
+static SizeT s_cmalloc_n_frees = 0;
+static SizeT s_cmalloc_bs_mallocd = 0;
/* Record malloc'd blocks. */
-static VgHashTable DRD_(s_malloc_list) = NULL;
+static VgHashTable s_malloc_list = NULL;
/*------------------------------------------------------------*/
@@ -65,7 +65,7 @@
/*------------------------------------------------------------*/
/** Allocate its shadow chunk, put it on the appropriate list. */
-static DRD_Chunk* DRD_(create_chunk)(ThreadId tid, Addr p, SizeT size)
+static DRD_Chunk* create_chunk(ThreadId tid, Addr p, SizeT size)
{
DRD_Chunk* mc = VG_(malloc)("drd.malloc_wrappers.cDC.1",
sizeof(DRD_Chunk));
@@ -81,15 +81,11 @@
/*------------------------------------------------------------*/
/* Allocate memory and note change in memory available */
-static
-__inline__
-void* DRD_(new_block)(ThreadId tid,
- SizeT size, SizeT align,
- Bool is_zeroed)
+static void* new_block(ThreadId tid, SizeT size, SizeT align, Bool is_zeroed)
{
Addr p;
- DRD_(s_cmalloc_n_mallocs) ++;
+ s_cmalloc_n_mallocs ++;
// Allocate and zero
p = (Addr)VG_(cli_malloc)(align, size);
@@ -97,56 +93,79 @@
return NULL;
}
if (is_zeroed) VG_(memset)((void*)p, 0, size);
- DRD_(s_start_using_mem_callback)(p, p + size, 0/*ec_uniq*/);
- // Only update this stat if allocation succeeded.
- DRD_(s_cmalloc_bs_mallocd) += size;
+ DRD_(malloclike_block)(tid, p, size);
- VG_(HT_add_node)(DRD_(s_malloc_list), DRD_(create_chunk)(tid, p, size));
-
return (void*)p;
}
+/**
+ * Store information about a memory block that has been allocated by
+ * malloc() or a malloc() replacement.
+ */
+void DRD_(malloclike_block)(const ThreadId tid, const Addr p, const SizeT size)
+{
+ tl_assert(p);
+
+ s_start_using_mem_callback(p, p + size, 0/*ec_uniq*/);
+
+ // Only update this stat if allocation succeeded.
+ s_cmalloc_bs_mallocd += size;
+
+ VG_(HT_add_node)(s_malloc_list, create_chunk(tid, p, size));
+}
+
static void* DRD_(malloc)(ThreadId tid, SizeT n)
{
- return DRD_(new_block)(tid, n, VG_(clo_alignment), /*is_zeroed*/False);
+ return new_block(tid, n, VG_(clo_alignment), /*is_zeroed*/False);
}
static void* DRD_(memalign)(ThreadId tid, SizeT align, SizeT n)
{
- return DRD_(new_block)(tid, n, align, /*is_zeroed*/False);
+ return new_block(tid, n, align, /*is_zeroed*/False);
}
static void* DRD_(calloc)(ThreadId tid, SizeT nmemb, SizeT size1)
{
- return DRD_(new_block)(tid, nmemb*size1, VG_(clo_alignment),
+ return new_block(tid, nmemb*size1, VG_(clo_alignment),
/*is_zeroed*/True);
}
-static __inline__ void DRD_(handle_free)(ThreadId tid, Addr p)
+/**
+ * Remove the information that was stored by DRD_(malloclike_block)() about
+ * a memory block.
+ */
+Bool DRD_(freelike_block)(const ThreadId tid, const Addr p)
{
DRD_Chunk* mc;
- DRD_(s_cmalloc_n_frees)++;
+ tl_assert(p);
- mc = VG_(HT_remove)(DRD_(s_malloc_list), (UWord)p);
- if (mc == NULL)
+ s_cmalloc_n_frees++;
+
+ mc = VG_(HT_remove)(s_malloc_list, (UWord)p);
+ if (mc)
{
- tl_assert(0);
- }
- else
- {
tl_assert(p == mc->data);
if (mc->size > 0)
- DRD_(s_stop_using_mem_callback)(mc->data, mc->size);
- VG_(cli_free)((void*)p);
+ s_stop_using_mem_callback(mc->data, mc->size);
VG_(free)(mc);
+ return True;
}
+ return False;
}
+static void handle_free(ThreadId tid, Addr p)
+{
+ if (DRD_(freelike_block)(tid, p))
+ VG_(cli_free)((void*)p);
+ else
+ tl_assert(False);
+}
+
static void DRD_(free)(ThreadId tid, void* p)
{
- DRD_(handle_free)(tid, (Addr)p);
+ handle_free(tid, (Addr)p);
}
static void* DRD_(realloc)(ThreadId tid, void* p_old, SizeT new_size)
@@ -155,12 +174,12 @@
void* p_new;
SizeT old_size;
- DRD_(s_cmalloc_n_frees) ++;
- DRD_(s_cmalloc_n_mallocs) ++;
- DRD_(s_cmalloc_bs_mallocd) += new_size;
+ s_cmalloc_n_frees ++;
+ s_cmalloc_n_mallocs ++;
+ s_cmalloc_bs_mallocd += new_size;
/* Remove the old block */
- mc = VG_(HT_remove)(DRD_(s_malloc_list), (UWord)p_old);
+ mc = VG_(HT_remove)(s_malloc_list, (UWord)p_old);
if (mc == NULL) {
tl_assert(0);
return NULL;
@@ -178,7 +197,7 @@
else if (old_size > new_size)
{
/* new size is smaller */
- DRD_(s_stop_using_mem_callback)(mc->data + new_size, old_size);
+ s_stop_using_mem_callback(mc->data + new_size, old_size);
mc->size = new_size;
mc->where = VG_(record_ExeContext)(tid, 0);
p_new = p_old;
@@ -196,12 +215,12 @@
VG_(memcpy)((void*)a_new, p_old, mc->size);
/* Free old memory */
- DRD_(s_stop_using_mem_callback)(mc->data, mc->size);
+ s_stop_using_mem_callback(mc->data, mc->size);
VG_(free)(mc);
// Allocate a new chunk.
- mc = DRD_(create_chunk)(tid, a_new, new_size);
- DRD_(s_start_using_mem_callback)(a_new, a_new + new_size,
+ mc = create_chunk(tid, a_new, new_size);
+ s_start_using_mem_callback(a_new, a_new + new_size,
0/*ec_uniq*/);
}
else
@@ -217,14 +236,14 @@
// will have removed and then re-added mc unnecessarily. But that's ok
// because shrinking a block with realloc() is (presumably) much rarer
// than growing it, and this way simplifies the growing case.
- VG_(HT_add_node)(DRD_(s_malloc_list), mc);
+ VG_(HT_add_node)(s_malloc_list, mc);
return p_new;
}
static void* DRD_(__builtin_new)(ThreadId tid, SizeT n)
{
- void* const result = DRD_(new_block)(tid, n, VG_(clo_alignment),
+ void* const result = new_block(tid, n, VG_(clo_alignment),
/*is_zeroed*/False);
//VG_(message)(Vg_DebugMsg, "__builtin_new(%d, %d) = %p", tid, n, result);
return result;
@@ -233,22 +252,22 @@
static void DRD_(__builtin_delete)(ThreadId tid, void* p)
{
//VG_(message)(Vg_DebugMsg, "__builtin_delete(%d, %p)", tid, p);
- DRD_(handle_free)(tid, (Addr)p);
+ handle_free(tid, (Addr)p);
}
static void* DRD_(__builtin_vec_new)(ThreadId tid, SizeT n)
{
- return DRD_(new_block)(tid, n, VG_(clo_alignment), /*is_zeroed*/False);
+ return new_block(tid, n, VG_(clo_alignment), /*is_zeroed*/False);
}
static void DRD_(__builtin_vec_delete)(ThreadId tid, void* p)
{
- DRD_(handle_free)(tid, (Addr)p);
+ handle_free(tid, (Addr)p);
}
static SizeT DRD_(malloc_usable_size) ( ThreadId tid, void* p )
{
- DRD_Chunk *mc = VG_(HT_lookup)( DRD_(s_malloc_list), (UWord)p );
+ DRD_Chunk *mc = VG_(HT_lookup)( s_malloc_list, (UWord)p );
// There may be slop, but pretend there isn't because only the asked-for
// area will have been shadowed properly.
@@ -258,14 +277,14 @@
void DRD_(register_malloc_wrappers)(const StartUsingMem start_callback,
const StopUsingMem stop_callback)
{
- tl_assert(DRD_(s_malloc_list) == 0);
- DRD_(s_malloc_list) = VG_(HT_construct)("drd_malloc_list"); // a big prime
- tl_assert(DRD_(s_malloc_list) != 0);
+ tl_assert(s_malloc_list == 0);
+ s_malloc_list = VG_(HT_construct)("drd_malloc_list"); // a big prime
+ tl_assert(s_malloc_list != 0);
tl_assert(start_callback);
tl_assert(stop_callback);
- DRD_(s_start_using_mem_callback) = start_callback;
- DRD_(s_stop_using_mem_callback) = stop_callback;
+ s_start_using_mem_callback = start_callback;
+ s_stop_using_mem_callback = stop_callback;
VG_(needs_malloc_replacement)(DRD_(malloc),
DRD_(__builtin_new),
@@ -291,8 +310,8 @@
tl_assert(size);
tl_assert(where);
- VG_(HT_ResetIter)(DRD_(s_malloc_list));
- while ((mc = VG_(HT_Next)(DRD_(s_malloc_list))))
+ VG_(HT_ResetIter)(s_malloc_list);
+ while ((mc = VG_(HT_Next)(s_malloc_list)))
{
if (mc->data <= a && a < mc->data + mc->size)
{
@@ -321,8 +340,8 @@
return;
/* Count memory still in use. */
- VG_(HT_ResetIter)(DRD_(s_malloc_list));
- while ((mc = VG_(HT_Next)(DRD_(s_malloc_list))))
+ VG_(HT_ResetIter)(s_malloc_list);
+ while ((mc = VG_(HT_Next)(s_malloc_list)))
{
nblocks++;
nbytes += mc->size;
@@ -333,8 +352,8 @@
nbytes, nblocks);
VG_(message)(Vg_DebugMsg,
"malloc/free: %lu allocs, %lu frees, %lu bytes allocated.",
- DRD_(s_cmalloc_n_mallocs),
- DRD_(s_cmalloc_n_frees), DRD_(s_cmalloc_bs_mallocd));
+ s_cmalloc_n_mallocs,
+ s_cmalloc_n_frees, s_cmalloc_bs_mallocd);
if (VG_(clo_verbosity) > 1)
VG_(message)(Vg_DebugMsg, " ");
}
Modified: branches/DARWIN/drd/drd_malloc_wrappers.h
===================================================================
--- branches/DARWIN/drd/drd_malloc_wrappers.h 2009-05-03 22:53:19 UTC (rev 9737)
+++ branches/DARWIN/drd/drd_malloc_wrappers.h 2009-05-03 23:14:55 UTC (rev 9738)
@@ -37,6 +37,8 @@
void DRD_(register_malloc_wrappers)(const StartUsingMem start_callback,
const StopUsingMem stop_callback);
+void DRD_(malloclike_block)(const ThreadId tid, const Addr p, const SizeT size);
+Bool DRD_(freelike_block)(const ThreadId tid, const Addr p);
Bool DRD_(heap_addrinfo)(Addr const a,
Addr* const data,
SizeT* const size,
Modified: branches/DARWIN/drd/drd_segment.c
===================================================================
--- branches/DARWIN/drd/drd_segment.c 2009-05-03 22:53:19 UTC (rev 9737)
+++ branches/DARWIN/drd/drd_segment.c 2009-05-03 23:14:55 UTC (rev 9738)
@@ -38,6 +38,7 @@
/* Local variables. */
+static ULong s_segment_merge_count;
static ULong s_segments_created_count;
static ULong s_segments_alive_count;
static ULong s_max_segments_alive_count;
@@ -215,6 +216,8 @@
VG_(message)(Vg_UserMsg, "%s", msg);
}
+ s_segment_merge_count++;
+
// Keep sg1->stacktrace.
// Keep sg1->vc.
// Merge sg2->bm into sg1->bm.
@@ -258,3 +261,8 @@
{
return s_max_segments_alive_count;
}
+
+ULong DRD_(sg_get_segment_merge_count)(void)
+{
+ return s_segment_merge_count;
+}
Modified: branches/DARWIN/drd/drd_segment.h
===================================================================
--- branches/DARWIN/drd/drd_segment.h 2009-05-03 22:53:19 UTC (rev 9737)
+++ branches/DARWIN/drd/drd_segment.h 2009-05-03 23:14:55 UTC (rev 9738)
@@ -70,6 +70,7 @@
ULong DRD_(sg_get_segments_created_count)(void);
ULong DRD_(sg_get_segments_alive_count)(void);
ULong DRD_(sg_get_max_segments_alive_count)(void);
+ULong DRD_(sg_get_segment_merge_count)(void);
#endif // __SEGMENT_H
Modified: branches/DARWIN/drd/tests/Makefile.am
===================================================================
--- branches/DARWIN/drd/tests/Makefile.am 2009-05-03 22:53:19 UTC (rev 9737)
+++ branches/DARWIN/drd/tests/Makefile.am 2009-05-03 23:14:55 UTC (rev 9738)
@@ -27,6 +27,8 @@
circular_buffer.stderr.exp-with-atomic-builtins \
circular_buffer.stderr.exp-without-atomic-builtins \
circular_buffer.vgtest \
+ custom_alloc.vgtest \
+ custom_alloc.stderr.exp \
drd_bitmap_test.stderr.exp \
drd_bitmap_test.stdout.exp \
drd_bitmap_test.vgtest \
@@ -134,6 +136,8 @@
sem_as_mutex.vgtest \
sem_as_mutex2.stderr.exp \
sem_as_mutex2.vgtest \
+ sem_as_mutex3.stderr.exp \
+ sem_as_mutex3.vgtest \
sigalrm.stderr.exp \
sigalrm.vgtest \
tc01_simple_race.stderr.exp \
@@ -173,7 +177,8 @@
tc17_sembar.vgtest \
tc18_semabuse.stderr.exp \
tc18_semabuse.vgtest \
- tc19_shadowmem.stderr.exp \
+ tc19_shadowmem.stderr.exp-32bit \
+ tc19_shadowmem.stderr.exp-64bit \
tc19_shadowmem.vgtest \
tc20_verifywrap.stderr.exp-glibc2.3 \
tc20_verifywrap.stderr.exp-glibc2.5 \
Copied: branches/DARWIN/drd/tests/custom_alloc.stderr.exp (from rev 9733, trunk/drd/tests/custom_alloc.stderr.exp)
===================================================================
--- branches/DARWIN/drd/tests/custom_alloc.stderr.exp (rev 0)
+++ branches/DARWIN/drd/tests/custom_alloc.stderr.exp 2009-05-03 23:14:55 UTC (rev 9738)
@@ -0,0 +1,3 @@
+
+
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
Copied: branches/DARWIN/drd/tests/custom_alloc.vgtest (from rev 9733, trunk/drd/tests/custom_alloc.vgtest)
===================================================================
--- branches/DARWIN/drd/tests/custom_alloc.vgtest (rev 0)
+++ branches/DARWIN/drd/tests/custom_alloc.vgtest 2009-05-03 23:14:55 UTC (rev 9738)
@@ -0,0 +1 @@
+prog: ../../memcheck/tests/custom_alloc
Modified: branches/DARWIN/drd/tests/drd_bitmap_test.c
===================================================================
--- branches/DARWIN/drd/tests/drd_bitmap_test.c 2009-05-03 22:53:19 UTC (rev 9737)
+++ branches/DARWIN/drd/tests/drd_bitmap_test.c 2009-05-03 23:14:55 UTC (rev 9738)
@@ -74,7 +74,7 @@
int equal;
equal = DRD_(bm_equal)(bm1, bm2);
- if (! equal)
+ if (s_verbose && ! equal)
{
VG_(printf)("Bitmaps are different.\n");
VG_(printf)("Bitmap 1:\n");
@@ -167,16 +167,17 @@
struct bitmap* bm1;
struct bitmap* bm2;
+ const Addr lb = ADDR0_COUNT - 2 * BITS_PER_UWORD;
+ const Addr ub = ADDR0_COUNT + 2 * BITS_PER_UWORD;
+
assert(outer_loop_step >= 1);
assert(inner_loop_step >= 1);
bm1 = DRD_(bm_new)();
bm2 = DRD_(bm_new)();
- for (i = ADDR0_COUNT - 2 * BITS_PER_UWORD;
- i < ADDR0_COUNT + 2 * BITS_PER_UWORD;
- i += outer_loop_step)
+ for (i = lb; i < ub; i += outer_loop_step)
{
- for (j = i + 1; j < ADDR0_COUNT + 2 * BITS_PER_UWORD; j += inner_loop_step)
+ for (j = i + 1; j < ub; j += inner_loop_step)
{
DRD_(bm_access_range_load)(bm1, i, j);
DRD_(bm_clear_load)(bm1, i, j);
@@ -240,7 +241,7 @@
i < ADDR0_COUNT + 2 * BITS_PER_UWORD;
i += outer_loop_step)
{
- for (j = i + 1; j < ADDR0_COUNT + 2 * BITS_PER_UWORD; j += inner_loop_step)
+ for (j = i + 1; j < ub; j += inner_loop_step)
{
DRD_(bm_clear_load)(bm1, i, j);
DRD_(bm_access_range_load)(bm1, i, j);
@@ -257,6 +258,7 @@
DRD_(bm_clear_load)(bm1, i, i+8);
DRD_(bm_access_load_8)(bm1, i);
assert(bm_equal_print_diffs(bm1, bm2));
+
DRD_(bm_clear_store)(bm1, i, j);
DRD_(bm_access_range_store)(bm1, i, j);
assert(bm_equal_print_diffs(bm1, bm2));
@@ -272,6 +274,11 @@
DRD_(bm_clear_store)(bm1, i, i+8);
DRD_(bm_access_store_8)(bm1, i);
assert(bm_equal_print_diffs(bm1, bm2));
+
+ DRD_(bm_clear)(bm1, i, j);
+ DRD_(bm_access_range_load)(bm1, i, j);
+ DRD_(bm_access_range_store)(bm1, i, j);
+ assert(bm_equal_print_diffs(bm1, bm2));
}
}
DRD_(bm_delete)(bm2);
Modified: branches/DARWIN/drd/tests/sem_as_mutex.vgtest
===================================================================
--- branches/DARWIN/drd/tests/sem_as_mutex.vgtest 2009-05-03 22:53:19 UTC (rev 9737)
+++ branches/DARWIN/drd/tests/sem_as_mutex.vgtest 2009-05-03 23:14:55 UTC (rev 9738)
@@ -1,3 +1,3 @@
prereq: ./supported_libpthread
-vgopts: --var-info=yes
+vgopts: --check-stack-var=yes --var-info=yes
prog: sem_as_mutex
Modified: branches/DARWIN/drd/tests/sem_as_mutex2.vgtest
===================================================================
--- branches/DARWIN/drd/tests/sem_as_mutex2.vgtest 2009-05-03 22:53:19 UTC (rev 9737)
+++ branches/DARWIN/drd/tests/sem_as_mutex2.vgtest 2009-05-03 23:14:55 UTC (rev 9738)
@@ -1,3 +1,4 @@
prereq: ./supported_libpthread
+vgopts: --check-stack-var=yes --var-info=yes
prog: sem_as_mutex
args: -m
Copied: branches/DARWIN/drd/tests/sem_as_mutex3.stderr.exp (from rev 9733, trunk/drd/tests/sem_as_mutex3.stderr.exp)
===================================================================
--- branches/DARWIN/drd/tests/sem_as_mutex3.stderr.exp (rev 0)
+++ branches/DARWIN/drd/tests/sem_as_mutex3.stderr.exp 2009-05-03 23:14:55 UTC (rev 9738)
@@ -0,0 +1,11 @@
+
+Conflicting load by thread 1/1 at 0x........ size 8
+ at 0x........: main (sem_as_mutex.c:?)
+Location 0x........ is 0 bytes inside local var "s_d3"
+declared at sem_as_mutex.c:25, in frame #? of thread 1
+Other segment start (thread 0/2)
+ (thread finished, call stack no longer available)
+Other segment end (thread 0/2)
+ (thread finished, call stack no longer available)
+
+ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Copied: branches/DARWIN/drd/tests/sem_as_mutex3.vgtest (from rev 9733, trunk/drd/tests/sem_as_mutex3.vgtest)
===================================================================
--- branches/DARWIN/drd/tests/sem_as_mutex3.vgtest (rev 0)
+++ branches/DARWIN/drd/tests/sem_as_mutex3.vgtest 2009-05-03 23:14:55 UTC (rev 9738)
@@ -0,0 +1,3 @@
+prereq: ./supported_libpthread
+vgopts: --check-stack-var=yes --first-race-only=yes --var-info=yes
+prog: sem_as_mutex
Modified: branches/DARWIN/memcheck/tests/linux/timerfd-syscall.c
===================================================================
--- branches/DARWIN/memcheck/tests/linux/timerfd-syscall.c 2009-05-03 22:53:19 UTC (rev 9737)
+++ branches/DARWIN/memcheck/tests/linux/timerfd-syscall.c 2009-05-03 23:14:55 UTC (rev 9738)
@@ -57,14 +57,23 @@
#ifndef __NR_timerfd_create
#if defined(__x86_64__)
#define __NR_timerfd_create 283
+#elif defined(__i386__)
+#define __NR_timerfd_create 322
+#elif defined(__powerpc__)
+#define __NR_timerfd_create 306
+#else
+#error Cannot detect your architecture!
+#endif
+#endif
+
+#ifndef __NR_timerfd_settime
+#if defined(__x86_64__)
#define __NR_timerfd_settime 286
#define __NR_timerfd_gettime 287
#elif defined(__i386__)
-#define __NR_timerfd_create 322
#define __NR_timerfd_settime 325
#define __NR_timerfd_gettime 326
#elif defined(__powerpc__)
-#define __NR_timerfd_create 306
#define __NR_timerfd_settime 311
#define __NR_timerfd_gettime 312
#else
|
|
From: <sv...@va...> - 2009-05-03 22:53:25
|
Author: njn
Date: 2009-05-03 23:53:19 +0100 (Sun, 03 May 2009)
New Revision: 9737
Log:
Merge part of r9709 (m_signals.c clean-ups) from the DARWIN branch.
Modified:
trunk/coregrind/m_signals.c
trunk/none/tests/Makefile.am
Modified: trunk/coregrind/m_signals.c
===================================================================
--- trunk/coregrind/m_signals.c 2009-05-03 18:50:29 UTC (rev 9736)
+++ trunk/coregrind/m_signals.c 2009-05-03 22:53:19 UTC (rev 9737)
@@ -1757,12 +1757,12 @@
}
static
-void sync_signalhandler_from_outside ( ThreadId tid,
+void sync_signalhandler_from_user ( ThreadId tid,
Int sigNo, vki_siginfo_t *info, struct vki_ucontext *uc )
{
ThreadId qtid;
- /* If some user-process sent us a sync signal (ie, they're not the result
+ /* If some user-process sent us a sync signal (ie. it's not the result
of a faulting instruction), then how we treat it depends on when it
arrives... */
@@ -1890,7 +1890,7 @@
}
static
-void sync_signalhandler_from_inside ( ThreadId tid,
+void sync_signalhandler_from_kernel ( ThreadId tid,
Int sigNo, vki_siginfo_t *info, struct vki_ucontext *uc )
{
/* Check to see if some part of Valgrind itself is interested in faults.
@@ -1963,7 +1963,7 @@
vki_siginfo_t *info, struct vki_ucontext *uc )
{
ThreadId tid = VG_(lwpid_to_vgtid)(VG_(gettid)());
- Bool from_outside;
+ Bool from_user;
if (0)
VG_(printf)("sync_sighandler(%d, %p, %p)\n", sigNo, info, uc);
@@ -1978,14 +1978,14 @@
info->si_code = sanitize_si_code(info->si_code);
- from_outside = !is_signal_from_kernel(info->si_code);
+ from_user = !is_signal_from_kernel(info->si_code);
if (VG_(clo_trace_signals)) {
VG_DMSG("sync signal handler: "
"signal=%d, si_code=%d, EIP=%#lx, eip=%#lx, from %s",
sigNo, info->si_code, VG_(get_IP)(tid),
VG_UCONTEXT_INSTR_PTR(uc),
- ( from_outside ? "outside" : "inside" ));
+ ( from_user ? "user" : "kernel" ));
}
vg_assert(sigNo >= 1 && sigNo <= VG_(max_signal));
@@ -2005,10 +2005,10 @@
(Why do we care?) If the signal is from the user rather than the
kernel, then treat it more like an async signal than a sync signal --
that is, merely queue it for later delivery. */
- if (from_outside) {
- sync_signalhandler_from_outside(tid, sigNo, info, uc);
+ if (from_user) {
+ sync_signalhandler_from_user(tid, sigNo, info, uc);
} else {
- sync_signalhandler_from_inside( tid, sigNo, info, uc);
+ sync_signalhandler_from_kernel( tid, sigNo, info, uc);
}
}
Modified: trunk/none/tests/Makefile.am
===================================================================
--- trunk/none/tests/Makefile.am 2009-05-03 18:50:29 UTC (rev 9736)
+++ trunk/none/tests/Makefile.am 2009-05-03 22:53:19 UTC (rev 9737)
@@ -130,7 +130,8 @@
check_PROGRAMS = \
ansi args \
- async-sigs bitfield1 \
+ async-sigs \
+ bitfield1 \
bug129866 \
closeall coolo_strlen \
discard exec-sigmask execve faultstatus fcntl_setown \
|
|
From: <sv...@va...> - 2009-05-03 18:50:40
|
Author: bart
Date: 2009-05-03 19:50:29 +0100 (Sun, 03 May 2009)
New Revision: 9736
Log:
Removed support for computed bitmaps.
Modified:
branches/DRDDEV/drd/drd_bitmap.c
branches/DRDDEV/drd/drd_bitmap.h
branches/DRDDEV/drd/pub_drd_bitmap.h
Modified: branches/DRDDEV/drd/drd_bitmap.c
===================================================================
--- branches/DRDDEV/drd/drd_bitmap.c 2009-05-03 18:33:45 UTC (rev 9735)
+++ branches/DRDDEV/drd/drd_bitmap.c 2009-05-03 18:50:29 UTC (rev 9736)
@@ -59,16 +59,6 @@
struct bitmap* DRD_(bm_new)()
{
- return bm_new_cb(0);
-}
-
-/** Allocate and initialize a new bitmap structure.
- *
- * @param compute_bitmap2 Callback function for computing the actual bitmap
- * data.
- */
-struct bitmap* bm_new_cb(void (*compute_bitmap2)(UWord, struct bitmap2*))
-{
unsigned i;
struct bitmap* bm;
@@ -89,7 +79,6 @@
}
bm->oset = VG_(OSetGen_Create)(0, 0, VG_(malloc), "drd.bitmap.bn.2",
VG_(free));
- bm->compute_bitmap2 = compute_bitmap2;
s_bitmap_creation_count++;
Modified: branches/DRDDEV/drd/drd_bitmap.h
===================================================================
--- branches/DRDDEV/drd/drd_bitmap.h 2009-05-03 18:33:45 UTC (rev 9735)
+++ branches/DRDDEV/drd/drd_bitmap.h 2009-05-03 18:50:29 UTC (rev 9736)
@@ -65,7 +65,7 @@
/** Number of bits assigned to the least significant component of an address.
*/
-#define ADDR_LSB_BITS 12
+#define ADDR_LSB_BITS 14
/** Mask that has to be applied to an address of type Addr in order to
* compute the least significant part of an address split, after having
@@ -318,7 +318,6 @@
{
struct bm_cache_elem cache[N_CACHE_ELEM];
OSet* oset;
- void (*compute_bitmap2)(const UWord a1, struct bitmap2* bm2);
};
@@ -491,18 +490,7 @@
if (! bm_cache_lookup(bm, a1, &bm2))
{
bm2 = VG_(OSetGen_Lookup)(bm->oset, &a1);
- if (bm2 == 0 && bm->compute_bitmap2)
- {
- bm2 = bm2_insert(bm, a1);
- bm2_clear(bm2);
- /* Compute the second-level bitmap, and insert the pointer to the
- * computed bitmap. Note: this pointer may be NULL. */
- (*bm->compute_bitmap2)(a1, bm2);
- }
- else
- {
- bm_update_cache(bm, a1, bm2);
- }
+ bm_update_cache(bm, a1, bm2);
}
return bm2;
}
@@ -521,7 +509,6 @@
#ifdef ENABLE_DRD_CONSISTENCY_CHECKS
tl_assert(bm);
- tl_assert(bm->compute_bitmap2 == 0);
#endif
if (! bm_cache_lookup(bm, a1, &bm2))
@@ -581,7 +568,6 @@
#ifdef ENABLE_DRD_CONSISTENCY_CHECKS
tl_assert(bm);
- tl_assert(bm->compute_bitmap2 == 0);
#endif
if (bm_cache_lookup(bm, a1, &bm2))
@@ -626,7 +612,6 @@
#ifdef ENABLE_DRD_CONSISTENCY_CHECKS
tl_assert(bm);
- tl_assert(bm->compute_bitmap2 == 0);
#endif
bm2 = bm2_lookup_or_insert_exclusive(bm, address_msb(a1));
@@ -643,7 +628,6 @@
#ifdef ENABLE_DRD_CONSISTENCY_CHECKS
tl_assert(bm);
- tl_assert(bm->compute_bitmap2 == 0);
#endif
bm2 = bm2_lookup_or_insert_exclusive(bm, address_msb(a1));
Modified: branches/DRDDEV/drd/pub_drd_bitmap.h
===================================================================
--- branches/DRDDEV/drd/pub_drd_bitmap.h 2009-05-03 18:33:45 UTC (rev 9735)
+++ branches/DRDDEV/drd/pub_drd_bitmap.h 2009-05-03 18:50:29 UTC (rev 9736)
@@ -62,7 +62,6 @@
/* Function declarations. */
struct bitmap* DRD_(bm_new)(void);
-struct bitmap* bm_new_cb(void (*compute_bitmap2)(UWord, struct bitmap2*));
void DRD_(bm_delete)(struct bitmap* const bm);
void DRD_(bm_access_range)(struct bitmap* const bm,
const Addr a1, const Addr a2,
|
|
From: <sv...@va...> - 2009-05-03 18:33:55
|
Author: bart
Date: 2009-05-03 19:33:45 +0100 (Sun, 03 May 2009)
New Revision: 9735
Log:
Added more tests.
Modified:
branches/DRDDEV/drd/tests/drd_bitmap_test.c
Modified: branches/DRDDEV/drd/tests/drd_bitmap_test.c
===================================================================
--- branches/DRDDEV/drd/tests/drd_bitmap_test.c 2009-05-03 18:33:20 UTC (rev 9734)
+++ branches/DRDDEV/drd/tests/drd_bitmap_test.c 2009-05-03 18:33:45 UTC (rev 9735)
@@ -219,11 +219,6 @@
DRD_(bm_access_range_store)(bm1, i, j);
DRD_(bm_clear)(bm1, i, j);
assert(bm_equal_print_diffs(bm1, bm2));
-
- DRD_(bm_access_range_load)(bm1, i, j);
- DRD_(bm_access_range_store)(bm1, i, j);
- DRD_(bm_clear)(bm1, i, j);
- assert(bm_equal_print_diffs(bm1, bm2));
DRD_(bm_access_load_1)(bm1, i);
DRD_(bm_access_store_1)(bm1, i);
DRD_(bm_clear)(bm1, i, i+1);
@@ -267,6 +262,7 @@
DRD_(bm_clear_load)(bm1, i, i+8);
DRD_(bm_access_load_8)(bm1, i);
assert(bm_equal_print_diffs(bm1, bm2));
+
DRD_(bm_clear_store)(bm1, i, j);
DRD_(bm_access_range_store)(bm1, i, j);
assert(bm_equal_print_diffs(bm1, bm2));
@@ -282,6 +278,11 @@
DRD_(bm_clear_store)(bm1, i, i+8);
DRD_(bm_access_store_8)(bm1, i);
assert(bm_equal_print_diffs(bm1, bm2));
+
+ DRD_(bm_clear)(bm1, i, j);
+ DRD_(bm_access_range_load)(bm1, i, j);
+ DRD_(bm_access_range_store)(bm1, i, j);
+ assert(bm_equal_print_diffs(bm1, bm2));
}
}
DRD_(bm_delete)(bm2);
|
|
From: <sv...@va...> - 2009-05-03 18:33:28
|
Author: bart
Date: 2009-05-03 19:33:20 +0100 (Sun, 03 May 2009)
New Revision: 9734
Log:
Fixed an assertion failure / added more comments.
Modified:
branches/DRDDEV/drd/drd_bitmap.h
Modified: branches/DRDDEV/drd/drd_bitmap.h
===================================================================
--- branches/DRDDEV/drd/drd_bitmap.h 2009-05-03 18:07:07 UTC (rev 9733)
+++ branches/DRDDEV/drd/drd_bitmap.h 2009-05-03 18:33:20 UTC (rev 9734)
@@ -213,8 +213,10 @@
bm0[uword_msb(a)] |= (UWord)1 << uword_lsb(a);
}
-/** Set the bits corresponding to all of the addresses in range
- * [ a .. a + size [ in bitmap bm0.
+/**
+ * Set the bits corresponding to all of the addresses in range
+ * [ a << ADDR_IGNORED_BITS .. (a + size) << ADDR_IGNORED_BITS [
+ * in bitmap bm0.
*/
static __inline__ void bm0_set_range(UWord* bm0,
const UWord a, const SizeT size)
@@ -238,13 +240,17 @@
bm0[uword_msb(a)] &= ~((UWord)1 << uword_lsb(a));
}
-/** Clear all of the addresses in range [ a .. a + size [ in bitmap bm0. */
+/**
+ * Clear all of the addresses in range
+ * [ a << ADDR_IGNORED_BITS .. (a + size) << ADDR_IGNORED_BITS [
+ * in bitmap bm0.
+ */
static __inline__ void bm0_clear_range(UWord* bm0,
const UWord a, const SizeT size)
{
#ifdef ENABLE_DRD_CONSISTENCY_CHECKS
tl_assert(address_msb(make_address(0, a)) == 0);
- tl_assert(address_msb(make_address(0, a) + size) == 0);
+ tl_assert(size == 0 || address_msb(make_address(0, a + size - 1)) == 0);
tl_assert(size == 0 || uword_msb(a) == uword_msb(a + size - 1));
#endif
/*
@@ -268,7 +274,11 @@
return (bm0[uword_msb(a)] & ((UWord)1 << uword_lsb(a)));
}
-/** Return true if any of the bits [ a .. a+size [ are set in bm0. */
+/**
+ * Return true if a bit corresponding to any of the addresses in range
+ * [ a << ADDR_IGNORED_BITS .. (a + size) << ADDR_IGNORED_BITS [
+ * is set in bm0.
+ */
static __inline__ UWord bm0_is_any_set(const UWord* bm0,
const Addr a, const SizeT size)
{
|
|
From: <sv...@va...> - 2009-05-03 18:07:14
|
Author: bart
Date: 2009-05-03 19:07:07 +0100 (Sun, 03 May 2009)
New Revision: 9733
Log:
Added more test code.
Modified:
trunk/drd/tests/drd_bitmap_test.c
Modified: trunk/drd/tests/drd_bitmap_test.c
===================================================================
--- trunk/drd/tests/drd_bitmap_test.c 2009-05-03 17:58:38 UTC (rev 9732)
+++ trunk/drd/tests/drd_bitmap_test.c 2009-05-03 18:07:07 UTC (rev 9733)
@@ -74,7 +74,7 @@
int equal;
equal = DRD_(bm_equal)(bm1, bm2);
- if (! equal)
+ if (s_verbose && ! equal)
{
VG_(printf)("Bitmaps are different.\n");
VG_(printf)("Bitmap 1:\n");
@@ -167,16 +167,17 @@
struct bitmap* bm1;
struct bitmap* bm2;
+ const Addr lb = ADDR0_COUNT - 2 * BITS_PER_UWORD;
+ const Addr ub = ADDR0_COUNT + 2 * BITS_PER_UWORD;
+
assert(outer_loop_step >= 1);
assert(inner_loop_step >= 1);
bm1 = DRD_(bm_new)();
bm2 = DRD_(bm_new)();
- for (i = ADDR0_COUNT - 2 * BITS_PER_UWORD;
- i < ADDR0_COUNT + 2 * BITS_PER_UWORD;
- i += outer_loop_step)
+ for (i = lb; i < ub; i += outer_loop_step)
{
- for (j = i + 1; j < ADDR0_COUNT + 2 * BITS_PER_UWORD; j += inner_loop_step)
+ for (j = i + 1; j < ub; j += inner_loop_step)
{
DRD_(bm_access_range_load)(bm1, i, j);
DRD_(bm_clear_load)(bm1, i, j);
@@ -240,7 +241,7 @@
i < ADDR0_COUNT + 2 * BITS_PER_UWORD;
i += outer_loop_step)
{
- for (j = i + 1; j < ADDR0_COUNT + 2 * BITS_PER_UWORD; j += inner_loop_step)
+ for (j = i + 1; j < ub; j += inner_loop_step)
{
DRD_(bm_clear_load)(bm1, i, j);
DRD_(bm_access_range_load)(bm1, i, j);
@@ -257,6 +258,7 @@
DRD_(bm_clear_load)(bm1, i, i+8);
DRD_(bm_access_load_8)(bm1, i);
assert(bm_equal_print_diffs(bm1, bm2));
+
DRD_(bm_clear_store)(bm1, i, j);
DRD_(bm_access_range_store)(bm1, i, j);
assert(bm_equal_print_diffs(bm1, bm2));
@@ -272,6 +274,11 @@
DRD_(bm_clear_store)(bm1, i, i+8);
DRD_(bm_access_store_8)(bm1, i);
assert(bm_equal_print_diffs(bm1, bm2));
+
+ DRD_(bm_clear)(bm1, i, j);
+ DRD_(bm_access_range_load)(bm1, i, j);
+ DRD_(bm_access_range_store)(bm1, i, j);
+ assert(bm_equal_print_diffs(bm1, bm2));
}
}
DRD_(bm_delete)(bm2);
|
|
From: <sv...@va...> - 2009-05-03 17:58:46
|
Author: bart Date: 2009-05-03 18:58:38 +0100 (Sun, 03 May 2009) New Revision: 9732 Log: Merged trunk revisions r9713:9731. Added: branches/DRDDEV/drd/tests/sem_as_mutex3.stderr.exp branches/DRDDEV/drd/tests/sem_as_mutex3.vgtest Modified: branches/DRDDEV/drd/tests/Makefile.am branches/DRDDEV/drd/tests/sem_as_mutex.vgtest branches/DRDDEV/drd/tests/sem_as_mutex2.vgtest Modified: branches/DRDDEV/drd/tests/Makefile.am =================================================================== --- branches/DRDDEV/drd/tests/Makefile.am 2009-05-03 17:54:47 UTC (rev 9731) +++ branches/DRDDEV/drd/tests/Makefile.am 2009-05-03 17:58:38 UTC (rev 9732) @@ -136,6 +136,8 @@ sem_as_mutex.vgtest \ sem_as_mutex2.stderr.exp \ sem_as_mutex2.vgtest \ + sem_as_mutex3.stderr.exp \ + sem_as_mutex3.vgtest \ sigalrm.stderr.exp \ sigalrm.vgtest \ tc01_simple_race.stderr.exp \ @@ -175,7 +177,8 @@ tc17_sembar.vgtest \ tc18_semabuse.stderr.exp \ tc18_semabuse.vgtest \ - tc19_shadowmem.stderr.exp \ + tc19_shadowmem.stderr.exp-32bit \ + tc19_shadowmem.stderr.exp-64bit \ tc19_shadowmem.vgtest \ tc20_verifywrap.stderr.exp-glibc2.3 \ tc20_verifywrap.stderr.exp-glibc2.5 \ Modified: branches/DRDDEV/drd/tests/sem_as_mutex.vgtest =================================================================== --- branches/DRDDEV/drd/tests/sem_as_mutex.vgtest 2009-05-03 17:54:47 UTC (rev 9731) +++ branches/DRDDEV/drd/tests/sem_as_mutex.vgtest 2009-05-03 17:58:38 UTC (rev 9732) @@ -1,3 +1,3 @@ prereq: ./supported_libpthread -vgopts: --var-info=yes +vgopts: --check-stack-var=yes --var-info=yes prog: sem_as_mutex Modified: branches/DRDDEV/drd/tests/sem_as_mutex2.vgtest =================================================================== --- branches/DRDDEV/drd/tests/sem_as_mutex2.vgtest 2009-05-03 17:54:47 UTC (rev 9731) +++ branches/DRDDEV/drd/tests/sem_as_mutex2.vgtest 2009-05-03 17:58:38 UTC (rev 9732) @@ -1,3 +1,4 @@ prereq: ./supported_libpthread +vgopts: --check-stack-var=yes --var-info=yes prog: sem_as_mutex args: -m Copied: branches/DRDDEV/drd/tests/sem_as_mutex3.stderr.exp (from rev 9731, trunk/drd/tests/sem_as_mutex3.stderr.exp) =================================================================== --- branches/DRDDEV/drd/tests/sem_as_mutex3.stderr.exp (rev 0) +++ branches/DRDDEV/drd/tests/sem_as_mutex3.stderr.exp 2009-05-03 17:58:38 UTC (rev 9732) @@ -0,0 +1,11 @@ + +Conflicting load by thread 1/1 at 0x........ size 8 + at 0x........: main (sem_as_mutex.c:?) +Location 0x........ is 0 bytes inside local var "s_d3" +declared at sem_as_mutex.c:25, in frame #? of thread 1 +Other segment start (thread 0/2) + (thread finished, call stack no longer available) +Other segment end (thread 0/2) + (thread finished, call stack no longer available) + +ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0) Copied: branches/DRDDEV/drd/tests/sem_as_mutex3.vgtest (from rev 9731, trunk/drd/tests/sem_as_mutex3.vgtest) =================================================================== --- branches/DRDDEV/drd/tests/sem_as_mutex3.vgtest (rev 0) +++ branches/DRDDEV/drd/tests/sem_as_mutex3.vgtest 2009-05-03 17:58:38 UTC (rev 9732) @@ -0,0 +1,3 @@ +prereq: ./supported_libpthread +vgopts: --check-stack-var=yes --first-race-only=yes --var-info=yes +prog: sem_as_mutex |
|
From: <sv...@va...> - 2009-05-03 17:54:54
|
Author: bart Date: 2009-05-03 18:54:47 +0100 (Sun, 03 May 2009) New Revision: 9731 Log: Un-break 'make dist'. Modified: trunk/drd/tests/Makefile.am Modified: trunk/drd/tests/Makefile.am =================================================================== --- trunk/drd/tests/Makefile.am 2009-05-03 17:43:55 UTC (rev 9730) +++ trunk/drd/tests/Makefile.am 2009-05-03 17:54:47 UTC (rev 9731) @@ -177,7 +177,8 @@ tc17_sembar.vgtest \ tc18_semabuse.stderr.exp \ tc18_semabuse.vgtest \ - tc19_shadowmem.stderr.exp \ + tc19_shadowmem.stderr.exp-32bit \ + tc19_shadowmem.stderr.exp-64bit \ tc19_shadowmem.vgtest \ tc20_verifywrap.stderr.exp-glibc2.3 \ tc20_verifywrap.stderr.exp-glibc2.5 \ |
|
From: <sv...@va...> - 2009-05-03 17:44:02
|
Author: bart Date: 2009-05-03 18:43:55 +0100 (Sun, 03 May 2009) New Revision: 9730 Log: Added regression test for the new DRD command-line option --first-race-only. Added: trunk/drd/tests/sem_as_mutex3.stderr.exp trunk/drd/tests/sem_as_mutex3.vgtest Modified: trunk/drd/tests/Makefile.am trunk/drd/tests/sem_as_mutex.vgtest trunk/drd/tests/sem_as_mutex2.vgtest Modified: trunk/drd/tests/Makefile.am =================================================================== --- trunk/drd/tests/Makefile.am 2009-05-03 17:35:03 UTC (rev 9729) +++ trunk/drd/tests/Makefile.am 2009-05-03 17:43:55 UTC (rev 9730) @@ -136,6 +136,8 @@ sem_as_mutex.vgtest \ sem_as_mutex2.stderr.exp \ sem_as_mutex2.vgtest \ + sem_as_mutex3.stderr.exp \ + sem_as_mutex3.vgtest \ sigalrm.stderr.exp \ sigalrm.vgtest \ tc01_simple_race.stderr.exp \ Modified: trunk/drd/tests/sem_as_mutex.vgtest =================================================================== --- trunk/drd/tests/sem_as_mutex.vgtest 2009-05-03 17:35:03 UTC (rev 9729) +++ trunk/drd/tests/sem_as_mutex.vgtest 2009-05-03 17:43:55 UTC (rev 9730) @@ -1,3 +1,3 @@ prereq: ./supported_libpthread -vgopts: --var-info=yes +vgopts: --check-stack-var=yes --var-info=yes prog: sem_as_mutex Modified: trunk/drd/tests/sem_as_mutex2.vgtest =================================================================== --- trunk/drd/tests/sem_as_mutex2.vgtest 2009-05-03 17:35:03 UTC (rev 9729) +++ trunk/drd/tests/sem_as_mutex2.vgtest 2009-05-03 17:43:55 UTC (rev 9730) @@ -1,3 +1,4 @@ prereq: ./supported_libpthread +vgopts: --check-stack-var=yes --var-info=yes prog: sem_as_mutex args: -m Added: trunk/drd/tests/sem_as_mutex3.stderr.exp =================================================================== --- trunk/drd/tests/sem_as_mutex3.stderr.exp (rev 0) +++ trunk/drd/tests/sem_as_mutex3.stderr.exp 2009-05-03 17:43:55 UTC (rev 9730) @@ -0,0 +1,11 @@ + +Conflicting load by thread 1/1 at 0x........ size 8 + at 0x........: main (sem_as_mutex.c:?) +Location 0x........ is 0 bytes inside local var "s_d3" +declared at sem_as_mutex.c:25, in frame #? of thread 1 +Other segment start (thread 0/2) + (thread finished, call stack no longer available) +Other segment end (thread 0/2) + (thread finished, call stack no longer available) + +ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0) Added: trunk/drd/tests/sem_as_mutex3.vgtest =================================================================== --- trunk/drd/tests/sem_as_mutex3.vgtest (rev 0) +++ trunk/drd/tests/sem_as_mutex3.vgtest 2009-05-03 17:43:55 UTC (rev 9730) @@ -0,0 +1,3 @@ +prereq: ./supported_libpthread +vgopts: --check-stack-var=yes --first-race-only=yes --var-info=yes +prog: sem_as_mutex |
|
From: <sv...@va...> - 2009-05-03 17:35:08
|
Author: bart
Date: 2009-05-03 18:35:03 +0100 (Sun, 03 May 2009)
New Revision: 9729
Log:
Command-line option --first-race-only works again.
Modified:
branches/DRDDEV/drd/drd_load_store.c
branches/DRDDEV/drd/drd_load_store.h
branches/DRDDEV/drd/drd_main.c
Modified: branches/DRDDEV/drd/drd_load_store.c
===================================================================
--- branches/DRDDEV/drd/drd_load_store.c 2009-05-03 17:17:37 UTC (rev 9728)
+++ branches/DRDDEV/drd/drd_load_store.c 2009-05-03 17:35:03 UTC (rev 9729)
@@ -53,22 +53,34 @@
/* Local variables. */
-static Bool DRD_(s_check_stack_accesses) = False;
+static Bool s_check_stack_accesses = False;
+static Bool s_first_race_only = False;
/* Function definitions. */
Bool DRD_(get_check_stack_accesses)()
{
- return DRD_(s_check_stack_accesses);
+ return s_check_stack_accesses;
}
void DRD_(set_check_stack_accesses)(const Bool c)
{
tl_assert(c == False || c == True);
- DRD_(s_check_stack_accesses) = c;
+ s_check_stack_accesses = c;
}
+Bool DRD_(get_first_race_only)()
+{
+ return s_first_race_only;
+}
+
+void DRD_(set_first_race_only)(const Bool fro)
+{
+ tl_assert(fro == False || fro == True);
+ s_first_race_only = fro;
+}
+
void DRD_(trace_mem_access)(const Addr addr, const SizeT size,
const BmAccessTypeT access_type)
{
@@ -124,6 +136,11 @@
VG_(get_IP)(VG_(get_running_tid)()),
"Conflicting accesses",
&drei);
+
+ if (s_first_race_only)
+ {
+ DRD_(start_suppression)(addr, addr + size, "first race only");
+ }
}
VG_REGPARM(2) void DRD_(trace_load)(Addr addr, SizeT size)
@@ -135,7 +152,7 @@
#endif
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_load_triggers_conflict(addr, addr + size)
&& ! DRD_(is_suppressed)(addr, addr + size))
@@ -147,7 +164,7 @@
static VG_REGPARM(1) void drd_trace_load_1(Addr addr)
{
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_load_1_triggers_conflict(addr)
&& ! DRD_(is_suppressed)(addr, addr + 1))
@@ -159,7 +176,7 @@
static VG_REGPARM(1) void drd_trace_load_2(Addr addr)
{
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_load_2_triggers_conflict(addr)
&& ! DRD_(is_suppressed)(addr, addr + 2))
@@ -171,7 +188,7 @@
static VG_REGPARM(1) void drd_trace_load_4(Addr addr)
{
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_load_4_triggers_conflict(addr)
&& ! DRD_(is_suppressed)(addr, addr + 4))
@@ -183,7 +200,7 @@
static VG_REGPARM(1) void drd_trace_load_8(Addr addr)
{
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_load_8_triggers_conflict(addr)
&& ! DRD_(is_suppressed)(addr, addr + 8))
@@ -201,7 +218,7 @@
#endif
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_store_triggers_conflict(addr, addr + size)
&& ! DRD_(is_suppressed)(addr, addr + size))
@@ -213,7 +230,7 @@
static VG_REGPARM(1) void drd_trace_store_1(Addr addr)
{
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_store_1_triggers_conflict(addr)
&& ! DRD_(is_suppressed)(addr, addr + 1))
@@ -225,7 +242,7 @@
static VG_REGPARM(1) void drd_trace_store_2(Addr addr)
{
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_store_2_triggers_conflict(addr)
&& ! DRD_(is_suppressed)(addr, addr + 2))
@@ -237,7 +254,7 @@
static VG_REGPARM(1) void drd_trace_store_4(Addr addr)
{
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_store_4_triggers_conflict(addr)
&& ! DRD_(is_suppressed)(addr, addr + 4))
@@ -249,7 +266,7 @@
static VG_REGPARM(1) void drd_trace_store_8(Addr addr)
{
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_store_8_triggers_conflict(addr)
&& ! DRD_(is_suppressed)(addr, addr + 8))
@@ -310,7 +327,7 @@
mkIRExpr_HWord(size)))));
}
- if (! DRD_(s_check_stack_accesses) && is_stack_access(bb, addr_expr))
+ if (! s_check_stack_accesses && is_stack_access(bb, addr_expr))
return;
switch (size)
@@ -375,7 +392,7 @@
mkIRExpr_HWord(size)))));
}
- if (! DRD_(s_check_stack_accesses) && is_stack_access(bb, addr_expr))
+ if (! s_check_stack_accesses && is_stack_access(bb, addr_expr))
return;
switch (size)
Modified: branches/DRDDEV/drd/drd_load_store.h
===================================================================
--- branches/DRDDEV/drd/drd_load_store.h 2009-05-03 17:17:37 UTC (rev 9728)
+++ branches/DRDDEV/drd/drd_load_store.h 2009-05-03 17:35:03 UTC (rev 9729)
@@ -38,6 +38,8 @@
Bool DRD_(get_check_stack_accesses)(void);
void DRD_(set_check_stack_accesses)(const Bool c);
+Bool DRD_(get_first_race_only)(void);
+void DRD_(set_first_race_only)(const Bool fro);
IRSB* DRD_(instrument)(VgCallbackClosure* const closure,
IRSB* const bb_in,
VexGuestLayout* const layout,
Modified: branches/DRDDEV/drd/drd_main.c
===================================================================
--- branches/DRDDEV/drd/drd_main.c 2009-05-03 17:17:37 UTC (rev 9728)
+++ branches/DRDDEV/drd/drd_main.c 2009-05-03 17:35:03 UTC (rev 9729)
@@ -55,7 +55,6 @@
/* Local variables. */
-static Bool DRD_(s_first_race_only) = False;
static Bool DRD_(s_print_stats) = False;
static Bool DRD_(s_var_info) = False;
static Bool DRD_(s_show_stack_usage) = False;
@@ -68,6 +67,7 @@
{
int check_stack_accesses = -1;
int exclusive_threshold_ms = -1;
+ int first_race_only = -1;
int report_signal_unlocked = -1;
int segment_merging = -1;
int shared_threshold_ms = -1;
@@ -87,7 +87,7 @@
if VG_BOOL_CLO(arg, "--check-stack-var", check_stack_accesses) {}
else if VG_BOOL_CLO(arg, "--drd-stats", DRD_(s_print_stats)) {}
- else if VG_BOOL_CLO(arg, "--first-race-only", DRD_(s_first_race_only)) {}
+ else if VG_BOOL_CLO(arg, "--first-race-only", first_race_only) {}
else if VG_BOOL_CLO(arg,"--report-signal-unlocked",report_signal_unlocked) {}
else if VG_BOOL_CLO(arg, "--segment-merging", segment_merging) {}
else if VG_BOOL_CLO(arg, "--show-confl-seg", show_confl_seg) {}
@@ -118,6 +118,10 @@
DRD_(mutex_set_lock_threshold)(exclusive_threshold_ms);
DRD_(rwlock_set_exclusive_threshold)(exclusive_threshold_ms);
}
+ if (first_race_only != -1)
+ {
+ DRD_(set_first_race_only)(first_race_only);
+ }
if (report_signal_unlocked != -1)
{
DRD_(cond_set_report_signal_unlocked)(report_signal_unlocked);
@@ -567,13 +571,13 @@
DRD_(thread_get_context_switch_count)(),
update_conflict_set_count);
VG_(message)(Vg_UserMsg,
- " (%lld new sg + %lld combine vc + %lld csw);",
+ " (%lld new sg + %lld combine vc + %lld csw).",
dsnsc,
dscvc,
update_conflict_set_count - dsnsc - dscvc);
VG_(message)(Vg_UserMsg,
" segments: created %lld segments, max %lld alive,"
- " %lld discard points,",
+ " %lld discard points.",
DRD_(sg_get_segments_created_count)(),
DRD_(sg_get_max_segments_alive_count)(),
DRD_(thread_get_discard_ordered_segments_count)());
@@ -591,7 +595,7 @@
DRD_(bm_get_bitmap_creation_count)(),
DRD_(bm_get_bitmap2_node_creation_count)());
VG_(message)(Vg_UserMsg,
- " %lld level 2 bitmaps were allocated.",
+ " and %lld level 2 bitmaps were allocated.",
DRD_(bm_get_bitmap2_creation_count)());
VG_(message)(Vg_UserMsg,
" mutex: %lld non-recursive lock/unlock events.",
|
|
From: <sv...@va...> - 2009-05-03 17:17:51
|
Author: bart
Date: 2009-05-03 18:17:37 +0100 (Sun, 03 May 2009)
New Revision: 9728
Log:
Added command-line option --first-race-only.
Modified:
trunk/drd/drd_load_store.c
trunk/drd/drd_load_store.h
trunk/drd/drd_main.c
Modified: trunk/drd/drd_load_store.c
===================================================================
--- trunk/drd/drd_load_store.c 2009-05-03 17:07:34 UTC (rev 9727)
+++ trunk/drd/drd_load_store.c 2009-05-03 17:17:37 UTC (rev 9728)
@@ -53,22 +53,34 @@
/* Local variables. */
-static Bool DRD_(s_check_stack_accesses) = False;
+static Bool s_check_stack_accesses = False;
+static Bool s_first_race_only = False;
/* Function definitions. */
Bool DRD_(get_check_stack_accesses)()
{
- return DRD_(s_check_stack_accesses);
+ return s_check_stack_accesses;
}
void DRD_(set_check_stack_accesses)(const Bool c)
{
tl_assert(c == False || c == True);
- DRD_(s_check_stack_accesses) = c;
+ s_check_stack_accesses = c;
}
+Bool DRD_(get_first_race_only)()
+{
+ return s_first_race_only;
+}
+
+void DRD_(set_first_race_only)(const Bool fro)
+{
+ tl_assert(fro == False || fro == True);
+ s_first_race_only = fro;
+}
+
void DRD_(trace_mem_access)(const Addr addr, const SizeT size,
const BmAccessTypeT access_type)
{
@@ -124,6 +136,11 @@
VG_(get_IP)(VG_(get_running_tid)()),
"Conflicting accesses",
&drei);
+
+ if (s_first_race_only)
+ {
+ DRD_(start_suppression)(addr, addr + size, "first race only");
+ }
}
VG_REGPARM(2) void DRD_(trace_load)(Addr addr, SizeT size)
@@ -135,7 +152,7 @@
#endif
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_load_triggers_conflict(addr, addr + size)
&& ! DRD_(is_suppressed)(addr, addr + size))
@@ -147,7 +164,7 @@
static VG_REGPARM(1) void drd_trace_load_1(Addr addr)
{
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_load_1_triggers_conflict(addr)
&& ! DRD_(is_suppressed)(addr, addr + 1))
@@ -159,7 +176,7 @@
static VG_REGPARM(1) void drd_trace_load_2(Addr addr)
{
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_load_2_triggers_conflict(addr)
&& ! DRD_(is_suppressed)(addr, addr + 2))
@@ -171,7 +188,7 @@
static VG_REGPARM(1) void drd_trace_load_4(Addr addr)
{
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_load_4_triggers_conflict(addr)
&& ! DRD_(is_suppressed)(addr, addr + 4))
@@ -183,7 +200,7 @@
static VG_REGPARM(1) void drd_trace_load_8(Addr addr)
{
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_load_8_triggers_conflict(addr)
&& ! DRD_(is_suppressed)(addr, addr + 8))
@@ -201,7 +218,7 @@
#endif
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_store_triggers_conflict(addr, addr + size)
&& ! DRD_(is_suppressed)(addr, addr + size))
@@ -213,7 +230,7 @@
static VG_REGPARM(1) void drd_trace_store_1(Addr addr)
{
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_store_1_triggers_conflict(addr)
&& ! DRD_(is_suppressed)(addr, addr + 1))
@@ -225,7 +242,7 @@
static VG_REGPARM(1) void drd_trace_store_2(Addr addr)
{
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_store_2_triggers_conflict(addr)
&& ! DRD_(is_suppressed)(addr, addr + 2))
@@ -237,7 +254,7 @@
static VG_REGPARM(1) void drd_trace_store_4(Addr addr)
{
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_store_4_triggers_conflict(addr)
&& ! DRD_(is_suppressed)(addr, addr + 4))
@@ -249,7 +266,7 @@
static VG_REGPARM(1) void drd_trace_store_8(Addr addr)
{
if (DRD_(running_thread_is_recording)()
- && (DRD_(s_check_stack_accesses)
+ && (s_check_stack_accesses
|| ! DRD_(thread_address_on_stack)(addr))
&& bm_access_store_8_triggers_conflict(addr)
&& ! DRD_(is_suppressed)(addr, addr + 8))
@@ -310,7 +327,7 @@
mkIRExpr_HWord(size)))));
}
- if (! DRD_(s_check_stack_accesses) && is_stack_access(bb, addr_expr))
+ if (! s_check_stack_accesses && is_stack_access(bb, addr_expr))
return;
switch (size)
@@ -375,7 +392,7 @@
mkIRExpr_HWord(size)))));
}
- if (! DRD_(s_check_stack_accesses) && is_stack_access(bb, addr_expr))
+ if (! s_check_stack_accesses && is_stack_access(bb, addr_expr))
return;
switch (size)
Modified: trunk/drd/drd_load_store.h
===================================================================
--- trunk/drd/drd_load_store.h 2009-05-03 17:07:34 UTC (rev 9727)
+++ trunk/drd/drd_load_store.h 2009-05-03 17:17:37 UTC (rev 9728)
@@ -38,6 +38,8 @@
Bool DRD_(get_check_stack_accesses)(void);
void DRD_(set_check_stack_accesses)(const Bool c);
+Bool DRD_(get_first_race_only)(void);
+void DRD_(set_first_race_only)(const Bool fro);
IRSB* DRD_(instrument)(VgCallbackClosure* const closure,
IRSB* const bb_in,
VexGuestLayout* const layout,
Modified: trunk/drd/drd_main.c
===================================================================
--- trunk/drd/drd_main.c 2009-05-03 17:07:34 UTC (rev 9727)
+++ trunk/drd/drd_main.c 2009-05-03 17:17:37 UTC (rev 9728)
@@ -55,7 +55,6 @@
/* Local variables. */
-static Bool DRD_(s_first_race_only) = False;
static Bool DRD_(s_print_stats) = False;
static Bool DRD_(s_var_info) = False;
static Bool DRD_(s_show_stack_usage) = False;
@@ -68,6 +67,7 @@
{
int check_stack_accesses = -1;
int exclusive_threshold_ms = -1;
+ int first_race_only = -1;
int report_signal_unlocked = -1;
int segment_merging = -1;
int shared_threshold_ms = -1;
@@ -87,7 +87,7 @@
if VG_BOOL_CLO(arg, "--check-stack-var", check_stack_accesses) {}
else if VG_BOOL_CLO(arg, "--drd-stats", DRD_(s_print_stats)) {}
- else if VG_BOOL_CLO(arg, "--first-race-only", DRD_(s_first_race_only)) {}
+ else if VG_BOOL_CLO(arg, "--first-race-only", first_race_only) {}
else if VG_BOOL_CLO(arg,"--report-signal-unlocked",report_signal_unlocked) {}
else if VG_BOOL_CLO(arg, "--segment-merging", segment_merging) {}
else if VG_BOOL_CLO(arg, "--show-confl-seg", show_confl_seg) {}
@@ -118,6 +118,10 @@
DRD_(mutex_set_lock_threshold)(exclusive_threshold_ms);
DRD_(rwlock_set_exclusive_threshold)(exclusive_threshold_ms);
}
+ if (first_race_only != -1)
+ {
+ DRD_(set_first_race_only)(first_race_only);
+ }
if (report_signal_unlocked != -1)
{
DRD_(cond_set_report_signal_unlocked)(report_signal_unlocked);
|
|
From: <sv...@va...> - 2009-05-03 17:07:42
|
Author: bart
Date: 2009-05-03 18:07:34 +0100 (Sun, 03 May 2009)
New Revision: 9727
Log:
Added more statistics.
Modified:
trunk/drd/drd_main.c
trunk/drd/drd_segment.c
trunk/drd/drd_segment.h
Modified: trunk/drd/drd_main.c
===================================================================
--- trunk/drd/drd_main.c 2009-05-03 17:04:43 UTC (rev 9726)
+++ trunk/drd/drd_main.c 2009-05-03 17:07:34 UTC (rev 9727)
@@ -55,6 +55,7 @@
/* Local variables. */
+static Bool DRD_(s_first_race_only) = False;
static Bool DRD_(s_print_stats) = False;
static Bool DRD_(s_var_info) = False;
static Bool DRD_(s_show_stack_usage) = False;
@@ -86,6 +87,7 @@
if VG_BOOL_CLO(arg, "--check-stack-var", check_stack_accesses) {}
else if VG_BOOL_CLO(arg, "--drd-stats", DRD_(s_print_stats)) {}
+ else if VG_BOOL_CLO(arg, "--first-race-only", DRD_(s_first_race_only)) {}
else if VG_BOOL_CLO(arg,"--report-signal-unlocked",report_signal_unlocked) {}
else if VG_BOOL_CLO(arg, "--segment-merging", segment_merging) {}
else if VG_BOOL_CLO(arg, "--show-confl-seg", show_confl_seg) {}
@@ -166,6 +168,8 @@
" stack variables [no].\n"
" --exclusive-threshold=<n> Print an error message if any mutex or\n"
" writer lock is held longer than the specified time (in milliseconds).\n"
+" --first-race-only=yes|no Only report the first data race that occurs on\n"
+" a memory location instead of all races [no].\n"
" --report-signal-unlocked=yes|no Whether to report calls to\n"
" pthread_cond_signal() where the mutex associated\n"
" with the signal via pthread_cond_wait() is not\n"
@@ -574,6 +578,9 @@
DRD_(sg_get_max_segments_alive_count)(),
DRD_(thread_get_discard_ordered_segments_count)());
VG_(message)(Vg_UserMsg,
+ " %lld merges.",
+ DRD_(sg_get_segment_merge_count)());
+ VG_(message)(Vg_UserMsg,
" (%lld m, %lld rw, %lld s, %lld b)",
DRD_(get_mutex_segment_creation_count)(),
DRD_(get_rwlock_segment_creation_count)(),
Modified: trunk/drd/drd_segment.c
===================================================================
--- trunk/drd/drd_segment.c 2009-05-03 17:04:43 UTC (rev 9726)
+++ trunk/drd/drd_segment.c 2009-05-03 17:07:34 UTC (rev 9727)
@@ -38,6 +38,7 @@
/* Local variables. */
+static ULong s_segment_merge_count;
static ULong s_segments_created_count;
static ULong s_segments_alive_count;
static ULong s_max_segments_alive_count;
@@ -215,6 +216,8 @@
VG_(message)(Vg_UserMsg, "%s", msg);
}
+ s_segment_merge_count++;
+
// Keep sg1->stacktrace.
// Keep sg1->vc.
// Merge sg2->bm into sg1->bm.
@@ -258,3 +261,8 @@
{
return s_max_segments_alive_count;
}
+
+ULong DRD_(sg_get_segment_merge_count)(void)
+{
+ return s_segment_merge_count;
+}
Modified: trunk/drd/drd_segment.h
===================================================================
--- trunk/drd/drd_segment.h 2009-05-03 17:04:43 UTC (rev 9726)
+++ trunk/drd/drd_segment.h 2009-05-03 17:07:34 UTC (rev 9727)
@@ -70,6 +70,7 @@
ULong DRD_(sg_get_segments_created_count)(void);
ULong DRD_(sg_get_segments_alive_count)(void);
ULong DRD_(sg_get_max_segments_alive_count)(void);
+ULong DRD_(sg_get_segment_merge_count)(void);
#endif // __SEGMENT_H
|
|
From: <sv...@va...> - 2009-05-03 17:04:58
|
Author: bart
Date: 2009-05-03 18:04:43 +0100 (Sun, 03 May 2009)
New Revision: 9726
Log:
Removed some non-interesting statistics.
Modified:
branches/DRDDEV/drd/drd_bitmap.c
branches/DRDDEV/drd/drd_bitmap.h
branches/DRDDEV/drd/drd_main.c
branches/DRDDEV/drd/drd_segment.c
branches/DRDDEV/drd/drd_segment.h
branches/DRDDEV/drd/drd_thread.c
branches/DRDDEV/drd/drd_thread.h
branches/DRDDEV/drd/pub_drd_bitmap.h
Modified: branches/DRDDEV/drd/drd_bitmap.c
===================================================================
--- branches/DRDDEV/drd/drd_bitmap.c 2009-05-03 16:26:46 UTC (rev 9725)
+++ branches/DRDDEV/drd/drd_bitmap.c 2009-05-03 17:04:43 UTC (rev 9726)
@@ -1152,7 +1152,7 @@
ULong DRD_(bm_get_bitmap2_node_creation_count)(void)
{
- return s_bitmap_merge_count;
+ return s_bitmap2_node_creation_count;
}
ULong DRD_(bm_get_bitmap2_creation_count)(void)
@@ -1160,6 +1160,10 @@
return s_bitmap2_creation_count;
}
+ULong DRD_(bm_get_bitmap2_merge_count)(void)
+{
+ return s_bitmap2_merge_count;
+}
/** Clear the bitmap contents. */
void bm2_clear(struct bitmap2* const bm2)
@@ -1207,13 +1211,3 @@
bm2l->bm1.bm0_w[k] ^= bm2r->bm1.bm0_w[k];
}
}
-
-ULong bm_get_bitmap2_creation_count(void)
-{
- return s_bitmap2_creation_count;
-}
-
-ULong bm_get_bitmap2_merge_count(void)
-{
- return s_bitmap2_merge_count;
-}
Modified: branches/DRDDEV/drd/drd_bitmap.h
===================================================================
--- branches/DRDDEV/drd/drd_bitmap.h 2009-05-03 16:26:46 UTC (rev 9725)
+++ branches/DRDDEV/drd/drd_bitmap.h 2009-05-03 17:04:43 UTC (rev 9726)
@@ -180,6 +180,7 @@
/* Local variables. */
static ULong s_bitmap2_creation_count;
+static ULong s_bitmap2_node_creation_count;
Modified: branches/DRDDEV/drd/drd_main.c
===================================================================
--- branches/DRDDEV/drd/drd_main.c 2009-05-03 16:26:46 UTC (rev 9725)
+++ branches/DRDDEV/drd/drd_main.c 2009-05-03 17:04:43 UTC (rev 9726)
@@ -55,7 +55,7 @@
/* Local variables. */
-static Bool DRD_(s_drd_first_race_only) = False;
+static Bool DRD_(s_first_race_only) = False;
static Bool DRD_(s_print_stats) = False;
static Bool DRD_(s_var_info) = False;
static Bool DRD_(s_show_stack_usage) = False;
@@ -85,9 +85,9 @@
int trace_suppression = -1;
Char* trace_address = 0;
- if VG_BOOL_CLO(arg, "--check-stack-var", check_stack_accesses) {}
+ if VG_BOOL_CLO(arg, "--check-stack-var", check_stack_accesses) {}
else if VG_BOOL_CLO(arg, "--drd-stats", DRD_(s_print_stats)) {}
- else if VG_BOOL_CLO(arg, "--first-race-only", DRD_(s_drd_first_race_only)) {}
+ else if VG_BOOL_CLO(arg, "--first-race-only", DRD_(s_first_race_only)) {}
else if VG_BOOL_CLO(arg,"--report-signal-unlocked",report_signal_unlocked) {}
else if VG_BOOL_CLO(arg, "--segment-merging", segment_merging) {}
else if VG_BOOL_CLO(arg, "--show-confl-seg", show_confl_seg) {}
@@ -170,7 +170,6 @@
" writer lock is held longer than the specified time (in milliseconds).\n"
" --first-race-only=yes|no Only report the first data race that occurs on\n"
" a memory location instead of all races [no].\n"
-
" --report-signal-unlocked=yes|no Whether to report calls to\n"
" pthread_cond_signal() where the mutex associated\n"
" with the signal via pthread_cond_wait() is not\n"
@@ -573,9 +572,6 @@
dscvc,
update_conflict_set_count - dsnsc - dscvc);
VG_(message)(Vg_UserMsg,
- " %lld level 2 conflict sets have been computed.",
- thread_get_compute_conflict_set_bitmap2_count());
- VG_(message)(Vg_UserMsg,
" segments: created %lld segments, max %lld alive,"
" %lld discard points,",
DRD_(sg_get_segments_created_count)(),
@@ -583,7 +579,7 @@
DRD_(thread_get_discard_ordered_segments_count)());
VG_(message)(Vg_UserMsg,
" %lld merges.",
- sg_get_segment_merge_count());
+ DRD_(sg_get_segment_merge_count)());
VG_(message)(Vg_UserMsg,
" (%lld m, %lld rw, %lld s, %lld b)",
DRD_(get_mutex_segment_creation_count)(),
@@ -594,18 +590,10 @@
" bitmaps: %lld level 1 / %lld level 2 bitmap refs",
DRD_(bm_get_bitmap_creation_count)(),
DRD_(bm_get_bitmap2_node_creation_count)());
-#if 0
VG_(message)(Vg_UserMsg,
- " %lld level 1 bitmap merges were carried out.",
- bm_get_bitmap_merge_count());
-#endif
- VG_(message)(Vg_UserMsg,
- " %lld level 2 bitmaps were allocated;",
+ " %lld level 2 bitmaps were allocated.",
DRD_(bm_get_bitmap2_creation_count)());
VG_(message)(Vg_UserMsg,
- " %lld level 2 bitmap merges were carried out.",
- bm_get_bitmap2_merge_count());
- VG_(message)(Vg_UserMsg,
" mutex: %lld non-recursive lock/unlock events.",
DRD_(get_mutex_lock_count)());
DRD_(print_malloc_stats)();
Modified: branches/DRDDEV/drd/drd_segment.c
===================================================================
--- branches/DRDDEV/drd/drd_segment.c 2009-05-03 16:26:46 UTC (rev 9725)
+++ branches/DRDDEV/drd/drd_segment.c 2009-05-03 17:04:43 UTC (rev 9726)
@@ -262,7 +262,7 @@
return s_max_segments_alive_count;
}
-ULong sg_get_segment_merge_count(void)
+ULong DRD_(sg_get_segment_merge_count)(void)
{
return s_segment_merge_count;
}
Modified: branches/DRDDEV/drd/drd_segment.h
===================================================================
--- branches/DRDDEV/drd/drd_segment.h 2009-05-03 16:26:46 UTC (rev 9725)
+++ branches/DRDDEV/drd/drd_segment.h 2009-05-03 17:04:43 UTC (rev 9726)
@@ -70,7 +70,7 @@
ULong DRD_(sg_get_segments_created_count)(void);
ULong DRD_(sg_get_segments_alive_count)(void);
ULong DRD_(sg_get_max_segments_alive_count)(void);
-ULong sg_get_segment_merge_count(void);
+ULong DRD_(sg_get_segment_merge_count)(void);
#endif // __SEGMENT_H
Modified: branches/DRDDEV/drd/drd_thread.c
===================================================================
--- branches/DRDDEV/drd/drd_thread.c 2009-05-03 16:26:46 UTC (rev 9725)
+++ branches/DRDDEV/drd/drd_thread.c 2009-05-03 17:04:43 UTC (rev 9726)
@@ -63,7 +63,6 @@
static ULong s_conflict_set_combine_vc_count;
static ULong s_conflict_set_bitmap_creation_count;
static ULong s_conflict_set_bitmap2_creation_count;
-static ULong s_compute_conflict_set_bitmap2_count;
static ThreadId s_vg_running_tid = VG_INVALID_THREADID;
DrdThreadId DRD_(g_drd_running_tid) = DRD_INVALID_THREADID;
ThreadInfo DRD_(g_threadinfo)[DRD_N_THREADS];
@@ -1179,8 +1178,3 @@
{
return s_conflict_set_bitmap2_creation_count;
}
-
-ULong thread_get_compute_conflict_set_bitmap2_count(void)
-{
- return s_compute_conflict_set_bitmap2_count;
-}
Modified: branches/DRDDEV/drd/drd_thread.h
===================================================================
--- branches/DRDDEV/drd/drd_thread.h 2009-05-03 16:26:46 UTC (rev 9725)
+++ branches/DRDDEV/drd/drd_thread.h 2009-05-03 17:04:43 UTC (rev 9726)
@@ -169,7 +169,6 @@
ULong DRD_(thread_get_update_conflict_set_count)(ULong* dsnsc, ULong* dscvc);
ULong DRD_(thread_get_conflict_set_bitmap_creation_count)(void);
ULong DRD_(thread_get_conflict_set_bitmap2_creation_count)(void);
-ULong thread_get_compute_conflict_set_bitmap2_count(void);
/* Inline function definitions. */
Modified: branches/DRDDEV/drd/pub_drd_bitmap.h
===================================================================
--- branches/DRDDEV/drd/pub_drd_bitmap.h 2009-05-03 16:26:46 UTC (rev 9725)
+++ branches/DRDDEV/drd/pub_drd_bitmap.h 2009-05-03 17:04:43 UTC (rev 9726)
@@ -127,7 +127,7 @@
ULong DRD_(bm_get_bitmap_creation_count)(void);
ULong DRD_(bm_get_bitmap2_node_creation_count)(void);
ULong DRD_(bm_get_bitmap2_creation_count)(void);
-ULong bm_get_bitmap2_merge_count(void);
+ULong DRD_(bm_get_bitmap2_merge_count)(void);
/* Second-level bitmaps. */
void bm2_clear(struct bitmap2* const bm2);
|
Author: bart Date: 2009-05-03 17:26:46 +0100 (Sun, 03 May 2009) New Revision: 9725 Log: Merged trunk revisions r9496:9713. Added: branches/DRDDEV/Makefile.core-tool.am branches/DRDDEV/coregrind/m_debuginfo/priv_readpdb.h branches/DRDDEV/coregrind/m_debuginfo/readpdb.c branches/DRDDEV/docs/internals/3_4_BUGSTATUS.txt branches/DRDDEV/drd/tests/custom_alloc.stderr.exp branches/DRDDEV/drd/tests/custom_alloc.vgtest branches/DRDDEV/drd/tests/pth_create_glibc_2_0.c branches/DRDDEV/drd/tests/pth_create_glibc_2_0.stderr.exp branches/DRDDEV/drd/tests/pth_create_glibc_2_0.vgtest branches/DRDDEV/drd/tests/tc19_shadowmem.stderr.exp-32bit branches/DRDDEV/drd/tests/tc19_shadowmem.stderr.exp-64bit branches/DRDDEV/massif/tests/ignored.c branches/DRDDEV/massif/tests/ignored.post.exp branches/DRDDEV/massif/tests/ignored.stderr.exp branches/DRDDEV/massif/tests/ignored.vgtest branches/DRDDEV/memcheck/tests/filter_addressable branches/DRDDEV/memcheck/tests/linux/with-space.stderr.exp branches/DRDDEV/memcheck/tests/linux/with-space.stdout.exp branches/DRDDEV/memcheck/tests/linux/with-space.vgtest branches/DRDDEV/memcheck/tests/nanoleak_supp.c branches/DRDDEV/memcheck/tests/varinfo6.stderr.exp branches/DRDDEV/memcheck/tests/x86-linux/int3-x86.c branches/DRDDEV/memcheck/tests/x86-linux/int3-x86.stderr.exp branches/DRDDEV/memcheck/tests/x86-linux/int3-x86.stdout.exp branches/DRDDEV/memcheck/tests/x86-linux/int3-x86.vgtest branches/DRDDEV/memcheck/tests/x86/pushfpopf_s.S branches/DRDDEV/none/tests/linux/blockfault.c branches/DRDDEV/none/tests/linux/blockfault.stderr.exp branches/DRDDEV/none/tests/linux/blockfault.vgtest branches/DRDDEV/none/tests/x86-linux/ branches/DRDDEV/none/tests/x86/cpuid_s.S branches/DRDDEV/tests/asm.h branches/DRDDEV/tests/malloc.h branches/DRDDEV/tests/sys_mman.h Removed: branches/DRDDEV/Makefile.install.am branches/DRDDEV/drd/tests/tc19_shadowmem.stderr.exp branches/DRDDEV/memcheck/tests/addressable.stderr.exp2 branches/DRDDEV/memcheck/tests/nanoleak.c branches/DRDDEV/memcheck/tests/nanoleak.stderr.exp branches/DRDDEV/memcheck/tests/nanoleak.vgtest branches/DRDDEV/memcheck/tests/varinfo6.stderr.exp-glibc25-amd64 branches/DRDDEV/memcheck/tests/varinfo6.stderr.exp-glibc25-x86 branches/DRDDEV/memcheck/tests/with-space.stderr.exp branches/DRDDEV/memcheck/tests/with-space.stdout.exp branches/DRDDEV/memcheck/tests/with-space.vgtest branches/DRDDEV/memcheck/tests/x86/int3-x86.c branches/DRDDEV/memcheck/tests/x86/int3-x86.stderr.exp branches/DRDDEV/memcheck/tests/x86/int3-x86.stdout.exp branches/DRDDEV/memcheck/tests/x86/int3-x86.vgtest branches/DRDDEV/memcheck/tests/x86/pushfpopf_s.s branches/DRDDEV/none/tests/async-sigs.stdout.exp branches/DRDDEV/none/tests/blockfault.c branches/DRDDEV/none/tests/blockfault.stderr.exp branches/DRDDEV/none/tests/blockfault.stdout.exp branches/DRDDEV/none/tests/blockfault.vgtest branches/DRDDEV/none/tests/susphello.c branches/DRDDEV/none/tests/susphello.stderr.exp branches/DRDDEV/none/tests/susphello.stdout.exp branches/DRDDEV/none/tests/susphello.vgtest branches/DRDDEV/none/tests/x86/cpuid_s.s branches/DRDDEV/none/tests/x86/seg_override.c branches/DRDDEV/none/tests/x86/seg_override.stderr.exp branches/DRDDEV/none/tests/x86/seg_override.stdout.exp branches/DRDDEV/none/tests/x86/seg_override.vgtest branches/DRDDEV/none/tests/x86/sigcontext.c branches/DRDDEV/none/tests/x86/sigcontext.stderr.exp branches/DRDDEV/none/tests/x86/sigcontext.stdout.exp branches/DRDDEV/none/tests/x86/sigcontext.vgtest Modified: branches/DRDDEV/Makefile.am branches/DRDDEV/Makefile.flags.am branches/DRDDEV/Makefile.tool-tests.am branches/DRDDEV/Makefile.tool.am branches/DRDDEV/NEWS branches/DRDDEV/README branches/DRDDEV/cachegrind/tests/x86/Makefile.am branches/DRDDEV/cachegrind/tests/x86/fpu-28-108.S branches/DRDDEV/configure.in branches/DRDDEV/coregrind/Makefile.am branches/DRDDEV/coregrind/m_cpuid.S branches/DRDDEV/coregrind/m_debuginfo/debuginfo.c branches/DRDDEV/coregrind/m_debuginfo/priv_storage.h branches/DRDDEV/coregrind/m_debuginfo/readdwarf.c branches/DRDDEV/coregrind/m_debuginfo/readelf.c branches/DRDDEV/coregrind/m_debuginfo/storage.c branches/DRDDEV/coregrind/m_execontext.c branches/DRDDEV/coregrind/m_libcassert.c branches/DRDDEV/coregrind/m_libcfile.c branches/DRDDEV/coregrind/m_mallocfree.c branches/DRDDEV/coregrind/m_scheduler/scheduler.c branches/DRDDEV/coregrind/m_signals.c branches/DRDDEV/coregrind/m_stacktrace.c branches/DRDDEV/coregrind/m_syswrap/syswrap-generic.c branches/DRDDEV/coregrind/m_syswrap/syswrap-linux.c branches/DRDDEV/coregrind/pub_core_basics.h branches/DRDDEV/coregrind/pub_core_basics_asm.h branches/DRDDEV/coregrind/pub_core_debuginfo.h branches/DRDDEV/docs/internals/Makefile.am branches/DRDDEV/docs/xml/FAQ.xml branches/DRDDEV/docs/xml/manual-writing-tools.xml branches/DRDDEV/drd/Testing.txt branches/DRDDEV/drd/drd_bitmap.c branches/DRDDEV/drd/drd_bitmap.h branches/DRDDEV/drd/drd_clientreq.c branches/DRDDEV/drd/drd_malloc_wrappers.c branches/DRDDEV/drd/drd_malloc_wrappers.h branches/DRDDEV/drd/drd_mutex.c branches/DRDDEV/drd/drd_pthread_intercepts.c branches/DRDDEV/drd/drd_rwlock.c branches/DRDDEV/drd/drd_thread.c branches/DRDDEV/drd/scripts/measurement-functions branches/DRDDEV/drd/scripts/run-splash2 branches/DRDDEV/drd/tests/ branches/DRDDEV/drd/tests/Makefile.am branches/DRDDEV/drd/tests/drd_bitmap_test.c branches/DRDDEV/drd/tests/pth_barrier_race.c branches/DRDDEV/drd/tests/pth_detached.c branches/DRDDEV/drd/tests/tc09_bad_unlock.stderr.exp-glibc2.8 branches/DRDDEV/drd/tests/tc19_shadowmem.vgtest branches/DRDDEV/drd/tests/tc20_verifywrap.stderr.exp-glibc2.3 branches/DRDDEV/drd/tests/tc20_verifywrap.stderr.exp-glibc2.8 branches/DRDDEV/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3 branches/DRDDEV/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8 branches/DRDDEV/exp-ptrcheck.supp branches/DRDDEV/exp-ptrcheck/h_main.c branches/DRDDEV/exp-ptrcheck/tests/mm.c branches/DRDDEV/exp-ptrcheck/tests/x86/Makefile.am branches/DRDDEV/glibc-2.X-drd.supp branches/DRDDEV/include/pub_tool_basics.h branches/DRDDEV/include/pub_tool_basics_asm.h branches/DRDDEV/include/pub_tool_libcprint.h branches/DRDDEV/include/pub_tool_oset.h branches/DRDDEV/include/valgrind.h branches/DRDDEV/include/vki/vki-amd64-linux.h branches/DRDDEV/include/vki/vki-ppc32-aix5.h branches/DRDDEV/include/vki/vki-ppc32-linux.h branches/DRDDEV/include/vki/vki-ppc64-aix5.h branches/DRDDEV/include/vki/vki-ppc64-linux.h branches/DRDDEV/include/vki/vki-x86-linux.h branches/DRDDEV/massif/docs/ms-manual.xml branches/DRDDEV/massif/ms_main.c branches/DRDDEV/massif/ms_print.in branches/DRDDEV/massif/tests/Makefile.am branches/DRDDEV/massif/tests/alloc-fns-A.post.exp branches/DRDDEV/massif/tests/alloc-fns-A.vgtest branches/DRDDEV/massif/tests/alloc-fns-B.post.exp branches/DRDDEV/massif/tests/alloc-fns-B.vgtest branches/DRDDEV/massif/tests/basic.post.exp branches/DRDDEV/massif/tests/basic.vgtest branches/DRDDEV/massif/tests/basic2.post.exp branches/DRDDEV/massif/tests/basic2.vgtest branches/DRDDEV/massif/tests/big-alloc.post.exp branches/DRDDEV/massif/tests/big-alloc.vgtest branches/DRDDEV/massif/tests/culling1.stderr.exp branches/DRDDEV/massif/tests/culling1.vgtest branches/DRDDEV/massif/tests/culling2.stderr.exp branches/DRDDEV/massif/tests/culling2.vgtest branches/DRDDEV/massif/tests/custom_alloc.c branches/DRDDEV/massif/tests/custom_alloc.post.exp branches/DRDDEV/massif/tests/custom_alloc.vgtest branches/DRDDEV/massif/tests/deep-A.post.exp branches/DRDDEV/massif/tests/deep-A.vgtest branches/DRDDEV/massif/tests/deep-B.post.exp branches/DRDDEV/massif/tests/deep-B.stderr.exp branches/DRDDEV/massif/tests/deep-B.vgtest branches/DRDDEV/massif/tests/deep-C.post.exp branches/DRDDEV/massif/tests/deep-C.stderr.exp branches/DRDDEV/massif/tests/deep-C.vgtest branches/DRDDEV/massif/tests/deep-D.post.exp branches/DRDDEV/massif/tests/deep-D.vgtest branches/DRDDEV/massif/tests/filter_verbose branches/DRDDEV/massif/tests/ignoring.post.exp branches/DRDDEV/massif/tests/ignoring.vgtest branches/DRDDEV/massif/tests/insig.post.exp branches/DRDDEV/massif/tests/insig.vgtest branches/DRDDEV/massif/tests/long-names.post.exp branches/DRDDEV/massif/tests/long-names.vgtest branches/DRDDEV/massif/tests/long-time.post.exp branches/DRDDEV/massif/tests/long-time.vgtest branches/DRDDEV/massif/tests/malloc_usable.c branches/DRDDEV/massif/tests/new-cpp.post.exp branches/DRDDEV/massif/tests/new-cpp.vgtest branches/DRDDEV/massif/tests/no-stack-no-heap.post.exp branches/DRDDEV/massif/tests/no-stack-no-heap.vgtest branches/DRDDEV/massif/tests/null.post.exp branches/DRDDEV/massif/tests/null.vgtest branches/DRDDEV/massif/tests/one.post.exp branches/DRDDEV/massif/tests/one.vgtest branches/DRDDEV/massif/tests/overloaded-new.post.exp branches/DRDDEV/massif/tests/overloaded-new.vgtest branches/DRDDEV/massif/tests/peak.post.exp branches/DRDDEV/massif/tests/peak.vgtest branches/DRDDEV/massif/tests/peak2.post.exp branches/DRDDEV/massif/tests/peak2.stderr.exp branches/DRDDEV/massif/tests/peak2.vgtest branches/DRDDEV/massif/tests/realloc.post.exp branches/DRDDEV/massif/tests/realloc.stderr.exp branches/DRDDEV/massif/tests/realloc.vgtest branches/DRDDEV/massif/tests/thresholds_0_0.post.exp branches/DRDDEV/massif/tests/thresholds_0_0.vgtest branches/DRDDEV/massif/tests/thresholds_0_10.post.exp branches/DRDDEV/massif/tests/thresholds_0_10.vgtest branches/DRDDEV/massif/tests/thresholds_10_0.post.exp branches/DRDDEV/massif/tests/thresholds_10_0.vgtest branches/DRDDEV/massif/tests/thresholds_10_10.post.exp branches/DRDDEV/massif/tests/thresholds_10_10.vgtest branches/DRDDEV/massif/tests/thresholds_5_0.post.exp branches/DRDDEV/massif/tests/thresholds_5_0.vgtest branches/DRDDEV/massif/tests/thresholds_5_10.post.exp branches/DRDDEV/massif/tests/thresholds_5_10.vgtest branches/DRDDEV/massif/tests/zero1.post.exp branches/DRDDEV/massif/tests/zero1.vgtest branches/DRDDEV/massif/tests/zero2.post.exp branches/DRDDEV/massif/tests/zero2.vgtest branches/DRDDEV/memcheck/mc_errors.c branches/DRDDEV/memcheck/mc_include.h branches/DRDDEV/memcheck/mc_leakcheck.c branches/DRDDEV/memcheck/mc_machine.c branches/DRDDEV/memcheck/tests/Makefile.am branches/DRDDEV/memcheck/tests/addressable.c branches/DRDDEV/memcheck/tests/addressable.stderr.exp branches/DRDDEV/memcheck/tests/addressable.vgtest branches/DRDDEV/memcheck/tests/amd64/Makefile.am branches/DRDDEV/memcheck/tests/amd64/sse_memory.c branches/DRDDEV/memcheck/tests/badjump.c branches/DRDDEV/memcheck/tests/badjump.stderr.exp branches/DRDDEV/memcheck/tests/custom_alloc.c branches/DRDDEV/memcheck/tests/file_locking.c branches/DRDDEV/memcheck/tests/filter_stderr branches/DRDDEV/memcheck/tests/leak-cases-full.stderr.exp branches/DRDDEV/memcheck/tests/leak-cycle.stderr.exp branches/DRDDEV/memcheck/tests/linux/Makefile.am branches/DRDDEV/memcheck/tests/linux/stack_switch.c branches/DRDDEV/memcheck/tests/linux/timerfd-syscall.c branches/DRDDEV/memcheck/tests/mallinfo.c branches/DRDDEV/memcheck/tests/malloc_usable.c branches/DRDDEV/memcheck/tests/memalign2.c branches/DRDDEV/memcheck/tests/mempool.c branches/DRDDEV/memcheck/tests/mmaptest.c branches/DRDDEV/memcheck/tests/nanoleak_supp.vgtest branches/DRDDEV/memcheck/tests/origin1-yes.c branches/DRDDEV/memcheck/tests/pointer-trace.c branches/DRDDEV/memcheck/tests/sh-mem-random.c branches/DRDDEV/memcheck/tests/sigaltstack.c branches/DRDDEV/memcheck/tests/signal2.c branches/DRDDEV/memcheck/tests/stack_changes.c branches/DRDDEV/memcheck/tests/str_tester.c branches/DRDDEV/memcheck/tests/supp_unknown.stderr.exp branches/DRDDEV/memcheck/tests/varinfo1.stderr.exp branches/DRDDEV/memcheck/tests/varinfo1.vgtest branches/DRDDEV/memcheck/tests/varinfo2.stderr.exp branches/DRDDEV/memcheck/tests/varinfo2.vgtest branches/DRDDEV/memcheck/tests/varinfo3.stderr.exp branches/DRDDEV/memcheck/tests/varinfo3.vgtest branches/DRDDEV/memcheck/tests/varinfo4.stderr.exp branches/DRDDEV/memcheck/tests/varinfo4.vgtest branches/DRDDEV/memcheck/tests/varinfo5.stderr.exp branches/DRDDEV/memcheck/tests/varinfo5.vgtest branches/DRDDEV/memcheck/tests/varinfo6.vgtest branches/DRDDEV/memcheck/tests/x86-linux/Makefile.am branches/DRDDEV/memcheck/tests/x86-linux/bug133694.c branches/DRDDEV/memcheck/tests/x86/Makefile.am branches/DRDDEV/memcheck/tests/x86/fxsave.c branches/DRDDEV/memcheck/tests/x86/more_x86_fp.c branches/DRDDEV/memcheck/tests/x86/tronical.S branches/DRDDEV/memcheck/tests/x86/xor-undef-x86.stderr.exp branches/DRDDEV/memcheck/tests/x86/xor-undef-x86.vgtest branches/DRDDEV/nightly/bin/nightly branches/DRDDEV/nightly/conf/georgia-tech-cellbuzz-cross.conf branches/DRDDEV/nightly/conf/georgia-tech-cellbuzz-cross.sendmail branches/DRDDEV/none/tests/Makefile.am branches/DRDDEV/none/tests/amd64/Makefile.am branches/DRDDEV/none/tests/amd64/bug137714-amd64.c branches/DRDDEV/none/tests/amd64/faultstatus.c branches/DRDDEV/none/tests/amd64/nibz_bennee_mmap.c branches/DRDDEV/none/tests/amd64/redundantRexW.c branches/DRDDEV/none/tests/amd64/smc1.c branches/DRDDEV/none/tests/amd64/ssse3_misaligned.c branches/DRDDEV/none/tests/async-sigs.c branches/DRDDEV/none/tests/async-sigs.stderr.exp branches/DRDDEV/none/tests/async-sigs.vgtest branches/DRDDEV/none/tests/faultstatus.c branches/DRDDEV/none/tests/fdleak.h branches/DRDDEV/none/tests/fdleak_cmsg.c branches/DRDDEV/none/tests/fdleak_cmsg.stderr.exp branches/DRDDEV/none/tests/fdleak_creat.c branches/DRDDEV/none/tests/fdleak_creat.stderr.exp branches/DRDDEV/none/tests/fdleak_dup.c branches/DRDDEV/none/tests/fdleak_dup.stderr.exp branches/DRDDEV/none/tests/fdleak_dup2.c branches/DRDDEV/none/tests/fdleak_dup2.stderr.exp branches/DRDDEV/none/tests/fdleak_fcntl.c branches/DRDDEV/none/tests/fdleak_fcntl.stderr.exp branches/DRDDEV/none/tests/fdleak_ipv4.c branches/DRDDEV/none/tests/fdleak_ipv4.stderr.exp branches/DRDDEV/none/tests/fdleak_open.c branches/DRDDEV/none/tests/fdleak_open.stderr.exp branches/DRDDEV/none/tests/fdleak_pipe.c branches/DRDDEV/none/tests/fdleak_pipe.stderr.exp branches/DRDDEV/none/tests/fdleak_socketpair.c branches/DRDDEV/none/tests/fdleak_socketpair.stderr.exp branches/DRDDEV/none/tests/filter_fdleak branches/DRDDEV/none/tests/filter_stderr branches/DRDDEV/none/tests/linux/Makefile.am branches/DRDDEV/none/tests/linux/mremap.c branches/DRDDEV/none/tests/linux/mremap2.c branches/DRDDEV/none/tests/map_unaligned.c branches/DRDDEV/none/tests/map_unmap.c branches/DRDDEV/none/tests/munmap_exe.c branches/DRDDEV/none/tests/ppc32/Makefile.am branches/DRDDEV/none/tests/ppc32/jm-insns.c branches/DRDDEV/none/tests/ppc32/test_fx.c branches/DRDDEV/none/tests/ppc32/test_gx.c branches/DRDDEV/none/tests/ppc64/Makefile.am branches/DRDDEV/none/tests/pth_cvsimple.c branches/DRDDEV/none/tests/x86/Makefile.am branches/DRDDEV/none/tests/x86/badseg.c branches/DRDDEV/none/tests/x86/badseg.stdout.exp branches/DRDDEV/none/tests/x86/bug126147-x86.c branches/DRDDEV/none/tests/x86/cmpxchg8b.c branches/DRDDEV/none/tests/x86/faultstatus.c branches/DRDDEV/none/tests/x86/fcmovnu.c branches/DRDDEV/none/tests/x86/fxtract.c branches/DRDDEV/none/tests/x86/incdec_alt.c branches/DRDDEV/none/tests/x86/jcxz.c branches/DRDDEV/none/tests/x86/lahf.c branches/DRDDEV/none/tests/x86/looper.c branches/DRDDEV/none/tests/x86/sbbmisc.c branches/DRDDEV/none/tests/x86/ssse3_misaligned.c branches/DRDDEV/perf/Makefile.am branches/DRDDEV/perf/bigcode.c branches/DRDDEV/perf/bz2.c branches/DRDDEV/tests/Makefile.am branches/DRDDEV/tests/filter_stderr_basic branches/DRDDEV/tests/vg_regtest.in [... diff too large to include ...] |
|
From: Tom H. <th...@cy...> - 2009-05-03 02:43:43
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2009-05-03 03:05:08 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 479 tests, 0 stderr failures, 0 stdout failures, 0 post failures == |
|
From: Tom H. <th...@cy...> - 2009-05-03 02:27:41
|
Nightly build on mg ( x86_64, Fedora 9 ) started at 2009-05-03 03:10:07 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 485 tests, 0 stderr failures, 1 stdout failure, 0 post failures == none/tests/linux/mremap2 (stdout) |