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
|
2
(1) |
3
(1) |
4
(5) |
5
|
6
(1) |
7
|
|
8
(10) |
9
(7) |
10
(2) |
11
(10) |
12
(1) |
13
|
14
(1) |
|
15
(3) |
16
|
17
|
18
|
19
|
20
|
21
(5) |
|
22
(2) |
23
(2) |
24
(4) |
25
(2) |
26
|
27
(7) |
28
(4) |
|
29
(5) |
30
(5) |
31
(1) |
|
|
|
|
|
From: Julian S. <se...@so...> - 2023-01-04 16:44:55
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=394ca9b400d7b69942967cce0fa89a344558c8c5 commit 394ca9b400d7b69942967cce0fa89a344558c8c5 Author: Julian Seward <js...@ac...> Date: Wed Jan 4 17:43:21 2023 +0100 Remove a debugging line `if (0) ..` that mistakenly got landed in fa3a9cc43c22593c70796a99aff33bb9436ad448. Diff: --- dhat/dh_main.c | 1 - 1 file changed, 1 deletion(-) diff --git a/dhat/dh_main.c b/dhat/dh_main.c index 5ae3fd29ac..6f15ae82e3 100644 --- a/dhat/dh_main.c +++ b/dhat/dh_main.c @@ -1245,7 +1245,6 @@ static Bool dh_handle_client_request(ThreadId tid, UWord* arg, UWord* ret) } default: - if (0) VG_(message)( Vg_UserMsg, "Warning: unknown DHAT client request code %llx\n", |
|
From: Julian S. <se...@so...> - 2023-01-04 16:19:13
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=1b8d0cbc813e936e96e76390873fbe9bc2fc4d83 commit 1b8d0cbc813e936e96e76390873fbe9bc2fc4d83 Author: Julian Seward <js...@ac...> Date: Wed Jan 4 17:12:21 2023 +0100 Fix 64-bit uncleanness in VG_(get_bbs_translated)/VG_(get_bbs_discarded_or_dumped) .. .. and some debug printing associated with them. I don't think this affects anything apart from debug printing. Noticed when running a x86 (32-bit) Firefox build. Diff: --- coregrind/m_translate.c | 2 +- coregrind/m_transtab.c | 4 ++-- coregrind/pub_core_transtab.h | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/coregrind/m_translate.c b/coregrind/m_translate.c index 60d5a05c86..8ae06d2a67 100644 --- a/coregrind/m_translate.c +++ b/coregrind/m_translate.c @@ -1597,7 +1597,7 @@ Bool VG_(translate) ( ThreadId tid, Bool ok = VG_(get_fnname_w_offset)(ep, addr, &fnname); if (!ok) fnname = "UNKNOWN_FUNCTION"; VG_(printf)( - "==== SB %u (evchecks %llu) [tid %u] 0x%lx %s %s%c0x%lx\n", + "==== SB %llu (evchecks %llu) [tid %u] 0x%lx %s %s%c0x%lx\n", VG_(get_bbs_translated)(), bbs_done, tid, addr, fnname, objname, objoff >= 0 ? '+' : '-', (UWord)(objoff >= 0 ? objoff : -objoff) diff --git a/coregrind/m_transtab.c b/coregrind/m_transtab.c index 09a3da02ba..384461289d 100644 --- a/coregrind/m_transtab.c +++ b/coregrind/m_transtab.c @@ -2664,12 +2664,12 @@ static Double safe_idiv( ULong a, ULong b ) return (b == 0 ? 0 : (Double)a / (Double)b); } -UInt VG_(get_bbs_translated) ( void ) +ULong VG_(get_bbs_translated) ( void ) { return n_in_count; } -UInt VG_(get_bbs_discarded_or_dumped) ( void ) +ULong VG_(get_bbs_discarded_or_dumped) ( void ) { return n_disc_count + n_dump_count; } diff --git a/coregrind/pub_core_transtab.h b/coregrind/pub_core_transtab.h index 1470b7afbe..6cc11f6580 100644 --- a/coregrind/pub_core_transtab.h +++ b/coregrind/pub_core_transtab.h @@ -200,8 +200,8 @@ extern void VG_(discard_translations) ( Addr start, ULong range, extern void VG_(print_tt_tc_stats) ( void ); -extern UInt VG_(get_bbs_translated) ( void ); -extern UInt VG_(get_bbs_discarded_or_dumped) ( void ); +extern ULong VG_(get_bbs_translated) ( void ); +extern ULong VG_(get_bbs_discarded_or_dumped) ( void ); /* Add to / search the auxiliary, small, unredirected translation table. */ |
|
From: Julian S. <se...@so...> - 2023-01-04 16:07:05
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=fe4e6578d451327829a6908a01bb27995c198acb commit fe4e6578d451327829a6908a01bb27995c198acb Author: Julian Seward <js...@ac...> Date: Wed Jan 4 17:04:03 2023 +0100 amd64 and x86 front ends: add a few more spec rules. amd64: S and NS after LOGICQ (per comments from Eyal Soha on the dev list) S after SHLQ NZ after SHLL x86: NZ after SHRL Z after SHLL I would have liked to have added the inverse conditions in all cases (eg, both S and NS, or both Z and NZ), but finding use cases for some of these is almost impossible, hence they are sometimes omitted. All of the added cases have been tested. Diff: --- VEX/priv/guest_amd64_helpers.c | 35 +++++++++++++++++++++++++++-------- VEX/priv/guest_x86_helpers.c | 17 ++++++++++++++++- 2 files changed, 43 insertions(+), 9 deletions(-) diff --git a/VEX/priv/guest_amd64_helpers.c b/VEX/priv/guest_amd64_helpers.c index abd2a1e370..42ec80e036 100644 --- a/VEX/priv/guest_amd64_helpers.c +++ b/VEX/priv/guest_amd64_helpers.c @@ -1684,6 +1684,19 @@ IRExpr* guest_amd64_spechelper ( const HChar* function_name, mkU64(0))); } + // Verified + if (isU64(cc_op, AMD64G_CC_OP_LOGICQ) && isU64(cond, AMD64CondS)) { + /* long long and/or/xor, then S --> (ULong)result[63] */ + return binop(Iop_Shr64, cc_dep1, mkU8(63)); + } + // Verified + if (isU64(cc_op, AMD64G_CC_OP_LOGICQ) && isU64(cond, AMD64CondNS)) { + /* long long and/or/xor, then S --> (ULong) ~ result[63] */ + return binop(Iop_Xor64, + binop(Iop_Shr64, cc_dep1, mkU8(63)), + mkU64(1)); + } + /*---------------- LOGICL ----------------*/ if (isU64(cc_op, AMD64G_CC_OP_LOGICL) && isU64(cond, AMD64CondZ)) { @@ -1932,10 +1945,12 @@ IRExpr* guest_amd64_spechelper ( const HChar* function_name, binop(Iop_CmpNE64, cc_dep1, mkU64(0))); } - //if (isU64(cc_op, AMD64G_CC_OP_SHLQ) && isU64(cond, AMD64CondS)) { - // /* SHLQ, then S --> (ULong)result[63] */ - // vassert(0); - //} + // Verified + if (isU64(cc_op, AMD64G_CC_OP_SHLQ) && isU64(cond, AMD64CondS)) { + /* SHLQ, then S --> (ULong)result[63] */ + return binop(Iop_Shr64, cc_dep1, mkU8(63)); + } + // No known test case //if (isU64(cc_op, AMD64G_CC_OP_SHLQ) && isU64(cond, AMD64CondNS)) { // /* SHLQ, then NS --> (ULong) ~ result[63] */ // vassert(0); @@ -1949,10 +1964,13 @@ IRExpr* guest_amd64_spechelper ( const HChar* function_name, binop(Iop_CmpEQ32, unop(Iop_64to32, cc_dep1), mkU32(0))); } - //if (isU64(cc_op, AMD64G_CC_OP_SHLL) && isU64(cond, AMD64CondNZ)) { - // /* SHLL, then NZ --> test dep1 != 0 */ - // vassert(0); - //} + // Verified + if (isU64(cc_op, AMD64G_CC_OP_SHLL) && isU64(cond, AMD64CondNZ)) { + /* SHLL, then NZ --> test dep1 != 0 */ + return unop(Iop_1Uto64, + binop(Iop_CmpNE32, unop(Iop_64to32, cc_dep1), + mkU32(0))); + } if (isU64(cc_op, AMD64G_CC_OP_SHLL) && isU64(cond, AMD64CondS)) { /* SHLL, then S --> (ULong)result[31] */ @@ -1960,6 +1978,7 @@ IRExpr* guest_amd64_spechelper ( const HChar* function_name, binop(Iop_Shr64, cc_dep1, mkU8(31)), mkU64(1)); } + // No known test case //if (isU64(cc_op, AMD64G_CC_OP_SHLL) && isU64(cond, AMD64CondNS)) { // /* SHLL, then NS --> (ULong) ~ result[31] */ // vassert(0); diff --git a/VEX/priv/guest_x86_helpers.c b/VEX/priv/guest_x86_helpers.c index 7b229cb795..a1d086369d 100644 --- a/VEX/priv/guest_x86_helpers.c +++ b/VEX/priv/guest_x86_helpers.c @@ -1203,9 +1203,24 @@ IRExpr* guest_x86_spechelper ( const HChar* function_name, /*---------------- SHRL ----------------*/ if (isU32(cc_op, X86G_CC_OP_SHRL) && isU32(cond, X86CondZ)) { - /* SHRL, then Z --> test dep1 == 0 */ + /* SHRL, then Z --> test dep1(result) == 0 */ return unop(Iop_1Uto32,binop(Iop_CmpEQ32, cc_dep1, mkU32(0))); } + if (isU32(cc_op, X86G_CC_OP_SHRL) && isU32(cond, X86CondNZ)) { + /* SHRL, then NZ --> test dep1(result) != 0 */ + return unop(Iop_1Uto32,binop(Iop_CmpNE32, cc_dep1, mkU32(0))); + } + + /*---------------- SHLL ----------------*/ + + if (isU32(cc_op, X86G_CC_OP_SHLL) && isU32(cond, X86CondZ)) { + /* SHLL, then Z --> test dep1(result) == 0 */ + return unop(Iop_1Uto32,binop(Iop_CmpEQ32, cc_dep1, mkU32(0))); + } + //if (isU32(cc_op, X86G_CC_OP_SHLL) && isU32(cond, X86CondNZ)) { + // /* SHLL, then NZ --> test dep1(result) != 0 */ + // vassert(0); // No test case yet observed + //} /*---------------- COPY ----------------*/ /* This can happen, as a result of x87 FP compares: "fcom ... ; |
|
From: Julian S. <se...@so...> - 2023-01-04 15:34:55
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=d99a6f70e2e8bce1eaef0038f3b36e627255d68f commit d99a6f70e2e8bce1eaef0038f3b36e627255d68f Author: Julian Seward <js...@ac...> Date: Wed Jan 4 16:32:03 2023 +0100 Memcheck: handle origin data for 8-/16-bit shadow stores a bit more accurately. With origin tracking enabled, 8- and 16-bit stores could sometimes lose origin info unnecessarily. This patch removes this avoidable lossage. (Since MC only stores 1 origin value for each 32-bit word of address space, there is still unavoidable lossage of origins in some cases; this patch does not help in those cases since it's a fundamental design limitation.) Diff: --- memcheck/mc_main.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/memcheck/mc_main.c b/memcheck/mc_main.c index fe15d23321..8efd7cb40c 100644 --- a/memcheck/mc_main.c +++ b/memcheck/mc_main.c @@ -79,6 +79,10 @@ static void ocache_sarp_Clear_Origins ( Addr, UWord ); /* fwds */ paths */ #define OC_ENABLE_ASSERTIONS 0 +/* Change this to 1 for experimental, higher precision origin tracking + 8- and 16-bit store handling. */ +#define OC_PRECISION_STORE 1 + /*------------------------------------------------------------*/ /*--- Comments on the origin tracking implementation ---*/ @@ -7655,12 +7659,31 @@ void VG_REGPARM(2) MC_(helperc_b_store1)( Addr a, UWord d32 ) { line = find_OCacheLine( a ); +#if OC_PRECISION_STORE + if (LIKELY(d32 == 0)) { + // The byte is defined. Just mark it as so in the descr and leave the w32 + // unchanged. This may make the descr become zero, so the line no longer + // contains useful info, but that's OK. No loss of information. + line->u.main.descr[lineoff] &= ~(1 << byteoff); + } else if (d32 == line->u.main.w32[lineoff]) { + // At least one of the four bytes in the w32 is undefined with the same + // origin. Just extend the mask. No loss of information. + line->u.main.descr[lineoff] |= (1 << byteoff); + } else { + // Here, we have a conflict: at least one byte in the group is undefined + // but with some other origin. We can't represent both origins, so we + // forget about the previous origin and install this one instead. + line->u.main.descr[lineoff] = (1 << byteoff); + line->u.main.w32[lineoff] = d32; + } +#else if (d32 == 0) { line->u.main.descr[lineoff] &= ~(1 << byteoff); } else { line->u.main.descr[lineoff] |= (1 << byteoff); line->u.main.w32[lineoff] = d32; } +#endif } void VG_REGPARM(2) MC_(helperc_b_store2)( Addr a, UWord d32 ) { @@ -7683,12 +7706,25 @@ void VG_REGPARM(2) MC_(helperc_b_store2)( Addr a, UWord d32 ) { line = find_OCacheLine( a ); +#if OC_PRECISION_STORE + // Same logic as in the store1 case above. + if (LIKELY(d32 == 0)) { + line->u.main.descr[lineoff] &= ~(3 << byteoff); + } else if (d32 == line->u.main.w32[lineoff]) { + line->u.main.descr[lineoff] |= (3 << byteoff); + line->u.main.w32[lineoff] = d32; + } else { + line->u.main.descr[lineoff] = (3 << byteoff); + line->u.main.w32[lineoff] = d32; + } +#else if (d32 == 0) { line->u.main.descr[lineoff] &= ~(3 << byteoff); } else { line->u.main.descr[lineoff] |= (3 << byteoff); line->u.main.w32[lineoff] = d32; } +#endif } void VG_REGPARM(2) MC_(helperc_b_store4)( Addr a, UWord d32 ) { |
|
From: Julian S. <se...@so...> - 2023-01-04 15:12:14
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=fa3a9cc43c22593c70796a99aff33bb9436ad448 commit fa3a9cc43c22593c70796a99aff33bb9436ad448 Author: Julian Seward <js...@ac...> Date: Wed Jan 4 15:38:12 2023 +0100 DHAT: increase the size of the cache for `find_Block_containing` from 2 to 3. In the hope of making DHAT a bit faster. Diff: --- dhat/dh_main.c | 52 ++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 14 deletions(-) diff --git a/dhat/dh_main.c b/dhat/dh_main.c index 69e6fb6d01..5ae3fd29ac 100644 --- a/dhat/dh_main.c +++ b/dhat/dh_main.c @@ -151,11 +151,14 @@ static Word interval_tree_Cmp ( UWord k1, UWord k2 ) return 0; } -// 2-entry cache for find_Block_containing +// 3-entry cache for find_Block_containing static Block* fbc_cache0 = NULL; static Block* fbc_cache1 = NULL; +static Block* fbc_cache2 = NULL; -static UWord stats__n_fBc_cached = 0; +static UWord stats__n_fBc_cached0 = 0; +static UWord stats__n_fBc_cached1 = 0; +static UWord stats__n_fBc_cached2 = 0; static UWord stats__n_fBc_uncached = 0; static UWord stats__n_fBc_notfound = 0; @@ -167,19 +170,30 @@ static Block* find_Block_containing ( Addr a ) && fbc_cache0->payload <= a && a < fbc_cache0->payload + fbc_cache0->req_szB)) { // found at 0 - stats__n_fBc_cached++; + stats__n_fBc_cached0++; return fbc_cache0; } if (LIKELY(fbc_cache1 && fbc_cache1->payload <= a && a < fbc_cache1->payload + fbc_cache1->req_szB)) { // found at 1; swap 0 and 1 - Block* tmp = fbc_cache0; - fbc_cache0 = fbc_cache1; + Block* tmp = fbc_cache1; + fbc_cache1 = fbc_cache0; + fbc_cache0 = tmp; + stats__n_fBc_cached1++; + return tmp; + } + if (LIKELY(fbc_cache2 + && fbc_cache2->payload <= a + && a < fbc_cache2->payload + fbc_cache2->req_szB)) { + // found at 2; swap 1 and 2 + Block* tmp = fbc_cache2; + fbc_cache2 = fbc_cache1; fbc_cache1 = tmp; - stats__n_fBc_cached++; - return fbc_cache0; + stats__n_fBc_cached2++; + return tmp; } + Block fake; fake.payload = a; fake.req_szB = 1; @@ -196,6 +210,7 @@ static Block* find_Block_containing ( Addr a ) Block* res = (Block*)foundkey; tl_assert(res != &fake); // put at the top position + fbc_cache2 = fbc_cache1; fbc_cache1 = fbc_cache0; fbc_cache0 = res; stats__n_fBc_uncached++; @@ -214,7 +229,7 @@ static void delete_Block_starting_at ( Addr a ) Bool found = VG_(delFromFM)( interval_tree, NULL, NULL, (Addr)&fake ); tl_assert(found); - fbc_cache0 = fbc_cache1 = NULL; + fbc_cache0 = fbc_cache1 = fbc_cache2 = NULL; } //------------------------------------------------------------// @@ -600,7 +615,7 @@ void* new_block ( ThreadId tid, void* p, SizeT req_szB, SizeT req_alignB, Bool present = VG_(addToFM)( interval_tree, (UWord)bk, (UWord)0/*no val*/); tl_assert(!present); - fbc_cache0 = fbc_cache1 = NULL; + fbc_cache0 = fbc_cache1 = fbc_cache2 = NULL; intro_Block(bk); @@ -727,7 +742,7 @@ void* renew_block ( ThreadId tid, void* p_old, SizeT new_req_szB ) Bool present = VG_(addToFM)( interval_tree, (UWord)bk, (UWord)0/*no val*/); tl_assert(!present); - fbc_cache0 = fbc_cache1 = NULL; + fbc_cache0 = fbc_cache1 = fbc_cache2 = NULL; } return p_new; @@ -1230,6 +1245,7 @@ static Bool dh_handle_client_request(ThreadId tid, UWord* arg, UWord* ret) } default: + if (0) VG_(message)( Vg_UserMsg, "Warning: unknown DHAT client request code %llx\n", @@ -1609,11 +1625,17 @@ static void dh_fini(Int exit_status) // Stats. if (VG_(clo_stats)) { VG_(dmsg)(" dhat: find_Block_containing:\n"); - VG_(dmsg)(" found: %'lu (%'lu cached + %'lu uncached)\n", - stats__n_fBc_cached + stats__n_fBc_uncached, - stats__n_fBc_cached, + VG_(dmsg)(" dhat: found: %'lu\n", + stats__n_fBc_cached0 + stats__n_fBc_cached1 + + stats__n_fBc_cached2 + + stats__n_fBc_uncached); + VG_(dmsg)(" dhat: at cache0 %'14lu at cache1 %'14lu\n", + stats__n_fBc_cached0, + stats__n_fBc_cached1); + VG_(dmsg)(" dhat: at cache2 %'14lu uncached %'14lu\n", + stats__n_fBc_cached2, stats__n_fBc_uncached); - VG_(dmsg)(" notfound: %'lu\n", stats__n_fBc_notfound); + VG_(dmsg)(" dhat: notfound: %'lu\n", stats__n_fBc_notfound); VG_(dmsg)("\n"); } } @@ -1777,6 +1799,7 @@ static void dh_pre_clo_init(void) VG_(details_copyright_author)( "Copyright (C) 2010-2018, and GNU GPL'd, by Mozilla Foundation"); VG_(details_bug_reports_to) (VG_BUGS_TO); + VG_(details_avg_translation_sizeB) ( 600 ); // Basic functions. VG_(basic_tool_funcs) (dh_post_clo_init, @@ -1811,6 +1834,7 @@ static void dh_pre_clo_init(void) tl_assert(!interval_tree); tl_assert(!fbc_cache0); tl_assert(!fbc_cache1); + tl_assert(!fbc_cache2); interval_tree = VG_(newFM)( VG_(malloc), "dh.interval_tree.1", |