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: Josef W. <Jos...@gm...> - 2006-08-17 22:20:15
|
On Thursday 17 August 2006 23:01, you wrote: > Josef, > > had a question from one of the guys at work today asking about a > "compare two trees" feature that was planned for kcachegrind at some point. > > As I understand it, it's for showing the difference in performance > between two runs, particularly for showing the changes between two > versions of the software under test. > > Is this implemented/planned ? Implemented: no. Planned: Not really sure. I am not convinced that some kind of difference view is easier to understand than 2 DAGs near to each other. How would you do it? Josef > > TIA, > Bryan "Brain Murders" Meredith > > |
|
From: Bryan M. <om...@br...> - 2006-08-17 21:02:10
|
Josef, had a question from one of the guys at work today asking about a "compare two trees" feature that was planned for kcachegrind at some point. As I understand it, it's for showing the difference in performance between two runs, particularly for showing the changes between two versions of the software under test. Is this implemented/planned ? TIA, Bryan "Brain Murders" Meredith |
|
From: Nicholas N. <nj...@cs...> - 2006-08-17 11:45:11
|
On Thu, 17 Aug 2006, Karai Csaba wrote: > The mudflap component of GCC is very new, that's why it has lots of > errors. > > The question is whether it worths to write such a new component, or wait GCC > to make a fast, stable and usable component of fmudflap. You could contribute to mudflap. It's not that new, it's been around for a couple of years at least. The fact that they have so much implemented means you would likely be able to make a greater impact in a shorter time than if you started from scratch. Nick |
|
From: <js...@ac...> - 2006-08-17 09:57:08
|
Nightly build on minnie ( SuSE 10.0, ppc32 ) started at 2006-08-17 09:00:01 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 == 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) ================================================= == 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 == 206 tests, 10 stderr failures, 5 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/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) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Thu Aug 17 09:11:38 2006 --- new.short Thu Aug 17 09:23:35 2006 *************** *** 8,10 **** ! == 206 tests, 10 stderr failures, 5 stdout failures, 0 posttest failures == memcheck/tests/leak-cycle (stderr) --- 8,10 ---- ! == 207 tests, 10 stderr failures, 6 stdout failures, 0 posttest failures == memcheck/tests/leak-cycle (stderr) *************** *** 17,18 **** --- 17,19 ---- none/tests/mremap (stderr) + none/tests/mremap2 (stdout) none/tests/ppc32/jm-fp (stdout) |
|
From: Karai C. <cs...@fr...> - 2006-08-17 08:50:37
|
> A source code pre-processor would certainly be an interesting tool
> and maybe a good complement to Valgrind. It sounds like a huge
> amount of work though, especially for C++. Do you have experience
> in writing C/C++ compiler front ends?
>
> J
Not yet. It would be really big work, but the users could check it
gradually. It may require 1 year to make it stable alone without help.
I've checked the -fmudflap option of GCC. It does the index bound checking.
it has some drawbacks:
- consumes much memory, so big projects won't work, only little ones
- very very slow, even slower than valgrind.
- false notifications for va_arg, va_start, ...
- no stack trace
The mudflap component of GCC is very new, that's why it has lots of
errors.
The question is whether it worths to write such a new component, or wait
GCC to make a fast, stable and usable component of fmudflap.
I used some time Rational Purify and Purify also does some code
modifications at compile time.
Any other ideas?
Thanks,
Csaba
|
|
From: Tom H. <th...@cy...> - 2006-08-17 06:11:30
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2006-08-17 03:00: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 make[4]: Leaving directory `/tmp/valgrind.15413/valgrind/none/tests/x86' Making check in amd64 make[4]: Entering directory `/tmp/valgrind.15413/valgrind/none/tests/amd64' make bug127521-64 clc faultstatus fcmovnu fxtract insn_basic insn_mmx insn_sse insn_sse2 insn_sse3 insn_fpu looper jrcxz smc1 shrld nibz_bennee_mmap make[5]: Entering directory `/tmp/valgrind.15413/valgrind/none/tests/amd64' if gcc -DHAVE_CONFIG_H -I. -I. -I../../.. -Winline -Wall -Wshadow -g -I../../../include -Wno-long-long -Wdeclaration-after-statement -MT bug127521-64.o -MD -MP -MF ".deps/bug127521-64.Tpo" -c -o bug127521-64.o bug127521-64.c; \ then mv -f ".deps/bug127521-64.Tpo" ".deps/bug127521-64.Po"; else rm -f ".deps/bug127521-64.Tpo"; exit 1; fi /tmp/ccRqPzBN.s: Assembler messages: /tmp/ccRqPzBN.s:241: Error: no such instruction: `cmpxchg16b (%r10)' make[5]: *** [bug127521-64.o] Error 1 make[5]: Leaving directory `/tmp/valgrind.15413/valgrind/none/tests/amd64' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/valgrind.15413/valgrind/none/tests/amd64' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/valgrind.15413/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/valgrind.15413/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/valgrind.15413/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 Regression test results follow == 264 tests, 5 stderr failures, 1 stdout failure, 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/tls (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Thu Aug 17 06:40:07 2006 --- new.short Thu Aug 17 07:11:53 2006 *************** *** 6,16 **** ! Regression test results follow ! ! == 264 tests, 5 stderr failures, 1 stdout failure, 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/tls (stdout) ! --- 6,27 ---- ! Last 20 lines of verbose log follow echo ! make[4]: Leaving directory `/tmp/valgrind.15413/valgrind/none/tests/x86' ! Making check in amd64 ! make[4]: Entering directory `/tmp/valgrind.15413/valgrind/none/tests/amd64' ! make bug127521-64 clc faultstatus fcmovnu fxtract insn_basic insn_mmx insn_sse insn_sse2 insn_sse3 insn_fpu looper jrcxz smc1 shrld nibz_bennee_mmap ! make[5]: Entering directory `/tmp/valgrind.15413/valgrind/none/tests/amd64' ! if gcc -DHAVE_CONFIG_H -I. -I. -I../../.. -Winline -Wall -Wshadow -g -I../../../include -Wno-long-long -Wdeclaration-after-statement -MT bug127521-64.o -MD -MP -MF ".deps/bug127521-64.Tpo" -c -o bug127521-64.o bug127521-64.c; \ ! then mv -f ".deps/bug127521-64.Tpo" ".deps/bug127521-64.Po"; else rm -f ".deps/bug127521-64.Tpo"; exit 1; fi ! /tmp/ccRqPzBN.s: Assembler messages: ! /tmp/ccRqPzBN.s:241: Error: no such instruction: `cmpxchg16b (%r10)' ! make[5]: *** [bug127521-64.o] Error 1 ! make[5]: Leaving directory `/tmp/valgrind.15413/valgrind/none/tests/amd64' ! make[4]: *** [check-am] Error 2 ! make[4]: Leaving directory `/tmp/valgrind.15413/valgrind/none/tests/amd64' ! make[3]: *** [check-recursive] Error 1 ! make[3]: Leaving directory `/tmp/valgrind.15413/valgrind/none/tests' ! make[2]: *** [check-recursive] Error 1 ! make[2]: Leaving directory `/tmp/valgrind.15413/valgrind/none' ! make[1]: *** [check-recursive] Error 1 ! make[1]: Leaving directory `/tmp/valgrind.15413/valgrind' ! make: *** [check] Error 2 |
|
From: Nicholas N. <nj...@cs...> - 2006-08-17 03:33:56
|
On Thu, 17 Aug 2006, Julian Seward wrote: > I'd like to ship 3.2.1 in about two weeks from now, that is, > before the end of August. 3.2.0 seems to be fairly stable, > but enough stuff has been reported and fixed now to warrant a > bug-fix release. All looks good to me. Nick |
|
From: <js...@ac...> - 2006-08-17 03:05:17
|
Nightly build on phoenix ( SuSE 10.0 ) started at 2006-08-17 03:30:02 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 == 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) ================================================= == 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 == 235 tests, 4 stderr failures, 0 stdout failures, 0 posttest failures == memcheck/tests/leak-tree (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Thu Aug 17 03:49:12 2006 --- new.short Thu Aug 17 04:05:30 2006 *************** *** 10,12 **** ! == 235 tests, 4 stderr failures, 0 stdout failures, 0 posttest failures == memcheck/tests/leak-tree (stderr) --- 10,12 ---- ! == 236 tests, 5 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/leak-tree (stderr) *************** *** 15,16 **** --- 15,18 ---- memcheck/tests/x86/scalar_supp (stderr) + none/tests/mremap (stderr) + none/tests/mremap2 (stdout) |
|
From: Tom H. <to...@co...> - 2006-08-17 02:45:26
|
Nightly build on dunsmere ( athlon, Fedora Core 5 ) started at 2006-08-17 03:30: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 == 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) ================================================= == 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 == 237 tests, 4 stderr failures, 0 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Thu Aug 17 03:38:01 2006 --- new.short Thu Aug 17 03:45:36 2006 *************** *** 8,10 **** ! == 237 tests, 4 stderr failures, 0 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 238 tests, 5 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/pointer-trace (stderr) *************** *** 13,14 **** --- 13,16 ---- memcheck/tests/xml1 (stderr) + none/tests/mremap (stderr) + none/tests/mremap2 (stdout) |
|
From: Tom H. <th...@cy...> - 2006-08-17 02:25:30
|
Nightly build on dellow ( x86_64, Fedora Core 5 ) started at 2006-08-17 03:10:09 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 == 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) ================================================= == 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 == 262 tests, 3 stderr failures, 0 stdout failures, 0 posttest failures == memcheck/tests/mempool (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Thu Aug 17 03:18:09 2006 --- new.short Thu Aug 17 03:25:53 2006 *************** *** 8,10 **** ! == 262 tests, 3 stderr failures, 0 stdout failures, 0 posttest failures == memcheck/tests/mempool (stderr) --- 8,10 ---- ! == 264 tests, 4 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/mempool (stderr) *************** *** 12,13 **** --- 12,15 ---- memcheck/tests/xml1 (stderr) + none/tests/mremap (stderr) + none/tests/mremap2 (stdout) |
|
From: Tom H. <th...@cy...> - 2006-08-17 02:24:19
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2006-08-17 03:15:04 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/ccA2UhAu.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccA2UhAu.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccA2UhAu.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccA2UhAu.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccA2UhAu.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccA2UhAu.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccA2UhAu.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccA2UhAu.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.20345/valgrind/none/tests/x86' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/valgrind.20345/valgrind/none/tests/x86' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/valgrind.20345/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/valgrind.20345/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/valgrind.20345/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/cc9LpeaP.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/cc9LpeaP.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/cc9LpeaP.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/cc9LpeaP.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/cc9LpeaP.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/cc9LpeaP.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/cc9LpeaP.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/cc9LpeaP.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.20345/valgrind/none/tests/x86' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/valgrind.20345/valgrind/none/tests/x86' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/valgrind.20345/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/valgrind.20345/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/valgrind.20345/valgrind' make: *** [check] Error 2 ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Thu Aug 17 03:19:51 2006 --- new.short Thu Aug 17 03:24:39 2006 *************** *** 7,16 **** Last 20 lines of verbose log follow echo ! /tmp/cc9LpeaP.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/cc9LpeaP.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/cc9LpeaP.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/cc9LpeaP.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/cc9LpeaP.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/cc9LpeaP.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/cc9LpeaP.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/cc9LpeaP.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/ccA2UhAu.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccA2UhAu.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccA2UhAu.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccA2UhAu.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccA2UhAu.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccA2UhAu.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccA2UhAu.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccA2UhAu.s:5233: Error: no such instruction: `fisttpq -56(%ebp)' make[5]: *** [insn_sse3.o] Error 1 |
|
From: Julian S. <js...@ac...> - 2006-08-17 02:13:44
|
> -----Original Message----- > From: val...@li... on behalf of > Nicholas Nethercote Sent: Wed 08/16/06 7:55 PM > To: Karai Csaba > Cc: val...@li... > Subject: Re: [Valgrind-developers] Precompiler for valgrind > > On Wed, 16 Aug 2006, Karai Csaba wrote: > > If you, developers are interested, I would write a new component for > > valgrind, a precompiler. > > > > The precompiler would modify the C/C++ code to detect more memory > > errors in the program. > > > > How it would work? > > > > - one should compile with valgrind-cc instead of gcc > > - valgrind-cc calls the gcc -E for getting a clean code > > without macros and includes > > - after that it modifies the code for further checks > > - compiles the modified code > > It sounds like this would be a totally different tool -- certainly > complementary to Valgrind, but not particularly related. A source code pre-processor would certainly be an interesting tool and maybe a good complement to Valgrind. It sounds like a huge amount of work though, especially for C++. Do you have experience in writing C/C++ compiler front ends? J |
|
From: Julian S. <js...@ac...> - 2006-08-17 02:10:41
|
I'd like to ship 3.2.1 in about two weeks from now, that is,
before the end of August. 3.2.0 seems to be fairly stable,
but enough stuff has been reported and fixed now to warrant a
bug-fix release.
The current docs/internals/3_2_BUGSTATUS.txt is below. The main
important changes are SSE3 support, support for new nop insns from
binutils, and fixes for various obscure-but-critical bugs,
particularly 129866, 130020, complete machine lockups during leak
checking, and an mmap(FIXED..) assertion.
Anybody have any other critical bugs?
The alternative to releasing 3.2.1 now is to delay and do a release
later, but I prefer to ship what fixes we have now and tentatively
plan for 3.2.2 around end-Oct if needed.
J
------------------------------------------------------------------
n-i-bz = not in bugzilla
pending = is scheduled to be fixed (or at least considered) on this branch
wontfix = will not fix on this branch
many = fix composed of many commits
sse3fix = fixed by the SSE3 commits
------- Bugs reported after (in) 3.2.0 ------
TRUNK 32BRANCH PRI BUG# WHAT
v5974 pending 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=yes 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)
vx1632/v5987
pending 128917 amd64->IR: 0x66 0xF 0xF6 0xC4 (psadbw,SSE2)
v5988 pending 129246 JJ: ppc32/ppc64 syscalls, w/ patch
sse3fix pending 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
pending pending 129968 amd64->IR: 0xF 0xAE 0x0 (fxsave)
v5979 pending 130020 Can't stat .so/.exe error while reading symbols
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"
vx1634 pending 131481: (HINT_NOP) vex x86->IR: 0xF 0x1F 0x0 0xF
131298 ==131481
vx1638 pending 132146 Programs with long sequences of bswap[l,q]s
v5990 pending n-i-bz Livelocks entire machine (users list,
17 June, Timothy B. Terriberry)
v5991,4,6 pending n-i-bz Graydon leak checking fix
v5992,6006 wontfix n-i-bz Graydon mempool trim patch
Signal race condition (users list, 13 June, Johannes Berg)
Unrecognised instruction at address 0x70198EC2 (users, 19 July, Bennee)
SSE3 commits: vx1635,1636, v5997
Alex Bennee mmap problem (9 Aug) (v6001, merge)
Merge r1637 (amd64 insn printing fix.)
Merge r5999 (Don't print more lines of a stack-trace than were
obtained.)
|
|
From: Gurganus, B. L <gur...@ro...> - 2006-08-17 02:09:03
|
That tools sounds like ccurred. Brant Gurganus http://www.rose-hulman.edu/~gurganbl -----Original Message----- From: val...@li... on behalf of = Nicholas Nethercote Sent: Wed 08/16/06 7:55 PM To: Karai Csaba Cc: val...@li... Subject: Re: [Valgrind-developers] Precompiler for valgrind =20 On Wed, 16 Aug 2006, Karai Csaba wrote: > If you, developers are interested, I would write a new component for > valgrind, a precompiler. > > The precompiler would modify the C/C++ code to detect more memory > errors in the program. > > How it would work? > > - one should compile with valgrind-cc instead of gcc > - valgrind-cc calls the gcc -E for getting a clean code > without macros and includes > - after that it modifies the code for further checks > - compiles the modified code It sounds like this would be a totally different tool -- certainly=20 complementary to Valgrind, but not particularly related. Another random point of note: people really like dynamic = instrumentation=20 because it's so easy to use -- you don't have to recompile anything or = do=20 any other kind of preparation. People *really* like that. Nick -------------------------------------------------------------------------= Using Tomcat but need to do more? Need to support web services, = security? Get stuff done quickly with pre-integrated technology to make your job = easier Download IBM WebSphere Application Server v.1.0.1 based on Apache = Geronimo http://sel.as-us.falkag.net/sel?cmd=3Dlnk&kid=3D120709&bid=3D263057&dat=3D= 121642 _______________________________________________ Valgrind-developers mailing list Val...@li... https://lists.sourceforge.net/lists/listinfo/valgrind-developers |
|
From: <sv...@va...> - 2006-08-17 01:54:17
|
Author: sewardj
Date: 2006-08-17 02:54:15 +0100 (Thu, 17 Aug 2006)
New Revision: 6008
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-17 01:39:04 UTC (rev 6=
007)
+++ trunk/docs/internals/3_2_BUGSTATUS.txt 2006-08-17 01:54:15 UTC (rev 6=
008)
@@ -17,13 +17,13 @@
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*
-pending pending 127521 amd64->IR: 0xF0 0x48 0xF 0xC7 (cmpxchg8b)
+vx1639 pending 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)
pending pending 129390 ppc?->IR: some kind of VMX prefetch (dstt=
)
-pending pending 129866 cachegrind/callgrind causes executable to=
die
+v6003,4 pending 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
wontfix wontfix 130358 Inconsistent 80-bit floats on x86
@@ -31,14 +31,16 @@
v5989 pending 130638 New: PATCH: ppc32 missing system calls
vx1633 pending 130785 amd64->IR: unhandled instruction "pushfq"
=20
-vx1634 pending 131481: (HINT_NOP) vex x86->IR: 0xF 0x1F 0x0 0xF
+vx1634 pending 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
+
v5990 pending n-i-bz Livelocks entire machine (users list,
17 June, Timothy B. Terriberry)
v5991,4,6 pending n-i-bz Graydon leak checking fix
=20
-v5992 no n-i-bz Graydon mempool trim patch
+v5992,6006 wontfix n-i-bz Graydon mempool trim patch
=20
Signal race condition (users list, 13 June, Johannes Berg)
=20
@@ -46,6 +48,8 @@
=20
SSE3 commits: vx1635,1636, v5997
=20
-Alex Bennee amd64 bswapq (9 Aug)
-Alex Bennee mmap problem (9 Aug)
+Alex Bennee mmap problem (9 Aug) (v6001, merge)
=20
+Merge r1637 (amd64 insn printing fix.)
+Merge r5999 (Don't print more lines of a stack-trace than were
+obtained.)
|
|
From: <sv...@va...> - 2006-08-17 01:39:07
|
Author: sewardj
Date: 2006-08-17 02:39:04 +0100 (Thu, 17 Aug 2006)
New Revision: 6007
Log:
Regtest for #127521 (amd64 cmpxchg8b/16b).
Added:
trunk/none/tests/amd64/bug127521-64.c
trunk/none/tests/amd64/bug127521-64.stderr.exp
trunk/none/tests/amd64/bug127521-64.stdout.exp
trunk/none/tests/amd64/bug127521-64.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-16 17:51:28 UTC (rev 6006)
+++ trunk/none/tests/amd64/Makefile.am 2006-08-17 01:39:04 UTC (rev 6007)
@@ -5,6 +5,7 @@
INSN_TESTS =3D insn_basic insn_mmx insn_sse insn_sse2 insn_sse3 insn_fpu
=20
EXTRA_DIST =3D $(noinst_SCRIPTS) \
+ bug127521-64.vgtest bug127521-64.stdout.exp bug127521-64.stderr.exp \
clc.vgtest clc.stdout.exp clc.stderr.exp \
faultstatus.disabled faultstatus.stderr.exp \
fcmovnu.vgtest fcmovnu.stderr.exp fcmovnu.stdout.exp \
@@ -21,6 +22,7 @@
=20
=20
check_PROGRAMS =3D \
+ bug127521-64 \
clc \
faultstatus fcmovnu fxtract $(INSN_TESTS) looper jrcxz smc1 shrld \
nibz_bennee_mmap
Added: trunk/none/tests/amd64/bug127521-64.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/bug127521-64.c (rev 0)
+++ trunk/none/tests/amd64/bug127521-64.c 2006-08-17 01:39:04 UTC (rev 60=
07)
@@ -0,0 +1,155 @@
+#include <stdlib.h>
+#include <stdio.h>
+
+typedef unsigned int UInt;
+typedef unsigned long long int ULong;
+
+void do_cmpxchg8b ( /*OUT*/
+ ULong* rdxOut, ULong* raxOut,=20
+ ULong* memHiOut, ULong* memLoOut,
+ ULong* zOut,
+ /*IN*/
+ ULong rdxIn, ULong raxIn,=20
+ ULong memHiIn, ULong memLoIn,
+ ULong rcxIn, ULong rbxIn )
+{
+ UInt mem[2];
+ ULong block[6];
+ mem[0] =3D (UInt)memLoIn;
+ mem[1] =3D (UInt)memHiIn;
+ block[0] =3D rdxIn;
+ block[1] =3D raxIn;
+ block[2] =3D rcxIn;
+ block[3] =3D rbxIn;
+ block[4] =3D (ULong)&mem[0];
+ block[5] =3D ~(0ULL);
+ __asm__ __volatile__(
+ "movq %0,%%r11\n"
+ "\tmovq 0(%%r11),%%rdx\n"
+ "\tmovq 8(%%r11),%%rax\n"
+ "\tmovq 16(%%r11),%%rcx\n"
+ "\tmovq 24(%%r11),%%rbx\n"
+ "\tmovq 32(%%r11),%%r10\n"
+ "\tlock cmpxchg8b (%%r10)\n"
+ "\tmovabsq $0,%%r10\n"
+ "\tsetz %%r10b\n"
+ "\tmovq %%r10,40(%%r11)\n"
+ "\tmovq %%rdx,0(%%r11)\n"
+ "\tmovq %%rax,8(%%r11)\n"
+ : /*out*/
+ : /*in*/ "r"(&block[0])
+ : /*trash*/ "%r11", "%r10", "%rax", "%rbx", "%rcx", "%rdx",=20
+ "cc", "memory" );
+ *rdxOut =3D block[0];
+ *raxOut =3D block[1];
+ *memLoOut =3D (ULong)mem[0];
+ *memHiOut =3D (ULong)mem[1];
+ *zOut =3D block[5];
+}
+
+void try8b ( ULong d, ULong a, ULong mHi, ULong mLo, ULong c, ULong b )
+{
+ ULong dd, aa, mmHi, mmLo, zz;
+ do_cmpxchg8b( &dd, &aa, &mmHi, &mmLo, &zz,
+ d,a,mHi,mLo,c,b);
+ printf(" Q d:a=3D%llx:%llx mem=3D%llx:%llx c:b=3D%llx:%llx "
+ "-> z=3D%lld d:a=3D%llx:%llx mem=3D%llx:%llx\n",
+ d,a, mHi,mLo, c,b, zz, dd,aa, mmHi,mmLo );
+}
+
+void do_cmpxchg16b ( /*OUT*/
+ ULong* rdxOut, ULong* raxOut,=20
+ ULong* memHiOut, ULong* memLoOut,
+ ULong* zOut,
+ /*IN*/
+ ULong rdxIn, ULong raxIn,=20
+ ULong memHiIn, ULong memLoIn,
+ ULong rcxIn, ULong rbxIn )
+{
+ ULong mem[2];
+ ULong block[6];
+ mem[0] =3D memLoIn;
+ mem[1] =3D memHiIn;
+ block[0] =3D rdxIn;
+ block[1] =3D raxIn;
+ block[2] =3D rcxIn;
+ block[3] =3D rbxIn;
+ block[4] =3D (ULong)&mem[0];
+ block[5] =3D ~(0ULL);
+ __asm__ __volatile__(
+ "movq %0,%%r11\n"
+ "\tmovq 0(%%r11),%%rdx\n"
+ "\tmovq 8(%%r11),%%rax\n"
+ "\tmovq 16(%%r11),%%rcx\n"
+ "\tmovq 24(%%r11),%%rbx\n"
+ "\tmovq 32(%%r11),%%r10\n"
+ "\tlock cmpxchg16b (%%r10)\n"
+ "\tmovabsq $0,%%r10\n"
+ "\tsetz %%r10b\n"
+ "\tmovq %%r10,40(%%r11)\n"
+ "\tmovq %%rdx,0(%%r11)\n"
+ "\tmovq %%rax,8(%%r11)\n"
+ : /*out*/
+ : /*in*/ "r"(&block[0])
+ : /*trash*/ "%r11", "%r10", "%rax", "%rbx", "%rcx", "%rdx",=20
+ "cc", "memory" );
+ *rdxOut =3D block[0];
+ *raxOut =3D block[1];
+ *memLoOut =3D mem[0];
+ *memHiOut =3D mem[1];
+ *zOut =3D block[5];
+}
+
+void try16b ( ULong d, ULong a, ULong mHi, ULong mLo, ULong c, ULong b )
+{
+ ULong dd, aa, mmHi, mmLo, zz;
+ do_cmpxchg16b( &dd, &aa, &mmHi, &mmLo, &zz,
+ d,a,mHi,mLo,c,b);
+ printf("QQ d:a=3D%llx:%llx mem=3D%llx:%llx c:b=3D%llx:%llx "
+ "-> z=3D%lld d:a=3D%llx:%llx mem=3D%llx:%llx\n",
+ d,a, mHi,mLo, c,b, zz, dd,aa, mmHi,mmLo );
+}
+
+int main(void)
+{
+ ULong z =3D 0xDEADBEEF00000000ULL;
+
+ try8b( 0,1, 5,4, 3,2 );
+ try8b( 0,1, 0,1, 3,2 );
+
+ try8b( 0,1, 0,4, 3,2 );
+ try8b( 0,1, 0,0, 3,2 );
+
+ try8b( 0,1, 5,0, 3,2 );
+ try8b( 0,1, 1,1, 3,2 );
+
+ try8b( 0+z,1+z, 5+z,4+z, 3+z,2+z );
+ try8b( 0+z,1+z, 0+z,1+z, 3+z,2+z );
+
+ try8b( 0+z,1+z, 0+z,4+z, 3+z,2+z );
+ try8b( 0+z,1+z, 0+z,0+z, 3+z,2+z );
+
+ try8b( 0+z,1+z, 5+z,0+z, 3+z,2+z );
+ try8b( 0+z,1+z, 1+z,1+z, 3+z,2+z );
+
+ try16b( 0,1, 5,4, 3,2 );
+ try16b( 0,1, 0,1, 3,2 );
+
+ try16b( 0,1, 0,4, 3,2 );
+ try16b( 0,1, 0,0, 3,2 );
+
+ try16b( 0,1, 5,0, 3,2 );
+ try16b( 0,1, 1,1, 3,2 );
+
+ try16b( 0+z,1+z, 5+z,4+z, 3+z,2+z );
+ try16b( 0+z,1+z, 0+z,1+z, 3+z,2+z );
+
+ try16b( 0+z,1+z, 0+z,4+z, 3+z,2+z );
+ try16b( 0+z,1+z, 0+z,0+z, 3+z,2+z );
+
+ try16b( 0+z,1+z, 5+z,0+z, 3+z,2+z );
+ try16b( 0+z,1+z, 1+z,1+z, 3+z,2+z );
+
+ return 0;
+}
+
Added: trunk/none/tests/amd64/bug127521-64.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/bug127521-64.stderr.exp =
(rev 0)
+++ trunk/none/tests/amd64/bug127521-64.stderr.exp 2006-08-17 01:39:04 UT=
C (rev 6007)
@@ -0,0 +1,2 @@
+
+
Added: trunk/none/tests/amd64/bug127521-64.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/bug127521-64.stdout.exp =
(rev 0)
+++ trunk/none/tests/amd64/bug127521-64.stdout.exp 2006-08-17 01:39:04 UT=
C (rev 6007)
@@ -0,0 +1,24 @@
+ Q d:a=3D0:1 mem=3D5:4 c:b=3D3:2 -> z=3D0 d:a=3D5:4 mem=3D5:4
+ Q d:a=3D0:1 mem=3D0:1 c:b=3D3:2 -> z=3D1 d:a=3D0:1 mem=3D3:2
+ Q d:a=3D0:1 mem=3D0:4 c:b=3D3:2 -> z=3D0 d:a=3D0:4 mem=3D0:4
+ Q d:a=3D0:1 mem=3D0:0 c:b=3D3:2 -> z=3D0 d:a=3D0:0 mem=3D0:0
+ Q d:a=3D0:1 mem=3D5:0 c:b=3D3:2 -> z=3D0 d:a=3D5:0 mem=3D5:0
+ Q d:a=3D0:1 mem=3D1:1 c:b=3D3:2 -> z=3D0 d:a=3D1:1 mem=3D1:1
+ Q d:a=3Ddeadbeef00000000:deadbeef00000001 mem=3Ddeadbeef00000005:deadbe=
ef00000004 c:b=3Ddeadbeef00000003:deadbeef00000002 -> z=3D0 d:a=3D5:4 mem=
=3D5:4
+ Q d:a=3Ddeadbeef00000000:deadbeef00000001 mem=3Ddeadbeef00000000:deadbe=
ef00000001 c:b=3Ddeadbeef00000003:deadbeef00000002 -> z=3D1 d:a=3Ddeadbee=
f00000000:deadbeef00000001 mem=3D3:2
+ Q d:a=3Ddeadbeef00000000:deadbeef00000001 mem=3Ddeadbeef00000000:deadbe=
ef00000004 c:b=3Ddeadbeef00000003:deadbeef00000002 -> z=3D0 d:a=3D0:4 mem=
=3D0:4
+ Q d:a=3Ddeadbeef00000000:deadbeef00000001 mem=3Ddeadbeef00000000:deadbe=
ef00000000 c:b=3Ddeadbeef00000003:deadbeef00000002 -> z=3D0 d:a=3D0:0 mem=
=3D0:0
+ Q d:a=3Ddeadbeef00000000:deadbeef00000001 mem=3Ddeadbeef00000005:deadbe=
ef00000000 c:b=3Ddeadbeef00000003:deadbeef00000002 -> z=3D0 d:a=3D5:0 mem=
=3D5:0
+ Q d:a=3Ddeadbeef00000000:deadbeef00000001 mem=3Ddeadbeef00000001:deadbe=
ef00000001 c:b=3Ddeadbeef00000003:deadbeef00000002 -> z=3D0 d:a=3D1:1 mem=
=3D1:1
+QQ d:a=3D0:1 mem=3D5:4 c:b=3D3:2 -> z=3D0 d:a=3D5:4 mem=3D5:4
+QQ d:a=3D0:1 mem=3D0:1 c:b=3D3:2 -> z=3D1 d:a=3D0:1 mem=3D3:2
+QQ d:a=3D0:1 mem=3D0:4 c:b=3D3:2 -> z=3D0 d:a=3D0:4 mem=3D0:4
+QQ d:a=3D0:1 mem=3D0:0 c:b=3D3:2 -> z=3D0 d:a=3D0:0 mem=3D0:0
+QQ d:a=3D0:1 mem=3D5:0 c:b=3D3:2 -> z=3D0 d:a=3D5:0 mem=3D5:0
+QQ d:a=3D0:1 mem=3D1:1 c:b=3D3:2 -> z=3D0 d:a=3D1:1 mem=3D1:1
+QQ d:a=3Ddeadbeef00000000:deadbeef00000001 mem=3Ddeadbeef00000005:deadbe=
ef00000004 c:b=3Ddeadbeef00000003:deadbeef00000002 -> z=3D0 d:a=3Ddeadbee=
f00000005:deadbeef00000004 mem=3Ddeadbeef00000005:deadbeef00000004
+QQ d:a=3Ddeadbeef00000000:deadbeef00000001 mem=3Ddeadbeef00000000:deadbe=
ef00000001 c:b=3Ddeadbeef00000003:deadbeef00000002 -> z=3D1 d:a=3Ddeadbee=
f00000000:deadbeef00000001 mem=3Ddeadbeef00000003:deadbeef00000002
+QQ d:a=3Ddeadbeef00000000:deadbeef00000001 mem=3Ddeadbeef00000000:deadbe=
ef00000004 c:b=3Ddeadbeef00000003:deadbeef00000002 -> z=3D0 d:a=3Ddeadbee=
f00000000:deadbeef00000004 mem=3Ddeadbeef00000000:deadbeef00000004
+QQ d:a=3Ddeadbeef00000000:deadbeef00000001 mem=3Ddeadbeef00000000:deadbe=
ef00000000 c:b=3Ddeadbeef00000003:deadbeef00000002 -> z=3D0 d:a=3Ddeadbee=
f00000000:deadbeef00000000 mem=3Ddeadbeef00000000:deadbeef00000000
+QQ d:a=3Ddeadbeef00000000:deadbeef00000001 mem=3Ddeadbeef00000005:deadbe=
ef00000000 c:b=3Ddeadbeef00000003:deadbeef00000002 -> z=3D0 d:a=3Ddeadbee=
f00000005:deadbeef00000000 mem=3Ddeadbeef00000005:deadbeef00000000
+QQ d:a=3Ddeadbeef00000000:deadbeef00000001 mem=3Ddeadbeef00000001:deadbe=
ef00000001 c:b=3Ddeadbeef00000003:deadbeef00000002 -> z=3D0 d:a=3Ddeadbee=
f00000001:deadbeef00000001 mem=3Ddeadbeef00000001:deadbeef00000001
Added: trunk/none/tests/amd64/bug127521-64.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/bug127521-64.vgtest (r=
ev 0)
+++ trunk/none/tests/amd64/bug127521-64.vgtest 2006-08-17 01:39:04 UTC (r=
ev 6007)
@@ -0,0 +1 @@
+prog: bug127521-64
|
|
From: <sv...@va...> - 2006-08-17 01:20:09
|
Author: sewardj
Date: 2006-08-17 02:20:01 +0100 (Thu, 17 Aug 2006)
New Revision: 1639
Log:
Implement amd64 insns cmpxchg8b and cmpxchg16b. Fixes #127521.
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-16 00:25:28 UTC (rev 1638)
+++ trunk/priv/guest-amd64/toIR.c 2006-08-17 01:20:01 UTC (rev 1639)
@@ -7136,9 +7136,10 @@
//.. //--=20
=20
static
-ULong dis_cmpxchg_G_E ( Prefix pfx,
- Int size,=20
- Long delta0 )
+ULong dis_cmpxchg_G_E ( /*OUT*/Bool* ok,
+ Prefix pfx,
+ Int size,=20
+ Long delta0 )
{
HChar dis_buf[50];
Int len;
@@ -7154,7 +7155,9 @@
UChar rm =3D getUChar(delta0);
=20
if (epartIsReg(rm)) {
- vassert(0); /* awaiting test case */
+ *ok =3D False;
+ return delta0;
+ /* awaiting test case */
assign( dest, getIRegE(size, pfx, rm) );
delta0++;
DIP("cmpxchg%c %s,%s\n", nameISize(size),
@@ -7182,10 +7185,126 @@
storeLE( mkexpr(addr), mkexpr(dest2) );
}
=20
+ *ok =3D True;
return delta0;
}
=20
+static
+ULong dis_cmpxchg8b ( /*OUT*/Bool* ok,
+ Prefix pfx,
+ Int sz,=20
+ Long delta0 )
+{
+ HChar dis_buf[50];
+ Int len;
=20
+ IRType ty =3D szToITy(sz);
+ IRTemp eq =3D newTemp(Ity_I8);
+ IRTemp olda =3D newTemp(ty);
+ IRTemp oldb =3D newTemp(ty);
+ IRTemp oldc =3D newTemp(ty);
+ IRTemp oldd =3D newTemp(ty);
+ IRTemp newa =3D newTemp(Ity_I64);
+ IRTemp newd =3D newTemp(Ity_I64);
+ IRTemp oldml =3D newTemp(ty);
+ IRTemp oldmh =3D newTemp(ty);
+ IRTemp newml =3D newTemp(ty);
+ IRTemp newmh =3D newTemp(ty);
+ IRTemp addr =3D IRTemp_INVALID;
+ IRTemp oldrf =3D newTemp(Ity_I64);
+ IRTemp newrf =3D newTemp(Ity_I64);
+ UChar rm =3D getUChar(delta0);
+ vassert(sz =3D=3D 4 || sz =3D=3D 8); /* guaranteed by caller */
+
+ if (epartIsReg(rm)) {
+ *ok =3D False;
+ return delta0;
+ }
+
+ addr =3D disAMode ( &len, pfx, delta0, dis_buf, 0 );
+ delta0 +=3D len;
+ DIP("cmpxchg%s %s\n", sz =3D=3D 4 ? "8" : "16", dis_buf);
+
+ if (sz =3D=3D 4) {
+ assign( olda, getIReg32( R_RAX ) );
+ assign( oldb, getIReg32( R_RBX ) );
+ assign( oldc, getIReg32( R_RCX ) );
+ assign( oldd, getIReg32( R_RDX ) );
+ assign( oldml, loadLE( Ity_I32, mkexpr(addr) ));
+ assign( oldmh, loadLE( Ity_I32,=20
+ binop(Iop_Add64,mkexpr(addr),mkU64(4)) ));
+ assign(eq,=20
+ unop(Iop_1Uto8,
+ binop(Iop_CmpEQ32,=20
+ binop(Iop_Or32,
+ binop(Iop_Xor32,mkexpr(olda),mkexpr(oldml)),
+ binop(Iop_Xor32,mkexpr(oldd),mkexpr(oldmh))),
+ mkU32(0))));
+ assign( newml, IRExpr_Mux0X(mkexpr(eq),mkexpr(oldml),mkexpr(oldb))=
);
+ assign( newmh, IRExpr_Mux0X(mkexpr(eq),mkexpr(oldmh),mkexpr(oldc))=
);
+ assign( newa, IRExpr_Mux0X(mkexpr(eq),
+ unop(Iop_32Uto64,mkexpr(oldml)),
+ getIRegRAX(8)) );
+ assign( newd, IRExpr_Mux0X(mkexpr(eq),
+ unop(Iop_32Uto64,mkexpr(oldmh)),
+ getIRegRDX(8)) );
+
+ storeLE( mkexpr(addr), mkexpr(newml) );
+ storeLE( binop(Iop_Add64,mkexpr(addr),mkU64(4)),
+ mkexpr(newmh) );
+ putIRegRAX( 8, mkexpr(newa) );
+ putIRegRDX( 8, mkexpr(newd) );
+ } else {
+ assign( olda, getIReg64( R_RAX ) );
+ assign( oldb, getIReg64( R_RBX ) );
+ assign( oldc, getIReg64( R_RCX ) );
+ assign( oldd, getIReg64( R_RDX ) );
+ assign( oldml, loadLE( Ity_I64, mkexpr(addr) ));
+ assign( oldmh, loadLE( Ity_I64,=20
+ binop(Iop_Add64,mkexpr(addr),mkU64(8)) ));
+ assign(eq,=20
+ unop(Iop_1Uto8,
+ binop(Iop_CmpEQ64,=20
+ binop(Iop_Or64,
+ binop(Iop_Xor64,mkexpr(olda),mkexpr(oldml)),
+ binop(Iop_Xor64,mkexpr(oldd),mkexpr(oldmh))),
+ mkU64(0))));
+ assign( newml, IRExpr_Mux0X(mkexpr(eq),mkexpr(oldml),mkexpr(oldb))=
);
+ assign( newmh, IRExpr_Mux0X(mkexpr(eq),mkexpr(oldmh),mkexpr(oldc))=
);
+ assign( newa, IRExpr_Mux0X(mkexpr(eq),mkexpr(oldml),mkexpr(olda))=
);
+ assign( newd, IRExpr_Mux0X(mkexpr(eq),mkexpr(oldmh),mkexpr(oldd))=
);
+
+ storeLE( mkexpr(addr), mkexpr(newml) );
+ storeLE( binop(Iop_Add64,mkexpr(addr),mkU64(8)),
+ mkexpr(newmh) );
+ putIRegRAX( 8, mkexpr(newa) );
+ putIRegRDX( 8, mkexpr(newd) );
+ }
+
+ /* And set the flags. Z is set if original d:a =3D=3D mem, else
+ cleared. All others unchanged. (This is different from normal
+ cmpxchg which just sets them according to SUB.). */
+ assign( oldrf, binop(Iop_And64,=20
+ mk_amd64g_calculate_rflags_all(),
+ mkU64(~AMD64G_CC_MASK_Z)) );
+ assign( newrf,
+ binop(Iop_Or64,
+ mkexpr(oldrf),
+ binop(Iop_Shl64,=20
+ binop(Iop_And64, unop(Iop_8Uto64, mkexpr(eq)), mkU64(1)),
+ mkU8(AMD64G_CC_SHIFT_Z))
+ ));
+ stmt( IRStmt_Put( OFFB_CC_OP, mkU64(AMD64G_CC_OP_COPY) ));
+ stmt( IRStmt_Put( OFFB_CC_DEP2, mkU64(0) ));
+ stmt( IRStmt_Put( OFFB_CC_DEP1, mkexpr(newrf) ));
+ /* Set NDEP even though it isn't used. This makes redundant-PUT
+ elimination of previous stores to this field work better. */
+ stmt( IRStmt_Put( OFFB_CC_NDEP, mkU64(0) ));
+
+ *ok =3D True;
+ return delta0;
+}
+
//.. //-- static
//.. //-- Addr dis_cmpxchg8b ( UCodeBlock* cb,=20
//.. //-- UChar sorb,
@@ -13750,14 +13869,22 @@
//.. case 0xB0: /* CMPXCHG Gb,Eb */
//.. delta =3D dis_cmpxchg_G_E ( sorb, 1, delta );
//.. break;
- case 0xB1: /* CMPXCHG Gv,Ev */
+ case 0xB1: { /* CMPXCHG Gv,Ev (allowed in 16,32,64 bit) */
+ Bool ok =3D True;
if (haveF2orF3(pfx)) goto decode_failure;
- delta =3D dis_cmpxchg_G_E ( pfx, sz, delta );
+ if (sz !=3D 2 && sz !=3D 4 && sz !=3D 8) goto decode_failure;
+ delta =3D dis_cmpxchg_G_E ( &ok, pfx, sz, delta );
+ if (!ok) goto decode_failure;
break;
-//.. //-- case 0xC7: /* CMPXCHG8B Gv */
-//.. //-- eip =3D dis_cmpxchg8b ( cb, sorb, eip );
-//.. //-- break;
-//.. //--=20
+ }
+ case 0xC7: { /* CMPXCHG8B Ev, CMPXCHG16B Ev */
+ Bool ok =3D True;
+ if (have66orF2orF3(pfx)) goto decode_failure;
+ if (sz !=3D 4 && sz !=3D 8) goto decode_failure;
+ delta =3D dis_cmpxchg8b ( &ok, pfx, sz, delta );
+ break;
+ }
+
/* =3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- CPUID -=3D-=3D-=3D-=3D-=3D=
-=3D-=3D-=3D-=3D-=3D-=3D */
=20
case 0xA2: { /* CPUID */
|
|
From: Julian S. <js...@ac...> - 2006-08-17 01:18:31
|
On Thursday 17 August 2006 02:07, Robert Walsh wrote: > Attached is the output. This was run on: Thanks. My implementation seems correct therefore; will commit. J |
|
From: Robert W. <rj...@du...> - 2006-08-17 01:07:53
|
On Thu, 2006-08-17 at 01:44 +0100, Julian Seward wrote: > I'm trying to implement amd64 instructions cmpxchg8b and cmpxchg16b > so as to close bug #127521 > (see https://bugs.kde.org/show_bug.cgi?id=127521). I think I have > a correct implementation; however it appears my Athlon64 does not > support cmpxchg16b and so I cannot obtain reference results for > cmpxchg16b. > > Is it possible someone with a machine supporting cmpxchg16b > could run the test program below and send the results? Attached is the output. This was run on: processor : 0 vendor_id : AuthenticAMD cpu family : 15 model : 65 model name : Dual-Core AMD Opteron(tm) Processor 8218 stepping : 2 cpu MHz : 2588.806 cache size : 1024 KB physical id : 0 siblings : 2 core id : 0 cpu cores : 2 fpu : yes fpu_exception : yes cpuid level : 1 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext lm 3dnowext 3dnow pni cmpxchg16b lahf_lm cmp_legacy bogomips : 5111.80 TLB size : 1088 4K pages clflush size : 64 cache_alignment : 64 address sizes : 40 bits physical, 48 bits virtual power management: ts fid vid ttp [4] [5] shared cores : 0 1 The executable was compiled on FC5, but run on SLES9, as the SLES9 assembler didn't understand the instruction, but the FC5 assembler did. However, the FC5 CPU didn't understand the instruction... :-) Regards, Robert. -- Robert Walsh Amalgamated Durables, Inc. - "We don't make the things you buy." Email: rj...@du... |
|
From: Julian S. <js...@ac...> - 2006-08-17 00:44:52
|
I'm trying to implement amd64 instructions cmpxchg8b and cmpxchg16b so as to close bug #127521 (see https://bugs.kde.org/show_bug.cgi?id=127521). I think I have a correct implementation; however it appears my Athlon64 does not support cmpxchg16b and so I cannot obtain reference results for cmpxchg16b. Is it possible someone with a machine supporting cmpxchg16b could run the test program below and send the results? Thanks, J #include <stdlib.h> #include <stdio.h> typedef unsigned int UInt; typedef unsigned long long int ULong; void do_cmpxchg8b ( /*OUT*/ ULong* rdxOut, ULong* raxOut, ULong* memHiOut, ULong* memLoOut, ULong* zOut, /*IN*/ ULong rdxIn, ULong raxIn, ULong memHiIn, ULong memLoIn, ULong rcxIn, ULong rbxIn ) { UInt mem[2]; ULong block[6]; mem[0] = (UInt)memLoIn; mem[1] = (UInt)memHiIn; block[0] = rdxIn; block[1] = raxIn; block[2] = rcxIn; block[3] = rbxIn; block[4] = (ULong)&mem[0]; block[5] = ~(0ULL); __asm__ __volatile__( "movq %0,%%r11\n" "\tmovq 0(%%r11),%%rdx\n" "\tmovq 8(%%r11),%%rax\n" "\tmovq 16(%%r11),%%rcx\n" "\tmovq 24(%%r11),%%rbx\n" "\tmovq 32(%%r11),%%r10\n" "\tlock cmpxchg8b (%%r10)\n" "\tmovabsq $0,%%r10\n" "\tsetz %%r10b\n" "\tmovq %%r10,40(%%r11)\n" "\tmovq %%rdx,0(%%r11)\n" "\tmovq %%rax,8(%%r11)\n" : /*out*/ : /*in*/ "r"(&block[0]) : /*trash*/ "%r11", "%r10", "%rax", "%rbx", "%rcx", "%rdx", "cc", "memory" ); *rdxOut = block[0]; *raxOut = block[1]; *memLoOut = (ULong)mem[0]; *memHiOut = (ULong)mem[1]; *zOut = block[5]; } void try8b ( ULong d, ULong a, ULong mHi, ULong mLo, ULong c, ULong b ) { ULong dd, aa, mmHi, mmLo, zz; do_cmpxchg8b( &dd, &aa, &mmHi, &mmLo, &zz, d,a,mHi,mLo,c,b); printf(" Q d:a=%llx:%llx mem=%llx:%llx c:b=%llx:%llx " "-> z=%lld d:a=%llx:%llx mem=%llx:%llx\n", d,a, mHi,mLo, c,b, zz, dd,aa, mmHi,mmLo ); } void do_cmpxchg16b ( /*OUT*/ ULong* rdxOut, ULong* raxOut, ULong* memHiOut, ULong* memLoOut, ULong* zOut, /*IN*/ ULong rdxIn, ULong raxIn, ULong memHiIn, ULong memLoIn, ULong rcxIn, ULong rbxIn ) { ULong mem[2]; ULong block[6]; mem[0] = memLoIn; mem[1] = memHiIn; block[0] = rdxIn; block[1] = raxIn; block[2] = rcxIn; block[3] = rbxIn; block[4] = (ULong)&mem[0]; block[5] = ~(0ULL); __asm__ __volatile__( "movq %0,%%r11\n" "\tmovq 0(%%r11),%%rdx\n" "\tmovq 8(%%r11),%%rax\n" "\tmovq 16(%%r11),%%rcx\n" "\tmovq 24(%%r11),%%rbx\n" "\tmovq 32(%%r11),%%r10\n" "\tlock cmpxchg16b (%%r10)\n" "\tmovabsq $0,%%r10\n" "\tsetz %%r10b\n" "\tmovq %%r10,40(%%r11)\n" "\tmovq %%rdx,0(%%r11)\n" "\tmovq %%rax,8(%%r11)\n" : /*out*/ : /*in*/ "r"(&block[0]) : /*trash*/ "%r11", "%r10", "%rax", "%rbx", "%rcx", "%rdx", "cc", "memory" ); *rdxOut = block[0]; *raxOut = block[1]; *memLoOut = mem[0]; *memHiOut = mem[1]; *zOut = block[5]; } void try16b ( ULong d, ULong a, ULong mHi, ULong mLo, ULong c, ULong b ) { ULong dd, aa, mmHi, mmLo, zz; do_cmpxchg16b( &dd, &aa, &mmHi, &mmLo, &zz, d,a,mHi,mLo,c,b); printf("QQ d:a=%llx:%llx mem=%llx:%llx c:b=%llx:%llx " "-> z=%lld d:a=%llx:%llx mem=%llx:%llx\n", d,a, mHi,mLo, c,b, zz, dd,aa, mmHi,mmLo ); } int main(void) { ULong z = 0xDEADBEEF00000000ULL; try8b( 0,1, 5,4, 3,2 ); try8b( 0,1, 0,1, 3,2 ); try8b( 0,1, 0,4, 3,2 ); try8b( 0,1, 0,0, 3,2 ); try8b( 0,1, 5,0, 3,2 ); try8b( 0,1, 1,1, 3,2 ); try8b( 0+z,1+z, 5+z,4+z, 3+z,2+z ); try8b( 0+z,1+z, 0+z,1+z, 3+z,2+z ); try8b( 0+z,1+z, 0+z,4+z, 3+z,2+z ); try8b( 0+z,1+z, 0+z,0+z, 3+z,2+z ); try8b( 0+z,1+z, 5+z,0+z, 3+z,2+z ); try8b( 0+z,1+z, 1+z,1+z, 3+z,2+z ); try16b( 0,1, 5,4, 3,2 ); try16b( 0,1, 0,1, 3,2 ); try16b( 0,1, 0,4, 3,2 ); try16b( 0,1, 0,0, 3,2 ); try16b( 0,1, 5,0, 3,2 ); try16b( 0,1, 1,1, 3,2 ); try16b( 0+z,1+z, 5+z,4+z, 3+z,2+z ); try16b( 0+z,1+z, 0+z,1+z, 3+z,2+z ); try16b( 0+z,1+z, 0+z,4+z, 3+z,2+z ); try16b( 0+z,1+z, 0+z,0+z, 3+z,2+z ); try16b( 0+z,1+z, 5+z,0+z, 3+z,2+z ); try16b( 0+z,1+z, 1+z,1+z, 3+z,2+z ); return 0; } |