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
(11) |
2
(9) |
3
(11) |
4
(12) |
5
(11) |
|
6
(9) |
7
(13) |
8
(6) |
9
(7) |
10
(7) |
11
(11) |
12
(13) |
|
13
(7) |
14
(6) |
15
(7) |
16
(19) |
17
(20) |
18
(9) |
19
(9) |
|
20
(6) |
21
(7) |
22
(11) |
23
(16) |
24
(14) |
25
(24) |
26
(16) |
|
27
(20) |
28
(58) |
29
(7) |
30
(10) |
31
(15) |
|
|
|
From: <js...@ac...> - 2006-08-29 10:50:29
|
Nightly build on minnie ( SuSE 10.0, ppc32 ) started at 2006-08-29 09:00:02 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 == 207 tests, 10 stderr failures, 6 stdout failures, 0 posttest failures == memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/leakotron (stdout) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigaltstack (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (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: Tom H. <th...@cy...> - 2006-08-29 03:21:10
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2006-08-29 03:00:05 BST 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 == 268 tests, 6 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/mempool (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/tls (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 == 266 tests, 6 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/mempool (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (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 Tue Aug 29 03:44:55 2006 --- new.short Tue Aug 29 04:21:02 2006 *************** *** 8,10 **** ! == 266 tests, 6 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/mempool (stderr) --- 8,10 ---- ! == 268 tests, 6 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/mempool (stderr) |
|
From: <js...@ac...> - 2006-08-29 03:16:12
|
Nightly build on phoenix ( SuSE 10.0 ) started at 2006-08-29 03:30:01 BST 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 == 237 tests, 5 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/leak-tree (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 == 236 tests, 5 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/leak-tree (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 Tue Aug 29 03:49:17 2006 --- new.short Tue Aug 29 04:16:32 2006 *************** *** 10,12 **** ! == 236 tests, 5 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/leak-tree (stderr) --- 10,12 ---- ! == 237 tests, 5 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/leak-tree (stderr) |
|
From: Tom H. <to...@co...> - 2006-08-29 02:46:19
|
Nightly build on dunsmere ( athlon, Fedora Core 5 ) started at 2006-08-29 03:30:07 BST 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 == 239 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/xml1 (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 == 238 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/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Tue Aug 29 03:38:16 2006 --- new.short Tue Aug 29 03:46:10 2006 *************** *** 8,10 **** ! == 238 tests, 5 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 239 tests, 5 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/pointer-trace (stderr) |
|
From: Tom H. <th...@cy...> - 2006-08-29 02:24:59
|
Nightly build on dellow ( x86_64, Fedora Core 5 ) started at 2006-08-29 03:10:03 BST 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 == 266 tests, 4 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/mempool (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (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 == 264 tests, 4 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/mempool (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Tue Aug 29 03:17:33 2006 --- new.short Tue Aug 29 03:24:54 2006 *************** *** 8,10 **** ! == 264 tests, 4 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/mempool (stderr) --- 8,10 ---- ! == 266 tests, 4 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/mempool (stderr) |
|
From: Tom H. <th...@cy...> - 2006-08-29 02:24:30
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2006-08-29 03:15:02 BST 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/ccujrOwk.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccujrOwk.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccujrOwk.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccujrOwk.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccujrOwk.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccujrOwk.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccujrOwk.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccujrOwk.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.25576/valgrind/none/tests/x86' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/valgrind.25576/valgrind/none/tests/x86' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/valgrind.25576/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/valgrind.25576/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/valgrind.25576/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/ccA5vWvc.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccA5vWvc.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccA5vWvc.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccA5vWvc.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccA5vWvc.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccA5vWvc.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccA5vWvc.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccA5vWvc.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.25576/valgrind/none/tests/x86' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/valgrind.25576/valgrind/none/tests/x86' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/valgrind.25576/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/valgrind.25576/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/valgrind.25576/valgrind' make: *** [check] Error 2 ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Tue Aug 29 03:19:44 2006 --- new.short Tue Aug 29 03:24:24 2006 *************** *** 7,16 **** Last 20 lines of verbose log follow echo ! /tmp/ccA5vWvc.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccA5vWvc.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccA5vWvc.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccA5vWvc.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccA5vWvc.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccA5vWvc.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccA5vWvc.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccA5vWvc.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/ccujrOwk.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccujrOwk.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccujrOwk.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccujrOwk.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccujrOwk.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccujrOwk.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccujrOwk.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccujrOwk.s:5233: Error: no such instruction: `fisttpq -56(%ebp)' make[5]: *** [insn_sse3.o] Error 1 |
|
From: Tom H. <th...@cy...> - 2006-08-29 02:20:31
|
Nightly build on lloyd ( x86_64, Fedora Core 3 ) started at 2006-08-29 03:05:08 BST 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 == 266 tests, 6 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/leakotron (stdout) memcheck/tests/mempool (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 valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 264 tests, 6 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/leakotron (stdout) memcheck/tests/mempool (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 Tue Aug 29 03:13:17 2006 --- new.short Tue Aug 29 03:20:18 2006 *************** *** 8,10 **** ! == 264 tests, 6 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/leakotron (stdout) --- 8,10 ---- ! == 266 tests, 6 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/leakotron (stdout) |
|
From: <sv...@va...> - 2006-08-28 23:00:02
|
Author: sewardj
Date: 2006-08-28 23:59:58 +0100 (Mon, 28 Aug 2006)
New Revision: 6041
Log:
Merge r6040 (fix for: 'cfsi->len > 0 && cfsi->len < 2000000' failed)
Modified:
branches/VALGRIND_3_2_BRANCH/coregrind/m_debuginfo/storage.c
Modified: branches/VALGRIND_3_2_BRANCH/coregrind/m_debuginfo/storage.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/VALGRIND_3_2_BRANCH/coregrind/m_debuginfo/storage.c 2006-08-=
28 22:56:59 UTC (rev 6040)
+++ branches/VALGRIND_3_2_BRANCH/coregrind/m_debuginfo/storage.c 2006-08-=
28 22:59:58 UTC (rev 6041)
@@ -308,7 +308,13 @@
ML_(ppDiCfSI)(cfsi);
}
=20
- vg_assert(cfsi->len > 0 && cfsi->len < 2000000);
+ /* sanity */
+ vg_assert(cfsi->len > 0);
+ /* If this fails, the implication is you have a single procedure
+ with more than 5 million bytes of code. Which is pretty
+ unlikely. Either that, or the debuginfo reader is somehow
+ broken. */
+ vg_assert(cfsi->len < 5000000);
=20
/* Rule out ones which are completely outside the segment. These
probably indicate some kind of bug, but for the meantime ignore
|
|
From: <sv...@va...> - 2006-08-28 22:57:04
|
Author: sewardj
Date: 2006-08-28 23:56:59 +0100 (Mon, 28 Aug 2006)
New Revision: 6040
Log:
Slacken assertion slightly, and add comments. Fixes #133051
('cfsi->len > 0 && cfsi->len < 2000000' failed)
Modified:
trunk/coregrind/m_debuginfo/storage.c
Modified: trunk/coregrind/m_debuginfo/storage.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
--- trunk/coregrind/m_debuginfo/storage.c 2006-08-28 21:51:34 UTC (rev 60=
39)
+++ trunk/coregrind/m_debuginfo/storage.c 2006-08-28 22:56:59 UTC (rev 60=
40)
@@ -308,7 +308,13 @@
ML_(ppDiCfSI)(cfsi);
}
=20
- vg_assert(cfsi->len > 0 && cfsi->len < 2000000);
+ /* sanity */
+ vg_assert(cfsi->len > 0);
+ /* If this fails, the implication is you have a single procedure
+ with more than 5 million bytes of code. Which is pretty
+ unlikely. Either that, or the debuginfo reader is somehow
+ broken. */
+ vg_assert(cfsi->len < 5000000);
=20
/* Rule out ones which are completely outside the segment. These
probably indicate some kind of bug, but for the meantime ignore
|
|
From: Bryan M. <om...@br...> - 2006-08-28 21:57:25
|
Julian Seward wrote:
>> Looking at the two programs side by side, I think the real crux of it is
>> the differing epilog code. I think I am falling over trying to detect
>> when there is a value being returned through the accumulator.
>
> This sounds like a dataflow/liveness problem. So, let me unwind
> one more level. Why do you want to know whether the accumulator
> contains a live vs dead value at the point the function returns?
> What are you going to do with that info?
>
> J
>
Julian,
that's exactly the problem. If the accumulator holds a pointer to a
memory block and is live, it should be left alone and tracked out of the
function. If it is dead, it should be culled as the function exits,
possibly generating a leak report if it is the final pointer to that block.
If the pointer is dead but is left until it is over-written, the
location of the leak report is inaccurate.
The ability to detect the dead value allows function scope related
checking for leaks. As an example (this is scope2.c in the test directory):
#include <stdlib.h>
static void func1(void)
{
char *pointer = 0;
pointer = malloc(64); /* Line 7 */
return;
} /* Leak report Line 10 */
int main(int argc, char *argv[])
{
func1();
return 0; /* Line 16 */
}
At line 7, the malloc() call returns the pointer in the accumulator
which is then also saved into the stack variable "pointer". As the
function exits, the stack unwinds, removing the reference in "pointer"
but the accumulator will still hold a reference. If the accumulator is
detected as being dead, a leak report will be generated at line 10 as we
remove the reference it is holding and discover it is the last one. If
we don't invalidate the accumulator, we get the leak report at line 16
instead when the reference is overwritten by 0 in order to be returned
by main().
A report at line 16 is not only inferior to a report at line 10, it is
not going to provide the clarity that Omega should supply in it's goal
to assist in tracking down memory leaks: a report at line 10 makes it
pretty obvious that something went out of scope whilst a report at line
16 will leave most people scratching their heads.
It's pretty fundamental to the whole thing which is why I could do with
a robust method for determining when to cull registers on exit and when
to leave them alone - the ABI is simply not enough.
Hope that explains it,
Bryan
|
|
From: <sv...@va...> - 2006-08-28 21:51:40
|
Author: sewardj Date: 2006-08-28 22:51:34 +0100 (Mon, 28 Aug 2006) New Revision: 6039 Log: Partial bump of version number. Modified: branches/VALGRIND_3_2_BRANCH/configure.in Modified: branches/VALGRIND_3_2_BRANCH/configure.in =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/VALGRIND_3_2_BRANCH/configure.in 2006-08-28 21:32:23 UTC (re= v 6038) +++ branches/VALGRIND_3_2_BRANCH/configure.in 2006-08-28 21:51:34 UTC (re= v 6039) @@ -8,7 +8,7 @@ ##------------------------------------------------------------## =20 # Process this file with autoconf to produce a configure script. -AC_INIT(Valgrind, 3.2.0, val...@li...) +AC_INIT(Valgrind, 3.2.1.SVN, val...@li...) AC_CONFIG_SRCDIR(coregrind/m_main.c) AM_CONFIG_HEADER(config.h) AM_INIT_AUTOMAKE |
|
From: <sv...@va...> - 2006-08-28 21:32:25
|
Author: sewardj
Date: 2006-08-28 22:32:23 +0100 (Mon, 28 Aug 2006)
New Revision: 6038
Log:
Update.
Modified:
trunk/docs/internals/3_2_BUGSTATUS.txt
Modified: trunk/docs/internals/3_2_BUGSTATUS.txt
=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
--- trunk/docs/internals/3_2_BUGSTATUS.txt 2006-08-28 21:18:59 UTC (rev 6=
037)
+++ trunk/docs/internals/3_2_BUGSTATUS.txt 2006-08-28 21:32:23 UTC (rev 6=
038)
@@ -4,6 +4,7 @@
wontfix =3D will not fix on this branch
many =3D fix composed of many commits
sse3fix =3D fixed by the SSE3 commits
+[W] =3D waiting for feedback from bug reporter
=20
------- Bugs reported after (in) 3.2.0 ------
=20
@@ -36,9 +37,13 @@
131298 =3D=3D131481
=20
vx1638 vx1648 132146 Programs with long sequences of bswap[l,q=
]s
-pending pending 132918 vex amd64->IR: 0xD9 0xF8 (fprem)
-pending pending 132813 Assertion at priv/guest-x86/toIR.c:652 fa=
ils
=20
+pending pending [W] 132918 vex amd64->IR: 0xD9 0xF8 (fprem)
+vx1652,3 vx1654 132813 Assertion at priv/guest-x86/toIR.c:652 fa=
ils
+pending pending [W] 133051 'cfsi->len > 0 && cfsi->len < 2000000' fa=
iled
+pending pending [W] 133054 'make install' fails with syntax errors
+v6036 v6037 132722 valgrind header files are not standard C
+
v5990 v6023 n-i-bz Livelocks entire machine (users list,
17 June, Timothy B. Terriberry)
v5991,4,6 v6024 n-i-bz Graydon leak checking fix
|
|
From: <sv...@va...> - 2006-08-28 21:31:37
|
Author: sewardj
Date: 2006-08-28 22:31:32 +0100 (Mon, 28 Aug 2006)
New Revision: 1654
Log:
Merge r1652,3 (fix for: Assertion at priv/guest-x86/toIR.c:652 fails)
Modified:
branches/VEX_3_2_BRANCH/priv/guest-amd64/toIR.c
branches/VEX_3_2_BRANCH/priv/guest-x86/toIR.c
Modified: branches/VEX_3_2_BRANCH/priv/guest-amd64/toIR.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/VEX_3_2_BRANCH/priv/guest-amd64/toIR.c 2006-08-28 18:54:18 U=
TC (rev 1653)
+++ branches/VEX_3_2_BRANCH/priv/guest-amd64/toIR.c 2006-08-28 21:31:32 U=
TC (rev 1654)
@@ -13134,6 +13134,10 @@
t2 =3D newTemp(ty);
assign( t1, binop(Iop_Sub64,getIReg64(R_RSP),mkU64(sz)) );
putIReg64(R_RSP, mkexpr(t1) );
+ /* stop mkU16 asserting if d32 is a negative 16-bit number
+ (bug #132813) */
+ if (ty =3D=3D Ity_I16)
+ d64 &=3D 0xFFFF;
storeLE( mkexpr(t1), mkU(ty,d64) );
DIP("push%c $%lld\n", nameISize(sz), (Long)d64);
break;
Modified: branches/VEX_3_2_BRANCH/priv/guest-x86/toIR.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/VEX_3_2_BRANCH/priv/guest-x86/toIR.c 2006-08-28 18:54:18 UTC=
(rev 1653)
+++ branches/VEX_3_2_BRANCH/priv/guest-x86/toIR.c 2006-08-28 21:31:32 UTC=
(rev 1654)
@@ -11728,6 +11728,10 @@
t1 =3D newTemp(Ity_I32); t2 =3D newTemp(ty);
assign( t1, binop(Iop_Sub32,getIReg(4,R_ESP),mkU32(sz)) );
putIReg(4, R_ESP, mkexpr(t1) );
+ /* stop mkU16 asserting if d32 is a negative 16-bit number
+ (bug #132813) */
+ if (ty =3D=3D Ity_I16)
+ d32 &=3D 0xFFFF;
storeLE( mkexpr(t1), mkU(ty,d32) );
DIP("push%c $0x%x\n", nameISize(sz), d32);
break;
|
|
From: Julian S. <js...@ac...> - 2006-08-28 21:30:06
|
> Looking at the two programs side by side, I think the real crux of it is > the differing epilog code. I think I am falling over trying to detect > when there is a value being returned through the accumulator. This sounds like a dataflow/liveness problem. So, let me unwind one more level. Why do you want to know whether the accumulator contains a live vs dead value at the point the function returns? What are you going to do with that info? J |
|
From: <sv...@va...> - 2006-08-28 21:19:02
|
Author: sewardj
Date: 2006-08-28 22:18:59 +0100 (Mon, 28 Aug 2006)
New Revision: 6037
Log:
Merge r6036 (fix for: valgrind header files are not standard C)
Modified:
branches/VALGRIND_3_2_BRANCH/include/valgrind.h
Modified: branches/VALGRIND_3_2_BRANCH/include/valgrind.h
=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/VALGRIND_3_2_BRANCH/include/valgrind.h 2006-08-28 21:13:06 U=
TC (rev 6036)
+++ branches/VALGRIND_3_2_BRANCH/include/valgrind.h 2006-08-28 21:18:59 U=
TC (rev 6037)
@@ -2296,7 +2296,7 @@
/* Stack support. */
VG_USERREQ__STACK_REGISTER =3D 0x1501,
VG_USERREQ__STACK_DEREGISTER =3D 0x1502,
- VG_USERREQ__STACK_CHANGE =3D 0x1503,
+ VG_USERREQ__STACK_CHANGE =3D 0x1503
} Vg_ClientRequest;
=20
#if !defined(__GNUC__)
@@ -2376,6 +2376,7 @@
/* These requests allow control to move from the simulated CPU to the
real CPU, calling an arbitary function */
#define VALGRIND_NON_SIMD_CALL0(_qyy_fn) \
+ __extension__ \
({unsigned long _qyy_res; \
VALGRIND_DO_CLIENT_REQUEST(_qyy_res, 0 /* default return */, \
VG_USERREQ__CLIENT_CALL0, \
@@ -2385,6 +2386,7 @@
})
=20
#define VALGRIND_NON_SIMD_CALL1(_qyy_fn, _qyy_arg1) \
+ __extension__ \
({unsigned long _qyy_res; \
VALGRIND_DO_CLIENT_REQUEST(_qyy_res, 0 /* default return */, \
VG_USERREQ__CLIENT_CALL1, \
@@ -2394,6 +2396,7 @@
})
=20
#define VALGRIND_NON_SIMD_CALL2(_qyy_fn, _qyy_arg1, _qyy_arg2) \
+ __extension__ \
({unsigned long _qyy_res; \
VALGRIND_DO_CLIENT_REQUEST(_qyy_res, 0 /* default return */, \
VG_USERREQ__CLIENT_CALL2, \
@@ -2403,6 +2406,7 @@
})
=20
#define VALGRIND_NON_SIMD_CALL3(_qyy_fn, _qyy_arg1, _qyy_arg2, _qyy_arg3=
) \
+ __extension__ \
({unsigned long _qyy_res; \
VALGRIND_DO_CLIENT_REQUEST(_qyy_res, 0 /* default return */, \
VG_USERREQ__CLIENT_CALL3, \
@@ -2417,6 +2421,7 @@
the tool must record the errors with VG_(maybe_record_error)() or
VG_(unique_error)() for them to be counted. */
#define VALGRIND_COUNT_ERRORS \
+ __extension__ \
({unsigned int _qyy_res; \
VALGRIND_DO_CLIENT_REQUEST(_qyy_res, 0 /* default return */, \
VG_USERREQ__COUNT_ERRORS, \
|
|
From: <sv...@va...> - 2006-08-28 21:13:10
|
Author: sewardj
Date: 2006-08-28 22:13:06 +0100 (Mon, 28 Aug 2006)
New Revision: 6036
Log:
Make this file a bit more 'gcc -ansi -pedantic' friendly (bug #132722).
Modified:
trunk/include/valgrind.h
Modified: trunk/include/valgrind.h
=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
--- trunk/include/valgrind.h 2006-08-28 18:53:25 UTC (rev 6035)
+++ trunk/include/valgrind.h 2006-08-28 21:13:06 UTC (rev 6036)
@@ -2297,7 +2297,7 @@
/* Stack support. */
VG_USERREQ__STACK_REGISTER =3D 0x1501,
VG_USERREQ__STACK_DEREGISTER =3D 0x1502,
- VG_USERREQ__STACK_CHANGE =3D 0x1503,
+ VG_USERREQ__STACK_CHANGE =3D 0x1503
} Vg_ClientRequest;
=20
#if !defined(__GNUC__)
@@ -2377,6 +2377,7 @@
/* These requests allow control to move from the simulated CPU to the
real CPU, calling an arbitary function */
#define VALGRIND_NON_SIMD_CALL0(_qyy_fn) \
+ __extension__ \
({unsigned long _qyy_res; \
VALGRIND_DO_CLIENT_REQUEST(_qyy_res, 0 /* default return */, \
VG_USERREQ__CLIENT_CALL0, \
@@ -2386,6 +2387,7 @@
})
=20
#define VALGRIND_NON_SIMD_CALL1(_qyy_fn, _qyy_arg1) \
+ __extension__ \
({unsigned long _qyy_res; \
VALGRIND_DO_CLIENT_REQUEST(_qyy_res, 0 /* default return */, \
VG_USERREQ__CLIENT_CALL1, \
@@ -2395,6 +2397,7 @@
})
=20
#define VALGRIND_NON_SIMD_CALL2(_qyy_fn, _qyy_arg1, _qyy_arg2) \
+ __extension__ \
({unsigned long _qyy_res; \
VALGRIND_DO_CLIENT_REQUEST(_qyy_res, 0 /* default return */, \
VG_USERREQ__CLIENT_CALL2, \
@@ -2404,6 +2407,7 @@
})
=20
#define VALGRIND_NON_SIMD_CALL3(_qyy_fn, _qyy_arg1, _qyy_arg2, _qyy_arg3=
) \
+ __extension__ \
({unsigned long _qyy_res; \
VALGRIND_DO_CLIENT_REQUEST(_qyy_res, 0 /* default return */, \
VG_USERREQ__CLIENT_CALL3, \
@@ -2418,6 +2422,7 @@
the tool must record the errors with VG_(maybe_record_error)() or
VG_(unique_error)() for them to be counted. */
#define VALGRIND_COUNT_ERRORS \
+ __extension__ \
({unsigned int _qyy_res; \
VALGRIND_DO_CLIENT_REQUEST(_qyy_res, 0 /* default return */, \
VG_USERREQ__COUNT_ERRORS, \
|
|
From: <sv...@va...> - 2006-08-28 18:54:22
|
Author: sewardj
Date: 2006-08-28 19:54:18 +0100 (Mon, 28 Aug 2006)
New Revision: 1653
Log:
64-bit counterpart to v1652 (Stop mkU16 asserting if d32 is a negative
16-bit number (bug #132813)).
Modified:
trunk/priv/guest-amd64/toIR.c
Modified: trunk/priv/guest-amd64/toIR.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
--- trunk/priv/guest-amd64/toIR.c 2006-08-28 18:04:33 UTC (rev 1652)
+++ trunk/priv/guest-amd64/toIR.c 2006-08-28 18:54:18 UTC (rev 1653)
@@ -13134,6 +13134,10 @@
t2 =3D newTemp(ty);
assign( t1, binop(Iop_Sub64,getIReg64(R_RSP),mkU64(sz)) );
putIReg64(R_RSP, mkexpr(t1) );
+ /* stop mkU16 asserting if d32 is a negative 16-bit number
+ (bug #132813) */
+ if (ty =3D=3D Ity_I16)
+ d64 &=3D 0xFFFF;
storeLE( mkexpr(t1), mkU(ty,d64) );
DIP("push%c $%lld\n", nameISize(sz), (Long)d64);
break;
|
|
From: <sv...@va...> - 2006-08-28 18:53:29
|
Author: sewardj
Date: 2006-08-28 19:53:25 +0100 (Mon, 28 Aug 2006)
New Revision: 6035
Log:
64-bit regtest for #132813 (Assertion at priv/guest-x86/toIR.c:652 fails)
Added:
trunk/none/tests/amd64/bug132813-amd64.c
trunk/none/tests/amd64/bug132813-amd64.stderr.exp
trunk/none/tests/amd64/bug132813-amd64.stdout.exp
trunk/none/tests/amd64/bug132813-amd64.vgtest
Modified:
trunk/none/tests/amd64/Makefile.am
Modified: trunk/none/tests/amd64/Makefile.am
=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
--- trunk/none/tests/amd64/Makefile.am 2006-08-28 18:09:46 UTC (rev 6034)
+++ trunk/none/tests/amd64/Makefile.am 2006-08-28 18:53:25 UTC (rev 6035)
@@ -6,6 +6,8 @@
=20
EXTRA_DIST =3D $(noinst_SCRIPTS) \
bug127521-64.vgtest bug127521-64.stdout.exp bug127521-64.stderr.exp \
+ bug132813-amd64.vgtest bug132813-amd64.stdout.exp \
+ bug132813-amd64.stderr.exp \
clc.vgtest clc.stdout.exp clc.stderr.exp \
faultstatus.disabled faultstatus.stderr.exp \
fcmovnu.vgtest fcmovnu.stderr.exp fcmovnu.stdout.exp \
@@ -22,7 +24,7 @@
=20
=20
check_PROGRAMS =3D \
- bug127521-64 \
+ bug127521-64 bug132813-amd64 \
clc \
faultstatus fcmovnu fxtract $(INSN_TESTS) looper jrcxz smc1 shrld \
nibz_bennee_mmap
Added: trunk/none/tests/amd64/bug132813-amd64.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
--- trunk/none/tests/amd64/bug132813-amd64.c (rev=
0)
+++ trunk/none/tests/amd64/bug132813-amd64.c 2006-08-28 18:53:25 UTC (rev=
6035)
@@ -0,0 +1,170 @@
+
+#include <stdio.h>
+
+void do_pushb_pos ( void )
+{
+ unsigned long long int block[3];
+ __asm__ __volatile__ (
+ "movq %0, %%rdx\n\t"
+ "pushq $0x55555555\n\t"
+ "movq %%rsp, 0(%%rdx)\n\t"
+ ".byte 0x6A,0x22\n\t"
+ "movq %%rsp, 8(%%rdx)\n\t"
+ "popq %%rax\n\t"
+ "movq %%rax,16(%%rdx)\n\t"
+ "movq 0(%%rdx),%%rsp\n\t"
+ "addq $8, %%rsp"
+ : : "r"(&block) : "rax","rdx","cc","memory"
+ );
+ printf(" pushb_pos: delta %lld, top64 0x%016llx\n",
+ block[0] - block[1], block[2]);
+}
+
+void do_pushb_neg ( void )
+{
+ unsigned long long int block[3];
+ __asm__ __volatile__ (
+ "movq %0, %%rdx\n\t"
+ "pushq $0x55555555\n\t"
+ "movq %%rsp, 0(%%rdx)\n\t"
+ ".byte 0x6A,0xEE\n\t"
+ "movq %%rsp, 8(%%rdx)\n\t"
+ "popq %%rax\n\t"
+ "movq %%rax,16(%%rdx)\n\t"
+ "movq 0(%%rdx),%%rsp\n\t"
+ "addq $8, %%rsp"
+ : : "r"(&block) : "rax","rdx","cc","memory"
+ );
+ printf(" pushb_neg: delta %lld, top64 0x%016llx\n",
+ block[0] - block[1], block[2]);
+}
+
+void do_pushw_pos ( void )
+{
+ unsigned long long int block[3];
+ __asm__ __volatile__ (
+ "movq %0, %%rdx\n\t"
+ "pushq $0x55555555\n\t"
+ "movq %%rsp, 0(%%rdx)\n\t"
+ "pushw $0x3344\n\t"
+ "movq %%rsp, 8(%%rdx)\n\t"
+ "popq %%rax\n\t"
+ "movq %%rax,16(%%rdx)\n\t"
+ "movq 0(%%rdx),%%rsp\n\t"
+ "addq $8, %%rsp"
+ : : "r"(&block) : "rax","rdx","cc","memory"
+ );
+ printf(" pushw_neg: delta %lld, top64 0x%016llx\n",
+ block[0] - block[1], block[2]);
+}
+
+void do_pushw_neg ( void )
+{
+ unsigned long long int block[3];
+ __asm__ __volatile__ (
+ "movq %0, %%rdx\n\t"
+ "pushq $0x55555555\n\t"
+ "movq %%rsp, 0(%%rdx)\n\t"
+ "pushw $0xDDCC\n\t"
+ "movq %%rsp, 8(%%rdx)\n\t"
+ "popq %%rax\n\t"
+ "movq %%rax,16(%%rdx)\n\t"
+ "movq 0(%%rdx),%%rsp\n\t"
+ "addq $8, %%rsp"
+ : : "r"(&block) : "rax","rdx","cc","memory"
+ );
+ printf(" pushw_pos: delta %lld, top64 0x%016llx\n",
+ block[0] - block[1], block[2]);
+}
+
+void do_pushq_pos ( void )
+{
+ unsigned long long int block[3];
+ __asm__ __volatile__ (
+ "movq %0, %%rdx\n\t"
+ "pushq $0x55555555\n\t"
+ "movq %%rsp, 0(%%rdx)\n\t"
+ "pushq $0x67675656\n\t"
+ "movq %%rsp, 8(%%rdx)\n\t"
+ "popq %%rax\n\t"
+ "movq %%rax,16(%%rdx)\n\t"
+ "movq 0(%%rdx),%%rsp\n\t"
+ "addq $8, %%rsp"
+ : : "r"(&block) : "rax","rdx","cc","memory"
+ );
+ printf(" pushq_pos: delta %lld, top64 0x%016llx\n",
+ block[0] - block[1], block[2]);
+}
+
+void do_pushq_neg ( void )
+{
+ unsigned long long int block[3];
+ __asm__ __volatile__ (
+ "movq %0, %%rdx\n\t"
+ "pushq $0x55555555\n\t"
+ "movq %%rsp, 0(%%rdx)\n\t"
+ "pushq $0x78988787\n\t"
+ "movq %%rsp, 8(%%rdx)\n\t"
+ "popq %%rax\n\t"
+ "movq %%rax,16(%%rdx)\n\t"
+ "movq 0(%%rdx),%%rsp\n\t"
+ "addq $8, %%rsp"
+ : : "r"(&block) : "rax","rdx","cc","memory"
+ );
+ printf(" pushq_neg: delta %lld, top64 0x%016llx\n",
+ block[0] - block[1], block[2]);
+}
+
+
+void do_66pushb_pos ( void )
+{
+ unsigned long long int block[3];
+ __asm__ __volatile__ (
+ "movq %0, %%rdx\n\t"
+ "pushq $0x55555555\n\t"
+ "movq %%rsp, 0(%%rdx)\n\t"
+ ".byte 0x66,0x6A,0x22\n\t"
+ "movq %%rsp, 8(%%rdx)\n\t"
+ "popq %%rax\n\t"
+ "movq %%rax,16(%%rdx)\n\t"
+ "movq 0(%%rdx),%%rsp\n\t"
+ "addq $8, %%rsp"
+ : : "r"(&block) : "rax","rdx","cc","memory"
+ );
+ printf("66pushb_pos: delta %lld, top64 0x%016llx\n",
+ block[0] - block[1], block[2]);
+}
+
+void do_66pushb_neg ( void )
+{
+ unsigned long long int block[3];
+ __asm__ __volatile__ (
+ "movq %0, %%rdx\n\t"
+ "pushq $0x55555555\n\t"
+ "movq %%rsp, 0(%%rdx)\n\t"
+ ".byte 0x66,0x6A,0xEE\n\t"
+ "movq %%rsp, 8(%%rdx)\n\t"
+ "popq %%rax\n\t"
+ "movq %%rax,16(%%rdx)\n\t"
+ "movq 0(%%rdx),%%rsp\n\t"
+ "addq $8, %%rsp"
+ : : "r"(&block) : "rax","rdx","cc","memory"
+ );
+ printf("66pushb_neg: delta %lld, top64 0x%016llx\n",
+ block[0] - block[1], block[2]);
+}
+
+
+int main ( void )
+{
+ do_pushb_pos();
+ do_pushb_neg();
+ do_pushw_pos();
+ do_pushw_neg();
+ do_pushq_pos();
+ do_pushq_neg();
+
+ do_66pushb_pos();
+ do_66pushb_neg();
+ return 0;
+}
Added: trunk/none/tests/amd64/bug132813-amd64.stderr.exp
=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
--- trunk/none/tests/amd64/bug132813-amd64.stderr.exp =
(rev 0)
+++ trunk/none/tests/amd64/bug132813-amd64.stderr.exp 2006-08-28 18:53:25=
UTC (rev 6035)
@@ -0,0 +1,2 @@
+
+
Added: trunk/none/tests/amd64/bug132813-amd64.stdout.exp
=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
--- trunk/none/tests/amd64/bug132813-amd64.stdout.exp =
(rev 0)
+++ trunk/none/tests/amd64/bug132813-amd64.stdout.exp 2006-08-28 18:53:25=
UTC (rev 6035)
@@ -0,0 +1,8 @@
+ pushb_pos: delta 8, top64 0x0000000000000022
+ pushb_neg: delta 8, top64 0xffffffffffffffee
+ pushw_neg: delta 2, top64 0x0000555555553344
+ pushw_pos: delta 2, top64 0x000055555555ddcc
+ pushq_pos: delta 8, top64 0x0000000067675656
+ pushq_neg: delta 8, top64 0x0000000078988787
+66pushb_pos: delta 2, top64 0x0000555555550022
+66pushb_neg: delta 2, top64 0x000055555555ffee
Added: trunk/none/tests/amd64/bug132813-amd64.vgtest
=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
--- trunk/none/tests/amd64/bug132813-amd64.vgtest =
(rev 0)
+++ trunk/none/tests/amd64/bug132813-amd64.vgtest 2006-08-28 18:53:25 UTC=
(rev 6035)
@@ -0,0 +1 @@
+prog: bug132813-amd64
|
|
From: <sv...@va...> - 2006-08-28 18:09:48
|
Author: sewardj
Date: 2006-08-28 19:09:46 +0100 (Mon, 28 Aug 2006)
New Revision: 6034
Log:
Regtest for #132813 (Assertion at priv/guest-x86/toIR.c:652 fails)
Added:
trunk/none/tests/x86/bug132813-x86.c
trunk/none/tests/x86/bug132813-x86.stderr.exp
trunk/none/tests/x86/bug132813-x86.stdout.exp
trunk/none/tests/x86/bug132813-x86.vgtest
Modified:
trunk/none/tests/x86/Makefile.am
Modified: trunk/none/tests/x86/Makefile.am
=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
--- trunk/none/tests/x86/Makefile.am 2006-08-28 13:36:52 UTC (rev 6033)
+++ trunk/none/tests/x86/Makefile.am 2006-08-28 18:09:46 UTC (rev 6034)
@@ -8,6 +8,7 @@
badseg.stderr.exp badseg.stdout.exp badseg.vgtest \
bt_everything.stderr.exp bt_everything.stdout.exp bt_everything.vgtest =
\
bt_literal.stderr.exp bt_literal.stdout.exp bt_literal.vgtest \
+ bug132813-x86.stderr.exp bug132813-x86.stdout.exp bug132813-x86.vgtest =
\
cpuid.stderr.exp cpuid.stdout.exp cpuid.vgtest \
cmpxchg8b.stderr.exp cmpxchg8b.stdout.exp cmpxchg8b.vgtest \
faultstatus.disabled faultstatus.stderr.exp \
@@ -32,7 +33,9 @@
yield.stderr.exp yield.stdout.exp yield.disabled
=20
check_PROGRAMS =3D \
- badseg bt_everything bt_literal cmpxchg8b cpuid \
+ badseg bt_everything bt_literal \
+ bug132813-x86 \
+ cmpxchg8b cpuid \
faultstatus fcmovnu fpu_lazy_eflags fxtract \
getseg incdec_alt $(INSN_TESTS) \
lahf looper movx int pushpopseg sbbmisc \
Added: trunk/none/tests/x86/bug132813-x86.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
--- trunk/none/tests/x86/bug132813-x86.c (rev 0)
+++ trunk/none/tests/x86/bug132813-x86.c 2006-08-28 18:09:46 UTC (rev 603=
4)
@@ -0,0 +1,170 @@
+
+#include <stdio.h>
+
+void do_pushb_pos ( void )
+{
+ unsigned int block[3];
+ __asm__ __volatile__ (
+ "movl %0, %%edx\n\t"
+ "pushl $0x55555555\n\t"
+ "movl %%esp, 0(%%edx)\n\t"
+ ".byte 0x6A,0x22\n\t"
+ "movl %%esp, 4(%%edx)\n\t"
+ "popl %%eax\n\t"
+ "movl %%eax,8(%%edx)\n\t"
+ "movl 0(%%edx),%%esp\n\t"
+ "addl $4, %%esp"
+ : : "r"(&block) : "eax","edx","cc","memory"
+ );
+ printf(" pushb_pos: delta %d, top32 0x%08x\n",
+ block[0] - block[1], block[2]);
+}
+
+void do_pushb_neg ( void )
+{
+ unsigned int block[3];
+ __asm__ __volatile__ (
+ "movl %0, %%edx\n\t"
+ "pushl $0x55555555\n\t"
+ "movl %%esp, 0(%%edx)\n\t"
+ ".byte 0x6A,0xEE\n\t"
+ "movl %%esp, 4(%%edx)\n\t"
+ "popl %%eax\n\t"
+ "movl %%eax,8(%%edx)\n\t"
+ "movl 0(%%edx),%%esp\n\t"
+ "addl $4, %%esp"
+ : : "r"(&block) : "eax","edx","cc","memory"
+ );
+ printf(" pushb_neg: delta %d, top32 0x%08x\n",
+ block[0] - block[1], block[2]);
+}
+
+void do_pushw_pos ( void )
+{
+ unsigned int block[3];
+ __asm__ __volatile__ (
+ "movl %0, %%edx\n\t"
+ "pushl $0x55555555\n\t"
+ "movl %%esp, 0(%%edx)\n\t"
+ "pushw $0x3344\n\t"
+ "movl %%esp, 4(%%edx)\n\t"
+ "popl %%eax\n\t"
+ "movl %%eax,8(%%edx)\n\t"
+ "movl 0(%%edx),%%esp\n\t"
+ "addl $4, %%esp"
+ : : "r"(&block) : "eax","edx","cc","memory"
+ );
+ printf(" pushw_neg: delta %d, top32 0x%08x\n",
+ block[0] - block[1], block[2]);
+}
+
+void do_pushw_neg ( void )
+{
+ unsigned int block[3];
+ __asm__ __volatile__ (
+ "movl %0, %%edx\n\t"
+ "pushl $0x55555555\n\t"
+ "movl %%esp, 0(%%edx)\n\t"
+ "pushw $0xDDCC\n\t"
+ "movl %%esp, 4(%%edx)\n\t"
+ "popl %%eax\n\t"
+ "movl %%eax,8(%%edx)\n\t"
+ "movl 0(%%edx),%%esp\n\t"
+ "addl $4, %%esp"
+ : : "r"(&block) : "eax","edx","cc","memory"
+ );
+ printf(" pushw_pos: delta %d, top32 0x%08x\n",
+ block[0] - block[1], block[2]);
+}
+
+void do_pushl_pos ( void )
+{
+ unsigned int block[3];
+ __asm__ __volatile__ (
+ "movl %0, %%edx\n\t"
+ "pushl $0x55555555\n\t"
+ "movl %%esp, 0(%%edx)\n\t"
+ "pushl $0x67675656\n\t"
+ "movl %%esp, 4(%%edx)\n\t"
+ "popl %%eax\n\t"
+ "movl %%eax,8(%%edx)\n\t"
+ "movl 0(%%edx),%%esp\n\t"
+ "addl $4, %%esp"
+ : : "r"(&block) : "eax","edx","cc","memory"
+ );
+ printf(" pushl_pos: delta %d, top32 0x%08x\n",
+ block[0] - block[1], block[2]);
+}
+
+void do_pushl_neg ( void )
+{
+ unsigned int block[3];
+ __asm__ __volatile__ (
+ "movl %0, %%edx\n\t"
+ "pushl $0x55555555\n\t"
+ "movl %%esp, 0(%%edx)\n\t"
+ "pushl $0x98988787\n\t"
+ "movl %%esp, 4(%%edx)\n\t"
+ "popl %%eax\n\t"
+ "movl %%eax,8(%%edx)\n\t"
+ "movl 0(%%edx),%%esp\n\t"
+ "addl $4, %%esp"
+ : : "r"(&block) : "eax","edx","cc","memory"
+ );
+ printf(" pushl_neg: delta %d, top32 0x%08x\n",
+ block[0] - block[1], block[2]);
+}
+
+
+void do_66pushb_pos ( void )
+{
+ unsigned int block[3];
+ __asm__ __volatile__ (
+ "movl %0, %%edx\n\t"
+ "pushl $0x55555555\n\t"
+ "movl %%esp, 0(%%edx)\n\t"
+ ".byte 0x66,0x6A,0x22\n\t"
+ "movl %%esp, 4(%%edx)\n\t"
+ "popl %%eax\n\t"
+ "movl %%eax,8(%%edx)\n\t"
+ "movl 0(%%edx),%%esp\n\t"
+ "addl $4, %%esp"
+ : : "r"(&block) : "eax","edx","cc","memory"
+ );
+ printf("66pushb_pos: delta %d, top32 0x%08x\n",
+ block[0] - block[1], block[2]);
+}
+
+void do_66pushb_neg ( void )
+{
+ unsigned int block[3];
+ __asm__ __volatile__ (
+ "movl %0, %%edx\n\t"
+ "pushl $0x55555555\n\t"
+ "movl %%esp, 0(%%edx)\n\t"
+ ".byte 0x66,0x6A,0xEE\n\t"
+ "movl %%esp, 4(%%edx)\n\t"
+ "popl %%eax\n\t"
+ "movl %%eax,8(%%edx)\n\t"
+ "movl 0(%%edx),%%esp\n\t"
+ "addl $4, %%esp"
+ : : "r"(&block) : "eax","edx","cc","memory"
+ );
+ printf("66pushb_neg: delta %d, top32 0x%08x\n",
+ block[0] - block[1], block[2]);
+}
+
+
+int main ( void )
+{
+ do_pushb_pos();
+ do_pushb_neg();
+ do_pushw_pos();
+ do_pushw_neg();
+ do_pushl_pos();
+ do_pushl_neg();
+
+ do_66pushb_pos();
+ do_66pushb_neg();
+ return 0;
+}
Added: trunk/none/tests/x86/bug132813-x86.stderr.exp
=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
--- trunk/none/tests/x86/bug132813-x86.stderr.exp =
(rev 0)
+++ trunk/none/tests/x86/bug132813-x86.stderr.exp 2006-08-28 18:09:46 UTC=
(rev 6034)
@@ -0,0 +1,2 @@
+
+
Added: trunk/none/tests/x86/bug132813-x86.stdout.exp
=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
--- trunk/none/tests/x86/bug132813-x86.stdout.exp =
(rev 0)
+++ trunk/none/tests/x86/bug132813-x86.stdout.exp 2006-08-28 18:09:46 UTC=
(rev 6034)
@@ -0,0 +1,8 @@
+ pushb_pos: delta 4, top32 0x00000022
+ pushb_neg: delta 4, top32 0xffffffee
+ pushw_neg: delta 2, top32 0x55553344
+ pushw_pos: delta 2, top32 0x5555ddcc
+ pushl_pos: delta 4, top32 0x67675656
+ pushl_neg: delta 4, top32 0x98988787
+66pushb_pos: delta 2, top32 0x55550022
+66pushb_neg: delta 2, top32 0x5555ffee
Added: trunk/none/tests/x86/bug132813-x86.vgtest
=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
--- trunk/none/tests/x86/bug132813-x86.vgtest (re=
v 0)
+++ trunk/none/tests/x86/bug132813-x86.vgtest 2006-08-28 18:09:46 UTC (re=
v 6034)
@@ -0,0 +1 @@
+prog: bug132813-x86
|
|
From: <sv...@va...> - 2006-08-28 18:04:40
|
Author: sewardj
Date: 2006-08-28 19:04:33 +0100 (Mon, 28 Aug 2006)
New Revision: 1652
Log:
Stop mkU16 asserting if d32 is a negative 16-bit number (bug #132813).
Modified:
trunk/priv/guest-x86/toIR.c
Modified: trunk/priv/guest-x86/toIR.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
--- trunk/priv/guest-x86/toIR.c 2006-08-28 13:34:58 UTC (rev 1651)
+++ trunk/priv/guest-x86/toIR.c 2006-08-28 18:04:33 UTC (rev 1652)
@@ -11728,6 +11728,10 @@
t1 =3D newTemp(Ity_I32); t2 =3D newTemp(ty);
assign( t1, binop(Iop_Sub32,getIReg(4,R_ESP),mkU32(sz)) );
putIReg(4, R_ESP, mkexpr(t1) );
+ /* stop mkU16 asserting if d32 is a negative 16-bit number
+ (bug #132813) */
+ if (ty =3D=3D Ity_I16)
+ d32 &=3D 0xFFFF;
storeLE( mkexpr(t1), mkU(ty,d32) );
DIP("push%c $0x%x\n", nameISize(sz), d32);
break;
|
|
From: Bryan M. <om...@br...> - 2006-08-28 17:26:16
|
Josef Weidendorfer wrote: > On Monday 28 August 2006 15:03, Bryan Meredith wrote: >> I agree that would be the best solution but how does one work out the >> compiler, given the IR (or is it buried in the debug info somewhere). > > If there is full debug information, you should be able to extract everything > you need (e.g. return type of a function). AFAIK, Valgrind currently does > parse symbol tables and line debug info, but not much more. > It would be cool to have a debug info parser for further info like type and > variable name available for tools (for DWARF format). > > Regarding push/pop vs. mov(sp): It can be that this is an architecture > optimization issue, and does change depending on command line options; > ie. not really depending on the compiler itself - but perhaps the defaults > for command line options have changed. Josef, I did wonder about whether it was default settings in the gcc spec file but didn't investigate it: it's not something that I can change (my own, no problem - everybody else's, hmmmm) so I have to be able to deal with it. I would expect the information to be in the debug somewhere but getting to it in a sensible way is the key. Doing the test on Ijk_Return is definitely _when_ to do it though. I currently try to spot it by the pattern of register writes but it simply isn't robust enough and optimised code kills it completely. I shall investigate making this information available for lookup as we already have function names so it could go with them I suppose (I have some other ideas relating to extending the line number storage that would benefit anything that needs per line information to be stored (mainly coverage type stuff) so I have already been looking in that area). Bryan |
|
From: Stephen M.
|
>>>>> "JW" == Josef Weidendorfer <Jos...@gm...> writes: JW> On Monday 28 August 2006 15:03, Bryan Meredith wrote: BM> I agree that would be the best solution but how does one work out BM> the compiler, given the IR (or is it buried in the debug info BM> somewhere). JW> If there is full debug information, you should be able to extract JW> everything you need (e.g. return type of a function). AFAIK, JW> Valgrind currently does parse symbol tables and line debug info, JW> but not much more. It would be cool to have a debug info parser JW> for further info like type and variable name available for tools JW> (for DWARF format). As I think I mentioned a while ago, one existing codebase that provides this is our research group's "Fjalar" framework, a melding of Valgrind and the GNU binutils "readelf" DWARF parser that we've used for a couple of fairly heavyweight analyses that combine Valgrind-based dynamic tracking with close-to-complete source level information from the debugging information. Its approach isn't quite as elegant as extending Valgrind's existing DWARF parser to get the additional information you need, but it scores high on the "laziness" scale. For more details: http://pag.csail.mit.edu/fjalar/ -- Stephen |
|
From: Josef W. <Jos...@gm...> - 2006-08-28 17:07:31
|
On Monday 28 August 2006 15:03, Bryan Meredith wrote: > I agree that would be the best solution but how does one work out the > compiler, given the IR (or is it buried in the debug info somewhere). If there is full debug information, you should be able to extract everything you need (e.g. return type of a function). AFAIK, Valgrind currently does parse symbol tables and line debug info, but not much more. It would be cool to have a debug info parser for further info like type and variable name available for tools (for DWARF format). Regarding push/pop vs. mov(sp): It can be that this is an architecture optimization issue, and does change depending on command line options; ie. not really depending on the compiler itself - but perhaps the defaults for command line options have changed. Josef |
|
From: <sv...@va...> - 2006-08-28 13:36:55
|
Author: sewardj
Date: 2006-08-28 14:36:52 +0100 (Mon, 28 Aug 2006)
New Revision: 6033
Log:
Update after merging loads of fixes into the 3_2_BRANCH.
Modified:
trunk/docs/internals/3_2_BUGSTATUS.txt
Modified: trunk/docs/internals/3_2_BUGSTATUS.txt
=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
--- trunk/docs/internals/3_2_BUGSTATUS.txt 2006-08-28 13:13:01 UTC (rev 6=
032)
+++ trunk/docs/internals/3_2_BUGSTATUS.txt 2006-08-28 13:36:52 UTC (rev 6=
033)
@@ -7,38 +7,41 @@
=20
------- Bugs reported after (in) 3.2.0 ------
=20
-TRUNK 32BRANCH PRI BUG# WHAT
+TRUNK 32BRANCH PRI BUG# WHAT
=20
-v5974 pending n-i-bz Expanding brk() into last available page =
asserts
+v5974 v6013 n-i-bz Expanding brk() into last available page =
asserts
and VT_* ioctls
-v5973 pending n-i-bz ppc64-linux stack RZ fast-case snafu
-v5978 pending n-i-bz 'c' in --gen-supps=3Dyes doesn't work
-v5986 pending n-i-nz VG_N_SEGMENTS too low (users, 28 June)
-sse3fix pending 106852 x86->IR: fisttp (SSE3)
-v5968 pending 117172 FUTEX_WAKE does not use uaddr2
-v5970 pending 124039 Lacks support for VKI_[GP]IO_UNIMAP*
-vx1639 pending 127521 amd64->IR: 0xF0 0x48 0xF 0xC7 (cmpxchg8b)
+v5973 v6014 n-i-bz ppc64-linux stack RZ fast-case snafu
+v5978 v6015 n-i-bz 'c' in --gen-supps=3Dyes doesn't work
+v5986 v6016 n-i-bz VG_N_SEGMENTS too low (users, 28 June)
+v6030 v6031 n-i-bz VG_N_SEGNAMES too low (Stu Robinson)
+sse3fix vx1646 106852 x86->IR: fisttp (SSE3)
+v5968 v6017 117172 FUTEX_WAKE does not use uaddr2
+v5970 v6018 124039 Lacks support for VKI_[GP]IO_UNIMAP*
+vx1639 vx1649 127521 amd64->IR: 0xF0 0x48 0xF 0xC7 (cmpxchg8b)
vx1632/v5987
- pending 128917 amd64->IR: 0x66 0xF 0xF6 0xC4 (psadbw,SSE=
2)
-v5988 pending 129246 JJ: ppc32/ppc64 syscalls, w/ patch
-sse3fix pending 129358 x86->IR: fisttpl (SSE3)
+ vx1643/v6032 128917 amd64->IR: 0x66 0xF 0xF6 0xC4 (psadbw,SSE=
2)
+v5988 v6019 129246 JJ: ppc32/ppc64 syscalls, w/ patch
+sse3fix vx1646 129358 x86->IR: fisttpl (SSE3)
pending pending 129390 ppc?->IR: some kind of VMX prefetch (dstt=
)
-v6003,4 pending 129866 cachegrind/callgrind causes executable to=
die
+v6003,4 v6025 129866 cachegrind/callgrind causes executable to=
die
pending pending 129968 amd64->IR: 0xF 0xAE 0x0 (fxsave)
-v5979 pending 130020 Can't stat .so/.exe error while reading s=
ymbols
+v5979 v6021 130020 Can't stat .so/.exe error while reading s=
ymbols
wontfix wontfix 130358 Inconsistent 80-bit floats on x86
-v5983 pending 130388 Valgrind aborts when process calls malloc=
_trim()
-v5989 pending 130638 New: PATCH: ppc32 missing system calls
-vx1633 pending 130785 amd64->IR: unhandled instruction "pushfq"
+v5983 v6022 130388 Valgrind aborts when process calls malloc=
_trim()
+v5989 v6020 130638 PATCH: ppc32 missing system calls
+vx1633 vx1644 130785 amd64->IR: unhandled instruction "pushfq"
=20
-vx1634 pending 131481: (HINT_NOP) vex x86->IR: 0xF 0x1F 0x0 0xF
+vx1634 vx1645 131481: (HINT_NOP) vex x86->IR: 0xF 0x1F 0x0 0xF
131298 =3D=3D131481
=20
-vx1638 pending 132146 Programs with long sequences of bswap[l,q=
]s
+vx1638 vx1648 132146 Programs with long sequences of bswap[l,q=
]s
+pending pending 132918 vex amd64->IR: 0xD9 0xF8 (fprem)
+pending pending 132813 Assertion at priv/guest-x86/toIR.c:652 fa=
ils
=20
-v5990 pending n-i-bz Livelocks entire machine (users list,
+v5990 v6023 n-i-bz Livelocks entire machine (users list,
17 June, Timothy B. Terriberry)
-v5991,4,6 pending n-i-bz Graydon leak checking fix
+v5991,4,6 v6024 n-i-bz Graydon leak checking fix
=20
v5992,6006 wontfix n-i-bz Graydon mempool trim patch
=20
@@ -48,8 +51,14 @@
=20
SSE3 commits: vx1635,1636, v5997
=20
-Alex Bennee mmap problem (9 Aug) (v6001, merge)
+v6001 v6026 n-i-bz Alex Bennee mmap problem (9 Aug)
+v5999 v6027 n-i-bz BartV: Don't print more lines of a
+ stack-trace than were obtained.
+v6010 v6028 n-i-bz ppc32 SuSE 10.1 redir
+v6011 v6029 n-i-bz amd64 padding suppressions
=20
-Merge r1637 (amd64 insn printing fix.)
-Merge r5999 (Don't print more lines of a stack-trace than were
-obtained.)
+vx1637 vx1647 n-i-bz amd64 insn printing fix.
+vx1640,1 vx1650 n-i-bz ppc cmp reg,reg fix
+vx1642 vx1651 n-i-bz x86/amd64 iropt e/rflag reduction rules
+
+fix for make install with older bashes.
|
|
From: <sv...@va...> - 2006-08-28 13:35:05
|
Author: sewardj
Date: 2006-08-28 14:34:58 +0100 (Mon, 28 Aug 2006)
New Revision: 1651
Log:
Merge r1642 (x86/amd64 iropt e/rflag reduction rules)
Modified:
branches/VEX_3_2_BRANCH/priv/guest-amd64/ghelpers.c
branches/VEX_3_2_BRANCH/priv/guest-x86/ghelpers.c
Modified: branches/VEX_3_2_BRANCH/priv/guest-amd64/ghelpers.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/VEX_3_2_BRANCH/priv/guest-amd64/ghelpers.c 2006-08-28 13:32:=
48 UTC (rev 1650)
+++ branches/VEX_3_2_BRANCH/priv/guest-amd64/ghelpers.c 2006-08-28 13:34:=
58 UTC (rev 1651)
@@ -958,12 +958,6 @@
binop(Iop_Shl64,cc_dep2,mkU8(32))));
}
=20
-//.. if (isU32(cc_op, AMD64G_CC_OP_SUBL) && isU32(cond, X86CondNZ)=
) {
-//.. /* long sub/cmp, then NZ --> test dst!=3Dsrc */
-//.. return unop(Iop_1Uto32,
-//.. binop(Iop_CmpNE32, cc_dep1, cc_dep2));
-//.. }
-
if (isU64(cc_op, AMD64G_CC_OP_SUBL) && isU64(cond, AMD64CondL)) {
/* long sub/cmp, then L (signed less than)=20
--> test dst <s src */
@@ -992,12 +986,15 @@
binop(Iop_Shl64,cc_dep2,mkU8(32))));
}
=20
-//.. if (isU32(cc_op, AMD64G_CC_OP_SUBL) && isU32(cond, X86CondB))=
{
-//.. /* long sub/cmp, then B (unsigned less than)
-//.. --> test dst <u src */
-//.. return unop(Iop_1Uto32,
-//.. binop(Iop_CmpLT32U, cc_dep1, cc_dep2));
-//.. }
+ if (isU64(cc_op, AMD64G_CC_OP_SUBL) && isU64(cond, AMD64CondNBE)) =
{
+ /* long sub/cmp, then NBE (unsigned greater than)
+ --> test src <u dst */
+ /* Note, args are opposite way round from the usual */
+ return unop(Iop_1Uto64,
+ binop(Iop_CmpLT64U,=20
+ binop(Iop_Shl64,cc_dep2,mkU8(32)),
+ binop(Iop_Shl64,cc_dep1,mkU8(32))));
+ }
=20
/*---------------- SUBW ----------------*/
=20
@@ -1029,6 +1026,14 @@
unop(Iop_64to8,cc_dep2)));
}
=20
+ if (isU64(cc_op, AMD64G_CC_OP_SUBB) && isU64(cond, AMD64CondNZ)) {
+ /* byte sub/cmp, then NZ --> test dst!=3Dsrc */
+ return unop(Iop_1Uto64,
+ binop(Iop_CmpNE8,=20
+ unop(Iop_64to8,cc_dep1),
+ unop(Iop_64to8,cc_dep2)));
+ }
+
if (isU64(cc_op, AMD64G_CC_OP_SUBB) && isU64(cond, AMD64CondS)
&& isU64(cc_dep2, 0)) {
/* byte sub/cmp of zero, then S --> test (dst-0 <s 0)
Modified: branches/VEX_3_2_BRANCH/priv/guest-x86/ghelpers.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/VEX_3_2_BRANCH/priv/guest-x86/ghelpers.c 2006-08-28 13:32:48=
UTC (rev 1650)
+++ branches/VEX_3_2_BRANCH/priv/guest-x86/ghelpers.c 2006-08-28 13:34:58=
UTC (rev 1651)
@@ -1056,6 +1056,16 @@
return unop(Iop_1Uto32,binop(Iop_CmpLT32S, cc_dep1, mkU32(0)));
}
=20
+ /*---------------- DECW ----------------*/
+
+ if (isU32(cc_op, X86G_CC_OP_DECW) && isU32(cond, X86CondZ)) {
+ /* dec W, then Z --> test dst =3D=3D 0 */
+ return unop(Iop_1Uto32,
+ binop(Iop_CmpEQ32,=20
+ binop(Iop_Shl32,cc_dep1,mkU8(16)),=20
+ mkU32(0)));
+ }
+
/*---------------- INCW ----------------*/
=20
if (isU32(cc_op, X86G_CC_OP_INCW) && isU32(cond, X86CondZ)) {
|