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
(20) |
2
(20) |
3
(11) |
4
(10) |
5
(11) |
6
(19) |
|
7
(12) |
8
(22) |
9
(22) |
10
(18) |
11
(11) |
12
(21) |
13
(17) |
|
14
(8) |
15
(16) |
16
(16) |
17
(9) |
18
(19) |
19
(12) |
20
(9) |
|
21
(8) |
22
(12) |
23
(17) |
24
(8) |
25
(8) |
26
(7) |
27
(11) |
|
28
(12) |
29
(16) |
30
(16) |
31
(9) |
|
|
|
|
From: <js...@ac...> - 2007-01-17 07:16:40
|
Nightly build on minnie ( SuSE 10.0, ppc32 ) started at 2007-01-17 09:00:02 GMT 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 == 218 tests, 10 stderr failures, 6 stdout failures, 0 posttest failures == memcheck/tests/leak-tree (stderr) memcheck/tests/leakotron (stdout) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-fp (stderr) none/tests/ppc32/round (stdout) none/tests/ppc32/round (stderr) none/tests/ppc32/test_fx (stdout) none/tests/ppc32/test_fx (stderr) none/tests/ppc32/test_gx (stdout) |
|
From: <js...@ac...> - 2007-01-17 05:04:48
|
Nightly build on phoenix ( SuSE 10.0 ) started at 2007-01-17 04:30:01 GMT Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 252 tests, 6 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/leak-tree (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) ================================================= == Results from 24 hours ago == ================================================= Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 251 tests, 6 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/leak-tree (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Jan 17 04:48:05 2007 --- new.short Wed Jan 17 05:05:03 2007 *************** *** 10,12 **** ! == 251 tests, 6 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/leak-tree (stderr) --- 10,12 ---- ! == 252 tests, 6 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/leak-tree (stderr) |
|
From: <sv...@va...> - 2007-01-17 04:36:06
|
Author: njn
Date: 2007-01-17 04:35:59 +0000 (Wed, 17 Jan 2007)
New Revision: 6529
Log:
Rewrote SP update pass. It no longer uses a zillion goto statements and
that god-awful macro, but instead uses a switch statements and some
functions. Much better and less error prone.
Modified:
branches/ORIGIN_TRACKING/coregrind/m_translate.c
branches/ORIGIN_TRACKING/memcheck/mc_main.c
branches/ORIGIN_TRACKING/memcheck/mc_translate.c
Modified: branches/ORIGIN_TRACKING/coregrind/m_translate.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ORIGIN_TRACKING/coregrind/m_translate.c 2007-01-16 22:04:50 =
UTC (rev 6528)
+++ branches/ORIGIN_TRACKING/coregrind/m_translate.c 2007-01-17 04:35:59 =
UTC (rev 6529)
@@ -61,29 +61,37 @@
/*--- Stats ---*/
/*------------------------------------------------------------*/
=20
-static UInt n_SP_updates_fast =3D 0;
-static UInt n_SP_updates_generic_known =3D 0;
-static UInt n_SP_updates_generic_unknown =3D 0;
+static UInt n_SP_delta_known_and_handled =3D 0;
+static UInt n_SP_delta_known_but_unhandled_by_core =3D 0;
+static UInt n_SP_delta_known_but_unhandled_by_tool =3D 0;
+static UInt n_SP_delta_unknown =3D 0;
=20
void VG_(print_translation_stats) ( void )
{
Char buf[6];
- UInt n_SP_updates =3D n_SP_updates_fast + n_SP_updates_generic_known
- + n_SP_updates_generic_unknown;
- VG_(percentify)(n_SP_updates_fast, n_SP_updates, 1, 6, buf);
+ UInt n_tot =3D
+ n_SP_delta_known_and_handled + n_SP_delta_known_but_unhandled_by_c=
ore +
+ n_SP_delta_known_but_unhandled_by_tool + n_SP_delta_unknown;
+
+ VG_(percentify)(n_SP_delta_known_and_handled, n_tot, 1, 6, buf);
VG_(message)(Vg_DebugMsg,
- "translate: fast SP updates identified: %,u (%s)",
- n_SP_updates_fast, buf );
+ " SP instr: delta known and handled: %,7u (%s)",
+ n_SP_delta_known_and_handled, buf );
=20
- VG_(percentify)(n_SP_updates_generic_known, n_SP_updates, 1, 6, buf);
+ VG_(percentify)(n_SP_delta_known_but_unhandled_by_tool, n_tot, 1, 6, =
buf);
VG_(message)(Vg_DebugMsg,
- "translate: generic_known SP updates identified: %,u (%s)",
- n_SP_updates_generic_known, buf );
+ " SP instr: delta known but unhandled by tool: %,7u (%s)",
+ n_SP_delta_known_but_unhandled_by_tool, buf );
=20
- VG_(percentify)(n_SP_updates_generic_unknown, n_SP_updates, 1, 6, buf=
);
+ VG_(percentify)(n_SP_delta_known_but_unhandled_by_core, n_tot, 1, 6, =
buf);
VG_(message)(Vg_DebugMsg,
- "translate: generic_unknown SP updates identified: %,u (%s)",
- n_SP_updates_generic_unknown, buf );
+ " SP instr: delta known but unhandled by core: %,7u (%s)",
+ n_SP_delta_known_but_unhandled_by_core, buf );
+
+ VG_(percentify)(n_SP_delta_unknown, n_tot, 1, 6, buf);
+ VG_(message)(Vg_DebugMsg,
+ " SP instr: delta unknown: %,7u (%s)",
+ n_SP_delta_unknown, buf );
}
=20
/*------------------------------------------------------------*/
@@ -192,6 +200,75 @@
}
=20
=20
+// Nb: if all is well, this generic case will typically be called someth=
ing
+// like < 10% of all (static) SP updates. If it's more than that, the a=
bove
+// code may be missing some cases.
+static void
+add_call_to_generic_SP_update(IRSB* bb, IRStmt* st, IRType typeof_SP,
+ Int sizeof_SP, Int offset_SP, Bool delta_k=
nown)
+{
+ IRTemp old_SP;
+ IRDirty *dcall;
+
+ /* Pass both the old and new SP values to this helper. */
+ old_SP =3D newIRTemp(bb->tyenv, typeof_SP);
+ addStmtToIRSB( bb,
+ IRStmt_WrTmp( old_SP, IRExpr_Get(offset_SP, typeof_SP)=
)=20
+ );
+
+ // Update SP first, then call the helper. This ensures that, in the
+ // new_mem_stack_* case, that the memory allocated is really allocate=
d
+ // before the helper is called, and thus the helper is able to access
+ // it if wants.
+ dcall =3D unsafeIRDirty_0_N(=20
+ 2/*regparms*/,=20
+ "VG_(unknown_SP_update)",=20
+ VG_(fnptr_to_fnentry)( &VG_(unknown_SP_update) ),
+ mkIRExprVec_2( IRExpr_RdTmp(old_SP),
+ st->Ist.Put.data )=20
+ );
+ addStmtToIRSB( bb, st );
+ addStmtToIRSB( bb, IRStmt_Dirty(dcall) );
+
+ clear_SP_aliases();
+ add_SP_alias(st->Ist.Put.data->Iex.RdTmp.tmp, 0);
+
+ if (delta_known) {
+ n_SP_delta_known_but_unhandled_by_core++;
+ } else {
+ n_SP_delta_unknown++;
+ }
+}
+
+static void
+maybe_add_call_to_specialised_SP_update(=20
+ IRSB* bb, IRStmt* st, Char* tdict_fn_string,
+ VG_REGPARM(1) void(*tdict_fn)(Addr), IRTemp tmp, Int delta)
+{
+ if (tdict_fn) {
+
+ IRDirty *dcall =3D unsafeIRDirty_0_N(
+ 1/*regparms*/,
+ tdict_fn_string,
+ VG_(fnptr_to_fnentry)( tdict_fn ),
+ mkIRExprVec_1(IRExpr_RdTmp(tmp))
+ );
+
+ // Update SP first, then call the helper. See comment in
+ // add_call_to_generic_SP_update() for why.
+ addStmtToIRSB( bb, st );
+ addStmtToIRSB( bb, IRStmt_Dirty(dcall) );
+
+ update_SP_aliases(-delta);
+
+ n_SP_delta_known_and_handled++;
+
+ } else {
+ n_SP_delta_known_but_unhandled_by_tool++;
+ } =20
+}
+
+
/* For tools that want to know about SP changes, this pass adds
in the appropriate hooks. We have to do it after the tool's
instrumentation, so the tool doesn't have to worry about the C calls
@@ -216,9 +293,7 @@
IRType hWordTy )
{
Int i, j, minoff_ST, maxoff_ST, sizeof_SP, offset_SP;
- IRDirty *dcall, *d;
IRStmt* st;
- IRExpr* e;
IRRegArray* descr;
IRType typeof_SP;
Long delta, con;
@@ -245,178 +320,137 @@
(sizeof_SP=3D=3D4 ? (Long)(Int)(con->Ico.U32) =
\
: (Long)(con->Ico.U64))
=20
-// XXX: convert this to a function
-# define DO(kind, syze, tmpp) =
\
- do { =
\
- if (!VG_(tdict).track_##kind##_mem_stack_##syze) =
\
- goto generic; =
\
- =
\
- /* I don't know if it's really necessary to say that the */ =
\
- /* call reads the stack pointer. But anyway, we do. */ =
\
- dcall =3D unsafeIRDirty_0_N( =
\
- 1/*regparms*/, =
\
- "track_" #kind "_mem_stack_" #syze, =
\
- VG_(fnptr_to_fnentry)( =
\
- VG_(tdict).track_##kind##_mem_stack_##syze ), =
\
- mkIRExprVec_1(IRExpr_RdTmp(tmpp)) =
\
- ); =
\
- dcall->nFxState =3D 1; =
\
- dcall->fxState[0].fx =3D Ifx_Read; =
\
- dcall->fxState[0].offset =3D layout->offset_SP; =
\
- dcall->fxState[0].size =3D layout->sizeof_SP; =
\
- =
\
- addStmtToIRSB( bb, st ); =
\
- =
\
- addStmtToIRSB( bb, IRStmt_Dirty(dcall) ); =
\
- =
\
- update_SP_aliases(-delta); =
\
- =
\
- n_SP_updates_fast++; =
\
- =
\
- } while (0)
-
clear_SP_aliases();
=20
for (i =3D 0; i < sb_in->stmts_used; i++) {
=20
st =3D sb_in->stmts[i];
=20
- /* t =3D Get(sp): curr =3D t, delta =3D 0 */
- if (st->tag !=3D Ist_WrTmp) goto case2;
- e =3D st->Ist.WrTmp.data;
- if (e->tag !=3D Iex_Get) goto case2;
- if (e->Iex.Get.offset !=3D offset_SP) goto case2;
- if (e->Iex.Get.ty !=3D typeof_SP) goto case2;
- add_SP_alias(st->Ist.WrTmp.tmp, 0);
- addStmtToIRSB( bb, st );
- continue;
+ switch (st->tag) {
=20
- case2:
- /* t' =3D curr +/- const: curr =3D t', delta +=3D/-=3D const */
- if (st->tag !=3D Ist_WrTmp) goto case3;
- e =3D st->Ist.WrTmp.data;
- if (e->tag !=3D Iex_Binop) goto case3;
- if (e->Iex.Binop.arg1->tag !=3D Iex_RdTmp) goto case3;
- if (!get_SP_delta(e->Iex.Binop.arg1->Iex.RdTmp.tmp, &delta)) goto =
case3;
- if (e->Iex.Binop.arg2->tag !=3D Iex_Const) goto case3;
- if (!IS_ADD_OR_SUB(e->Iex.Binop.op)) goto case3;
- con =3D GET_CONST(e->Iex.Binop.arg2->Iex.Const.con);
- if (IS_ADD(e->Iex.Binop.op)) {
- add_SP_alias(st->Ist.WrTmp.tmp, delta + con);
- } else {
- add_SP_alias(st->Ist.WrTmp.tmp, delta - con);
- }
- addStmtToIRSB( bb, st );
- continue;
-
- case3:
- /* t' =3D curr: curr =3D t' */
- if (st->tag !=3D Ist_WrTmp) goto case4;
- e =3D st->Ist.WrTmp.data;
- if (e->tag !=3D Iex_RdTmp) goto case4;
- if (!get_SP_delta(e->Iex.RdTmp.tmp, &delta)) goto case4;
- add_SP_alias(st->Ist.WrTmp.tmp, delta);
- addStmtToIRSB( bb, st );
- continue;
-
- case4:
- /* Put(sp) =3D curr */
- if (st->tag !=3D Ist_Put) goto case5;
- if (st->Ist.Put.offset !=3D offset_SP) goto case5;
- if (st->Ist.Put.data->tag !=3D Iex_RdTmp) goto case5;
- if (get_SP_delta(st->Ist.Put.data->Iex.RdTmp.tmp, &delta)) {
- IRTemp tttmp =3D st->Ist.Put.data->Iex.RdTmp.tmp;
- switch (delta) {
- case 0: continue;
- case 4: DO(die, 4, tttmp); continue;
- case -4: DO(new, 4, tttmp); continue;
- case 8: DO(die, 8, tttmp); continue;
- case -8: DO(new, 8, tttmp); continue;
- case 12: DO(die, 12, tttmp); continue;
- case -12: DO(new, 12, tttmp); continue;
- case 16: DO(die, 16, tttmp); continue;
- case -16: DO(new, 16, tttmp); continue;
- case 32: DO(die, 32, tttmp); continue;
- case -32: DO(new, 32, tttmp); continue;
- case 112: DO(die, 112, tttmp); continue;
- case -112: DO(new, 112, tttmp); continue;
- case 128: DO(die, 128, tttmp); continue;
- case -128: DO(new, 128, tttmp); continue;
- case 144: DO(die, 144, tttmp); continue;
- case -144: DO(new, 144, tttmp); continue;
- case 160: DO(die, 160, tttmp); continue;
- case -160: DO(new, 160, tttmp); continue;
- default: =20
- /* common values for ppc64: 144 128 160 112 176 */
- n_SP_updates_generic_known++;
- goto generic;
+ case Ist_WrTmp: {
+ IRExpr* data =3D st->Ist.WrTmp.data;
+ if (data->tag =3D=3D Iex_Get &&
+ data->Iex.Get.offset =3D=3D offset_SP &&
+ data->Iex.Get.ty =3D=3D typeof_SP)
+ {
+ /* t =3D Get(sp): curr =3D t, delta =3D 0 */
+ add_SP_alias(st->Ist.WrTmp.tmp, 0);
+ }
+ else if (data->tag =3D=3D Iex_Binop &&
+ data->Iex.Binop.arg1->tag =3D=3D Iex_RdTmp &&
+ data->Iex.Binop.arg2->tag =3D=3D Iex_Const &&
+ get_SP_delta(data->Iex.Binop.arg1->Iex.RdTmp.tmp,&d=
elta) &&
+ IS_ADD_OR_SUB(data->Iex.Binop.op))
+ {
+ /* t =3D curr +/- const: curr =3D t, delta +=3D/-=3D c=
onst */
+ con =3D GET_CONST(data->Iex.Binop.arg2->Iex.Const.con);
+ if (IS_ADD(data->Iex.Binop.op)) {
+ add_SP_alias(st->Ist.WrTmp.tmp, delta + con);
+ } else {
+ add_SP_alias(st->Ist.WrTmp.tmp, delta - con);
+ }
+ }
+ else if (data->tag =3D=3D Iex_RdTmp &&
+ get_SP_delta(data->Iex.RdTmp.tmp, &delta))
+ {
+ /* t =3D curr: curr =3D t */
+ add_SP_alias(st->Ist.WrTmp.tmp, delta);
+ }
+ addStmtToIRSB( bb, st );
+ break;
}
- } else {
- IRTemp old_SP;
- n_SP_updates_generic_unknown++;
=20
- // Nb: if all is well, this generic case will typically be
- // called something like every 1000th SP update. If it's more =
than
- // that, the above code may be missing some cases.
- generic:
- /* Pass both the old and new SP values to this helper. */
- old_SP =3D newIRTemp(bb->tyenv, typeof_SP);
- addStmtToIRSB(=20
- bb,
- IRStmt_WrTmp( old_SP, IRExpr_Get(offset_SP, typeof_SP) )=20
- );
+ #define DO(kind, size, tmp) \
+ maybe_add_call_to_specialised_SP_update( \
+ bb, st, "VG_(tdict)." #kind "_mem_stack_" #size, \
+ VG_(tdict).track_##kind##_mem_stack_##size, t, delta);
+ case Ist_Put:
+ if (st->Ist.Put.offset =3D=3D offset_SP &&
+ st->Ist.Put.data->tag =3D=3D Iex_RdTmp)
+ {
+ if (get_SP_delta(st->Ist.Put.data->Iex.RdTmp.tmp, &delta=
)) {
+ /* Put(sp) =3D curr */
+ IRTemp t =3D st->Ist.Put.data->Iex.RdTmp.tmp;
+ switch (delta) {
+ /* common values for ppc64: 144 128 160 112 176 */
+ case 0: break;
+ case 4: DO(die, 4, t); break;
+ case -4: DO(new, 4, t); break;
+ case 8: DO(die, 8, t); break;
+ case -8: DO(new, 8, t); break;
+ case 12: DO(die, 12, t); break;
+ case -12: DO(new, 12, t); break;
+ case 16: DO(die, 16, t); break;
+ case -16: DO(new, 16, t); break;
+ case 32: DO(die, 32, t); break;
+ case -32: DO(new, 32, t); break;
+// XXX: omitting the rare cases here.
+// case 112: DO(die, 112, t); break;
+// case -112: DO(new, 112, t); break;
+// case 128: DO(die, 128, t); break;
+// case -128: DO(new, 128, t); break;
+// case 144: DO(die, 144, t); break;
+// case -144: DO(new, 144, t); break;
+// case 160: DO(die, 160, t); break;
+// case -160: DO(new, 160, t); break;
+ default: =20
+ add_call_to_generic_SP_update(bb, st, typeof_SP,
+ sizeof_SP, offset_=
SP,
+ /*delta_known*/Tru=
e);
+ break;
+ }
+ } else {
+ /* Put(sp) =3D non-curr */
+ add_call_to_generic_SP_update(bb, st, typeof_SP,
+ sizeof_SP, offset_SP,
+ /*delta_unknown*/False);
+ }
+ } else {
+ // 'Put' of a register other than SP.
+ addStmtToIRSB( bb, st );
+ }
+ break;
=20
- addStmtToIRSB( bb, st );
+ case Ist_PutI:
+ /* PutI or Dirty call which overlaps SP: complain. We can't
+ deal with SP changing in weird ways (well, we can, but no=
t at
+ this time of night). */
+ descr =3D st->Ist.PutI.descr;
+ minoff_ST =3D descr->base;
+ maxoff_ST =3D descr->base + descr->nElems *
+ sizeofIRType(descr->elemTy) - =
1;
+ if (!(offset_SP > maxoff_ST ||=20
+ (offset_SP + sizeof_SP - 1) < minoff_ST)) {
+ VG_(core_panic)("vg_SP_update_pass: PutI which overlaps S=
P");
+ }
+ addStmtToIRSB( bb, st );
+ break;
=20
- // XXX: have to do this after the SP is changed for Memcheck --=
it
- // writes a value to the new stack area, and if the stack needs=
to
- // be extended we have to do that before we can write to it.
- dcall =3D unsafeIRDirty_0_N(=20
- 2/*regparms*/,=20
- "VG_(unknown_SP_update)",=20
- VG_(fnptr_to_fnentry)( &VG_(unknown_SP_update) ),
- mkIRExprVec_2( IRExpr_RdTmp(old_SP), st->Ist.Put.dat=
a )=20
- );
- addStmtToIRSB( bb, IRStmt_Dirty(dcall) );
+ case Ist_Dirty: {
+ IRDirty* d =3D st->Ist.Dirty.details;
+ for (j =3D 0; j < d->nFxState; j++) {
+ minoff_ST =3D d->fxState[j].offset;
+ maxoff_ST =3D d->fxState[j].offset + d->fxState[j].size -=
1;
+ if (d->fxState[j].fx =3D=3D Ifx_Read || d->fxState[j].fx =
=3D=3D Ifx_None)
+ break;
+ if (!(offset_SP > maxoff_ST ||
+ (offset_SP + sizeof_SP - 1) < minoff_ST)) {
+ VG_(core_panic)("vg_SP_update_pass: Dirty which overla=
ps SP");
+ }
+ }
+ addStmtToIRSB( bb, st );
+ break;
+ }
=20
- clear_SP_aliases();
- add_SP_alias(st->Ist.Put.data->Iex.RdTmp.tmp, 0);
- continue;
+ default:
+ /* Not interesting. Just copy and keep going. */
+ addStmtToIRSB( bb, st );
+ break;
}
-
- case5:
- /* PutI or Dirty call which overlaps SP: complain. We can't
- deal with SP changing in weird ways (well, we can, but not at
- this time of night). */
- if (st->tag =3D=3D Ist_PutI) {
- descr =3D st->Ist.PutI.descr;
- minoff_ST =3D descr->base;
- maxoff_ST =3D descr->base + descr->nElems * sizeofIRType(descr-=
>elemTy) - 1;
- if (!(offset_SP > maxoff_ST || (offset_SP + sizeof_SP - 1) < mi=
noff_ST))
- goto complain;
- }
- if (st->tag =3D=3D Ist_Dirty) {
- d =3D st->Ist.Dirty.details;
- for (j =3D 0; j < d->nFxState; j++) {
- minoff_ST =3D d->fxState[j].offset;
- maxoff_ST =3D d->fxState[j].offset + d->fxState[j].size - 1;
- if (d->fxState[j].fx =3D=3D Ifx_Read || d->fxState[j].fx =3D=
=3D Ifx_None)
- continue;
- if (!(offset_SP > maxoff_ST || (offset_SP + sizeof_SP - 1) <=
minoff_ST))
- goto complain;
- }
- }
-
- /* well, not interesting. Just copy and keep going. */
- addStmtToIRSB( bb, st );
-
} /* for (i =3D 0; i < sb_in->stmts_used; i++) */
=20
return bb;
-
- complain:
- VG_(core_panic)("vg_SP_update_pass: PutI or Dirty which overlaps SP")=
;
-
}
=20
/*------------------------------------------------------------*/
Modified: branches/ORIGIN_TRACKING/memcheck/mc_main.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ORIGIN_TRACKING/memcheck/mc_main.c 2007-01-16 22:04:50 UTC (=
rev 6528)
+++ branches/ORIGIN_TRACKING/memcheck/mc_main.c 2007-01-17 04:35:59 UTC (=
rev 6529)
@@ -31,6 +31,7 @@
*/
=20
// XXX: origin-tracking todo:
+// - keep fixing the SP-delta instrumentation in m_translate.c
// - try recording ExeContexts for stack allocation sites, alter the
// new_mem_stack* events to allow the origin_low32 to be passed in.
// - do timings:
Modified: branches/ORIGIN_TRACKING/memcheck/mc_translate.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ORIGIN_TRACKING/memcheck/mc_translate.c 2007-01-16 22:04:50 =
UTC (rev 6528)
+++ branches/ORIGIN_TRACKING/memcheck/mc_translate.c 2007-01-17 04:35:59 =
UTC (rev 6529)
@@ -810,6 +810,8 @@
Char perc0[7], perc1[7], perc2[7];
UInt n_total =3D origin_tracking_2 + origin_tracking_1 + origin_track=
ing_0;
=20
+ // XXX: this is all out-of-date now
+ =20
// XXX: there's an off-by-one error in percentify -- if I use 6 inste=
ad
// of 5 here, the buffers get overrun. (there's one in snprintf, too=
)
// [XXX: the snprintf one has been fixed, I think]
|
|
From: Tom H. <to...@co...> - 2007-01-17 03:56:28
|
Nightly build on dunsmere ( athlon, Fedora Core 6 ) started at 2007-01-17 03:30:06 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 254 tests, 4 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/pth_detached (stdout) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 253 tests, 4 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/pth_detached (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Jan 17 03:44:14 2007 --- new.short Wed Jan 17 03:56:20 2007 *************** *** 8,10 **** ! == 253 tests, 4 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 254 tests, 4 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) |
|
From: Tom H. <th...@cy...> - 2007-01-17 03:44:57
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2007-01-17 03:00:02 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 287 tests, 8 stderr failures, 3 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/vcpu_fnfns (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/amd64/bug132918 (stdout) none/tests/amd64/bug132918 (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 285 tests, 8 stderr failures, 4 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/vcpu_fnfns (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/amd64/bug132918 (stdout) none/tests/amd64/bug132918 (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/tls (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Jan 17 03:36:43 2007 --- new.short Wed Jan 17 03:44:50 2007 *************** *** 8,10 **** ! == 285 tests, 8 stderr failures, 4 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 287 tests, 8 stderr failures, 3 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) *************** *** 20,22 **** none/tests/mremap2 (stdout) - none/tests/tls (stdout) --- 20,21 ---- |
|
From: Tom H. <th...@cy...> - 2007-01-17 03:24:08
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2007-01-17 03:15:03 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Last 20 lines of verbose log follow echo /tmp/ccXIFKeL.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccXIFKeL.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccXIFKeL.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccXIFKeL.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccXIFKeL.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccXIFKeL.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccXIFKeL.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccXIFKeL.s:5233: Error: no such instruction: `fisttpq -56(%ebp)' make[5]: *** [insn_sse3.o] Error 1 rm insn_mmx.c insn_sse2.c insn_fpu.c insn_mmxext.c insn_sse.c insn_sse3.c insn_cmov.c insn_basic.c make[5]: Leaving directory `/tmp/valgrind.15046/valgrind/none/tests/x86' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/valgrind.15046/valgrind/none/tests/x86' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/valgrind.15046/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/valgrind.15046/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/valgrind.15046/valgrind' make: *** [check] Error 2 ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Last 20 lines of verbose log follow echo /tmp/ccwLtqTj.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccwLtqTj.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccwLtqTj.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccwLtqTj.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccwLtqTj.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccwLtqTj.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccwLtqTj.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccwLtqTj.s:5233: Error: no such instruction: `fisttpq -56(%ebp)' make[5]: *** [insn_sse3.o] Error 1 rm insn_mmx.c insn_sse2.c insn_fpu.c insn_mmxext.c insn_sse.c insn_sse3.c insn_cmov.c insn_basic.c make[5]: Leaving directory `/tmp/valgrind.15046/valgrind/none/tests/x86' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/valgrind.15046/valgrind/none/tests/x86' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/valgrind.15046/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/valgrind.15046/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/valgrind.15046/valgrind' make: *** [check] Error 2 ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Jan 17 03:19:31 2007 --- new.short Wed Jan 17 03:23:58 2007 *************** *** 7,16 **** Last 20 lines of verbose log follow echo ! /tmp/ccwLtqTj.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccwLtqTj.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccwLtqTj.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccwLtqTj.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccwLtqTj.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccwLtqTj.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccwLtqTj.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccwLtqTj.s:5233: Error: no such instruction: `fisttpq -56(%ebp)' make[5]: *** [insn_sse3.o] Error 1 --- 7,16 ---- Last 20 lines of verbose log follow echo ! /tmp/ccXIFKeL.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccXIFKeL.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccXIFKeL.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccXIFKeL.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccXIFKeL.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccXIFKeL.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccXIFKeL.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccXIFKeL.s:5233: Error: no such instruction: `fisttpq -56(%ebp)' make[5]: *** [insn_sse3.o] Error 1 |
|
From: Tom H. <th...@cy...> - 2007-01-17 03:22:48
|
Nightly build on dellow ( x86_64, Fedora Core 6 ) started at 2007-01-17 03:10:04 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 285 tests, 3 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 283 tests, 3 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/pth_detached (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Jan 17 03:16:31 2007 --- new.short Wed Jan 17 03:22:41 2007 *************** *** 8,10 **** ! == 283 tests, 3 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 285 tests, 3 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/pointer-trace (stderr) *************** *** 13,15 **** none/tests/mremap2 (stdout) - none/tests/pth_detached (stdout) --- 13,14 ---- |
|
From: Tom H. <th...@cy...> - 2007-01-17 03:16:50
|
Nightly build on lloyd ( x86_64, Fedora Core 3 ) started at 2007-01-17 03:05:04 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 285 tests, 5 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 283 tests, 5 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Jan 17 03:10:57 2007 --- new.short Wed Jan 17 03:16:37 2007 *************** *** 8,10 **** ! == 283 tests, 5 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 285 tests, 5 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/pointer-trace (stderr) |
|
From: <js...@ac...> - 2007-01-17 01:16:32
|
Nightly build on g5 ( SuSE 10.1, ppc970 ) started at 2007-01-17 02:00:01 CET 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 == 224 tests, 6 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/pointer-trace (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |