You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
1
(20) |
2
(10) |
3
(18) |
4
(10) |
5
(16) |
6
(8) |
|
7
|
8
(17) |
9
(22) |
10
(10) |
11
(9) |
12
(21) |
13
(15) |
|
14
(10) |
15
(11) |
16
(9) |
17
(13) |
18
(9) |
19
(11) |
20
(11) |
|
21
(23) |
22
(20) |
23
(10) |
24
(11) |
25
(20) |
26
(20) |
27
(21) |
|
28
(8) |
29
(7) |
30
(7) |
31
(9) |
|
|
|
|
From: <sv...@va...> - 2006-05-12 23:50:18
|
Author: sewardj
Date: 2006-05-13 00:50:15 +0100 (Sat, 13 May 2006)
New Revision: 5897
Log:
A new flag, --error-exitcode=3D, has been added, to allow changing the
exit code in runs where Valgrind reported errors. Fixes #121814 and
#126517.
Modified:
trunk/NEWS
trunk/coregrind/m_main.c
trunk/coregrind/m_options.c
trunk/coregrind/pub_core_options.h
trunk/docs/xml/manual-core.xml
Modified: trunk/NEWS
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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/NEWS 2006-05-12 23:35:10 UTC (rev 5896)
+++ trunk/NEWS 2006-05-12 23:50:15 UTC (rev 5897)
@@ -67,6 +67,10 @@
functions, and will carefully check data passed to the (P)MPI_
interface.
=20
+- A new flag, --error-exitcode=3D, has been added. This allows changing=
the
+ exit code in runs where Valgrind reported errors, which is useful when
+ using Valgrind as part of an automated test suite.
+
- XXX: others...
=20
Please note that Helgrind is still not working. We have made an importa=
nt
Modified: trunk/coregrind/m_main.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_main.c 2006-05-12 23:35:10 UTC (rev 5896)
+++ trunk/coregrind/m_main.c 2006-05-12 23:50:15 UTC (rev 5897)
@@ -917,6 +917,7 @@
" --demangle=3Dno|yes automatically demangle C++ names? [yes]=
\n"
" --num-callers=3D<number> show <number> callers in stack traces [=
12]\n"
" --error-limit=3Dno|yes stop showing new errors if too many? [y=
es]\n"
+" --error-exitcode=3D<number> exit code to return if errors found [0=3D=
disable]\n"
" --show-below-main=3Dno|yes continue stack traces below main() [no]=
\n"
" --suppressions=3D<filename> suppress errors described in <filename>=
\n"
" --gen-suppressions=3Dno|yes|all print suppressions for errors? [=
no]\n"
@@ -1117,6 +1118,7 @@
else VG_BOOL_CLO(arg, "--db-attach", VG_(clo_db_attach))
else VG_BOOL_CLO(arg, "--demangle", VG_(clo_demangle))
else VG_BOOL_CLO(arg, "--error-limit", VG_(clo_error_limit))
+ else VG_NUM_CLO (arg, "--error-exitcode", VG_(clo_error_exitcode=
))
else VG_BOOL_CLO(arg, "--show-emwarns", VG_(clo_show_emwarns))
else VG_NUM_CLO (arg, "--max-stackframe", VG_(clo_max_stackframe=
))
else VG_BOOL_CLO(arg, "--run-libc-freeres", VG_(clo_run_libc_freer=
es))
@@ -2685,7 +2687,16 @@
=20
switch (tids_schedretcode) {
case VgSrc_ExitSyscall: /* the normal way out */
- VG_(exit)( VG_(threads)[tid].os_state.exitcode );
+ /* Change the application return code to user's return code,
+ if an error was found */
+ if (VG_(clo_error_exitcode) > 0=20
+ && VG_(get_n_errs_found)() > 0) {
+ VG_(exit)( VG_(clo_error_exitcode) );
+ } else {
+ /* otherwise, return the client's exit code, in the normal
+ way. */
+ VG_(exit)( VG_(threads)[tid].os_state.exitcode );
+ }
/* NOT ALIVE HERE! */
VG_(core_panic)("entered the afterlife in main() -- ExitSyscall");
break; /* what the hell :) */
Modified: trunk/coregrind/m_options.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_options.c 2006-05-12 23:35:10 UTC (rev 5896)
+++ trunk/coregrind/m_options.c 2006-05-12 23:50:15 UTC (rev 5897)
@@ -38,6 +38,7 @@
/* Define, and set defaults. */
VexControl VG_(clo_vex_control);
Bool VG_(clo_error_limit) =3D True;
+Int VG_(clo_error_exitcode) =3D 0;
Bool VG_(clo_db_attach) =3D False;
Char* VG_(clo_db_command) =3D GDB_PATH " -nw %f %p";
Int VG_(clo_gen_suppressions) =3D 0;
Modified: trunk/coregrind/pub_core_options.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/coregrind/pub_core_options.h 2006-05-12 23:35:10 UTC (rev 5896)
+++ trunk/coregrind/pub_core_options.h 2006-05-12 23:50:15 UTC (rev 5897)
@@ -44,13 +44,17 @@
=20
/* Should we stop collecting errors if too many appear? default: YES */
extern Bool VG_(clo_error_limit);
+/* Alternative exit code to hand to parent if errors were found.
+ default: 0 (no, return the application's exit code in the normal
+ way. */
+extern Int VG_(clo_error_exitcode);
/* Enquire about whether to attach to a debugger at errors? default: N=
O */
extern Bool VG_(clo_db_attach);
/* The debugger command? default: whatever gdb ./configure found */
extern Char* VG_(clo_db_command);
/* Generating a suppression for each error? default: 0 (NO)
Other values: 1 (yes, but ask user), 2 (yes, don't ask user) */
-extern Int VG_(clo_gen_suppressions);
+extern Int VG_(clo_gen_suppressions);
/* Sanity-check level: 0 =3D none, 1 (default), > 1 =3D expensive. */
extern Int VG_(clo_sanity_level);
/* Automatically attempt to demangle C++ names? default: YES */
Modified: trunk/docs/xml/manual-core.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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/xml/manual-core.xml 2006-05-12 23:35:10 UTC (rev 5896)
+++ trunk/docs/xml/manual-core.xml 2006-05-12 23:50:15 UTC (rev 5897)
@@ -834,6 +834,22 @@
</listitem>
</varlistentry>
=20
+ <varlistentry id=3D"opt.error-exitcode" xreflabel=3D"--error-exitcode"=
>
+ <term>
+ <option><![CDATA[--error-exitcode=3D<number> [default: 0] ]]></opt=
ion>
+ </term>
+ <listitem>
+ <para>Specifies an alternative exit code to return if Valgrind
+ reported any errors in the run. When set to the default value
+ (zero), the return value from Valgrind will always be the return=20
+ value of the process being simulated. When set to a nonzero value=
,
+ that value is returned instead, if Valgrind detects any errors.
+ This is useful for using Valgrind as part of an automated test
+ suite, since it makes it easy to detect test cases for which
+ Valgrind has reported errors, just by inspecting return codes.</pa=
ra>
+ </listitem>
+ </varlistentry>
+
<varlistentry id=3D"opt.stack-traces" xreflabel=3D"--show-below-main">
<term>
<option><![CDATA[--show-below-main=3D<yes|no> [default: no] ]]></o=
ption>
|
|
From: <sv...@va...> - 2006-05-12 23:35:13
|
Author: sewardj
Date: 2006-05-13 00:35:10 +0100 (Sat, 13 May 2006)
New Revision: 5896
Log:
Oops, this should have been in r5895.
Modified:
trunk/docs/xml/manual-core.xml
Modified: trunk/docs/xml/manual-core.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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/xml/manual-core.xml 2006-05-12 23:12:30 UTC (rev 5895)
+++ trunk/docs/xml/manual-core.xml 2006-05-12 23:35:10 UTC (rev 5896)
@@ -827,7 +827,7 @@
<option><![CDATA[--error-limit=3D<yes|no> [default: yes] ]]></opti=
on>
</term>
<listitem>
- <para>When enabled, Valgrind stops reporting errors after 100,000
+ <para>When enabled, Valgrind stops reporting errors after 10,000,0=
00
in total, or 1,000 different ones, have been seen. This is to
stop the error tracking machinery from becoming a huge performance
overhead in programs with many errors.</para>
|
|
From: <sv...@va...> - 2006-05-12 23:12:34
|
Author: sewardj
Date: 2006-05-13 00:12:30 +0100 (Sat, 13 May 2006)
New Revision: 5895
Log:
Increase number of unsuppressed errors shown before cutoff by a factor
of 100.
Modified:
trunk/coregrind/m_errormgr.c
trunk/docs/xml/manual-core.xml
Modified: trunk/coregrind/m_errormgr.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_errormgr.c 2006-05-12 21:19:00 UTC (rev 5894)
+++ trunk/coregrind/m_errormgr.c 2006-05-12 23:12:30 UTC (rev 5895)
@@ -60,7 +60,7 @@
=20
/* After this many total errors have been observed, stop collecting
errors at all. Counterpart to M_COLLECT_NO_ERRORS_AFTER_SHOWN. */
-#define M_COLLECT_NO_ERRORS_AFTER_FOUND 100000
+#define M_COLLECT_NO_ERRORS_AFTER_FOUND 10000000
=20
/* The list of error contexts found, both suppressed and unsuppressed.
Initially empty, and grows as errors are detected. */
Modified: trunk/docs/xml/manual-core.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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/xml/manual-core.xml 2006-05-12 21:19:00 UTC (rev 5894)
+++ trunk/docs/xml/manual-core.xml 2006-05-12 23:12:30 UTC (rev 5895)
@@ -333,10 +333,10 @@
expensive one and can become a significant performance overhead
if your program generates huge quantities of errors. To avoid
serious problems, Valgrind will simply stop collecting
-errors after 1000 different errors have been seen, or 100000 errors
+errors after 1000 different errors have been seen, or 10000000 errors
in total have been seen. In this situation you might as well
stop your program and fix it, because Valgrind won't tell you
-anything else useful after this. Note that the 1000/100000 limits
+anything else useful after this. Note that the 1000/10000000 limits
apply after suppressed errors are removed. These limits are
defined in <filename>m_errormgr.c</filename> and can be increased
if necessary.</para>
|
|
From: <sv...@va...> - 2006-05-12 21:19:05
|
Author: sewardj
Date: 2006-05-12 22:19:00 +0100 (Fri, 12 May 2006)
New Revision: 5894
Log:
Update.
Modified:
trunk/docs/internals/3_1_BUGSTATUS.txt
Modified: trunk/docs/internals/3_1_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_1_BUGSTATUS.txt 2006-05-12 20:28:26 UTC (rev 5=
893)
+++ trunk/docs/internals/3_1_BUGSTATUS.txt 2006-05-12 21:19:00 UTC (rev 5=
894)
@@ -8,17 +8,19 @@
=20
TRUNK PRIO BUG# WHAT
=20
-v5868 108258 NPTL pthread cleanup handlers not called=20
- low 117290 valgrind is sigKILL'd on startup
- high 118903 bash (2.05) doesn't support empty list in for=
-loop
- ? 119446 LinuxThread error suppressions not working
+v5868 fixed 108258 NPTL pthread cleanup handlers not called=20
+ high 117290 valgrind is sigKILL'd on startup
+ =3D=3D117295
+v5414 fixed 118703 m_signals.c:1427 Assertion 'tst->status =3D=3D=
VgTs_WaitSys'
+ low 118903 bash (2.05) doesn't support empty list in for=
-loop
+ low 119446 LinuxThread error suppressions not working
v5847 fixed 123210 New: strlen from ld-linux on amd64
v5838 fixed 123244 DWARF2 CFI reader: unhandled CFI instruction =
0:18
v5785 fixed 123248 syscalls in glibc-2.4: openat, fstatat, symli=
nkat
low 123258 socketcall.recvmsg(msg.msg_iov[i] points to u=
ninit
-v5886 low 123535 mremap(new_addr) requires MREMAP_FIXED in 4th=
arg
+v5886 fixed 123535 mremap(new_addr) requires MREMAP_FIXED in 4th=
arg
???? fixed 123836 small typo in the doc
- low 123837 semctl syscall: is 4rth argument is optional =
?
+ low 123837 semctl syscall: is 4th argument is optional ?
v5820/1 fixed 124029 ppc compile failed: `vor' gcc 3.3.5
low 124039 VKI_[GP]IO_UNIMAP* and VT_* ioctls
v5823 fixed 124222 Segfault: @@don't know what type ':' is
@@ -35,26 +37,26 @@
v5849 fixed 125492 ppc32: support a bunch more syscalls
v5852 fixed 121617 ppc32: coredumping gives assertion failure
(still broken on ppc64)
- ? 121814 Coregrind return error as exitcode patch
+ high 121814 Coregrind return error as exitcode patch
=3D=3D126517
- ? 108528 NPTL pthread cleanup handlers not called=20
- high 125607 amd64->IR: 0x66 0xF 0xA3 0x2 (btw etc)
- high 125651 amd64->IR: 0xF8 0x49 0xFF 0xE3 (clc?)
- high n-i-bz amd64->IR: 0xF 0xE 0xC3 0x90 (v-users, 16 Apr=
)
- ? load V at 0x3000'0000 ?
+v5868 fixed 108528 NPTL pthread cleanup handlers not called=20
+vx1612 fixed 125607 amd64->IR: 0x66 0xF 0xA3 0x2 (btw etc)
+vx1613 fixed 125651 amd64->IR: 0xF8 0x49 0xFF 0xE3 (clc?)
AshleyP's XML merger / XML changes ?
memcheck/tests/stack_switch=20
segfaults on 2.4.24-cm32lnxi6plsd2pcsmp (x=
86)
- 126253 x86 movx is wrong
-vx1605/6 126451 Valgrind 3.2 SVN doesn't work on ppc32 CPU's w=
ithout FPU
-v5877 126217 increase # threads
+ high n-i-bz memcheck/tests/stack_changes
+ segfaults on ppc32-linux
+vx1607 fixed 126253 x86 movx is wrong
+vx1605/6 fixed 126451 3.2 SVN doesn't work on ppc32 CPU's without FP=
U
+v5877 fixed 126217 increase # threads
n-i-bz none/tests/x86/int patch (devs, 29 Apr)
-in progress vectorise copy_address_range_state
+v5880 fixed n-i-bz vectorise copy_address_range_state
n-i-bz mpicc -fpic bug (Goedeken Richard, inbox)
-
- 125265 vex x86->IR: 0xD9 0xD0 (fnop)
- 126257 vex x86->IR: 0xF2 0x0F 0xF0 0x40 (lddqu) (sse3=
?)
- 126258 vex x86->IR: 0xDF 0x4D (fisttp)
+vx1611 fixed 126243 vex x86->IR: popw mem
+ low 125265 vex x86->IR: 0xD9 0xD0 (fnop)
+ low 126257 vex x86->IR: 0xF2 0x0F 0xF0 0x40 (lddqu) (sse3=
)
+ low 126258 vex x86->IR: 0xDF 0x4D (fisttp) (sse3)
126384 rdpmc
126389 fxrstr
126400 addsubpd (sse3)
@@ -63,13 +65,12 @@
126419 hsubps (sse3)
126420 hsubpd (sse3)
126421 movddup (sse3)
+vx1615 fixed 126583 amd64->IR: 0x48 0xF 0xA4 0xC2 (shld $1,%rax,%r=
dx)
+vx1614 fixed 126668 amd64->IR: 0x1C 0xFF (sbb $0xff,%al)
+v5885 fixed 126696 support for CDROMREADRAW ioctl and CDROMREADTO=
CENTRY fix
+v5888 fixed 126722 assertion: segment_is_sane at m_aspacemgr/aspa=
cemgr.c:1624
+v5884 fixed 126938 bad checking for syscalls linkat, renameat, sy=
mlinkat
=20
- 126583 amd64->IR: 0x48 0xF 0xA4 0xC2 (shld $1,%rax,%r=
dx)
- 126668 amd64->IR: 0x1C 0xFF (sbb $0xff,%al)
-v5885 126696 support for CDROMREADRAW ioctl and CDROMREADTO=
CENTRY fix
-v5888 126722 assertion: segment_is_sane at m_aspacemgr/aspa=
cemgr.c:1624
-v5884 126938 bad checking for syscalls linkat, renameat, sy=
mlinkat
-
------- Bugs reported prior to 3.1.1 ------
=20
TRUNK 31BRANCH BUG# WHAT
|
|
From: <sv...@va...> - 2006-05-12 21:03:57
|
Author: sewardj
Date: 2006-05-12 22:03:48 +0100 (Fri, 12 May 2006)
New Revision: 1615
Log:
Enable 'SHLDv imm8,Gv,Ev'. Fixes #126583.
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-05-12 20:45:59 UTC (rev 1614)
+++ trunk/priv/guest-amd64/toIR.c 2006-05-12 21:03:48 UTC (rev 1615)
@@ -13635,15 +13635,15 @@
=20
/* =3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- SHLD/SHRD -=3D-=3D-=3D-=3D=
-=3D-=3D-=3D-=3D-=3D */
=20
-//.. case 0xA4: /* SHLDv imm8,Gv,Ev */
-//.. modrm =3D getUChar(delta);
-//.. d32 =3D delta + lengthAMode(delta);
-//.. vex_sprintf(dis_buf, "$%d", delta);
-//.. delta =3D dis_SHLRD_Gv_Ev (=20
-//.. sorb, delta, modrm, sz,=20
-//.. mkU8(getUChar(d32)), True, /* literal */
-//.. dis_buf, True );
-//.. break;
+ case 0xA4: /* SHLDv imm8,Gv,Ev */
+ modrm =3D getUChar(delta);
+ d64 =3D delta + lengthAMode(pfx, delta);
+ vex_sprintf(dis_buf, "$%d", (Int)getUChar(d64));
+ delta =3D dis_SHLRD_Gv_Ev (=20
+ pfx, delta, modrm, sz,=20
+ mkU8(getUChar(d64)), True, /* literal */
+ dis_buf, True /* left */ );
+ break;
case 0xA5: /* SHLDv %cl,Gv,Ev */
modrm =3D getUChar(delta);
delta =3D dis_SHLRD_Gv_Ev (=20
|
|
From: <sv...@va...> - 2006-05-12 20:46:04
|
Author: sewardj
Date: 2006-05-12 21:45:59 +0100 (Fri, 12 May 2006)
New Revision: 1614
Log:
Enable 'sbb $imm,%al'. Fixes #126668.
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-05-12 20:15:33 UTC (rev 1613)
+++ trunk/priv/guest-amd64/toIR.c 2006-05-12 20:45:59 UTC (rev 1614)
@@ -2779,6 +2779,10 @@
helper_ADC( size, dst1, dst0, src );
}
else
+ if (op8 =3D=3D Iop_Sub8 && carrying) {
+ helper_SBB( size, dst1, dst0, src );
+ }
+ else
vpanic("dis_op_imm_A(amd64,guest)");
=20
if (keep)
@@ -12297,10 +12301,11 @@
//.. //-- case 0x15: /* ADC Iv, eAX */
//.. //-- delta =3D dis_op_imm_A( sz, ADC, True, delta, "adc" );
//.. //-- break;
-//.. //--=20
-//.. //-- case 0x1C: /* SBB Ib, AL */
-//.. //-- delta =3D dis_op_imm_A( 1, SBB, True, delta, "sbb" );
-//.. //-- break;
+
+ case 0x1C: /* SBB Ib, AL */
+ if (haveF2orF3(pfx)) goto decode_failure;
+ delta =3D dis_op_imm_A( 1, True, Iop_Sub8, True, delta, "sbb" );
+ break;
//.. //-- case 0x1D: /* SBB Iv, eAX */
//.. //-- delta =3D dis_op_imm_A( sz, SBB, True, delta, "sbb" );
//.. //-- break;
|
|
From: <sv...@va...> - 2006-05-12 20:28:31
|
Author: sewardj
Date: 2006-05-12 21:28:26 +0100 (Fri, 12 May 2006)
New Revision: 5893
Log:
Regression test for clc/stc/cmc on amd64.
Added:
trunk/none/tests/amd64/clc.c
trunk/none/tests/amd64/clc.stderr.exp
trunk/none/tests/amd64/clc.stdout.exp
trunk/none/tests/amd64/clc.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-05-12 19:50:44 UTC (rev 5892)
+++ trunk/none/tests/amd64/Makefile.am 2006-05-12 20:28:26 UTC (rev 5893)
@@ -5,6 +5,7 @@
INSN_TESTS =3D insn_basic insn_mmx insn_sse insn_sse2 insn_fpu
=20
EXTRA_DIST =3D $(noinst_SCRIPTS) \
+ clc.vgtest clc.stdout.exp clc.stderr.exp \
faultstatus.vgtest faultstatus.stderr.exp \
fcmovnu.vgtest fcmovnu.stderr.exp fcmovnu.stdout.exp \
fxtract.vgtest fxtract.stderr.exp fxtract.stdout.exp \
@@ -18,6 +19,7 @@
=20
=20
check_PROGRAMS =3D \
+ clc \
faultstatus fcmovnu fxtract $(INSN_TESTS) looper jrcxz smc1 shrld
=20
AM_CFLAGS =3D $(WERROR) -Winline -Wall -Wshadow -g -I$(top_srcdir)/inc=
lude
Added: trunk/none/tests/amd64/clc.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/clc.c (rev 0)
+++ trunk/none/tests/amd64/clc.c 2006-05-12 20:28:26 UTC (rev 5893)
@@ -0,0 +1,61 @@
+
+#include <stdio.h>
+
+typedef unsigned long long int ULong;
+
+ULong do_clc ( void )
+{
+ ULong res;
+ __asm__ __volatile__(
+ "pushq $0x8d5\n\t" /* OSZACP */
+ "popfq\n\t"
+ "clc\n\t"
+ "pushfq\n\t"
+ "popq %0"
+ : "=3Dr"(res)
+ :
+ : "memory", "cc"
+ );
+ return res;
+}
+
+ULong do_stc ( void )
+{
+ ULong res;
+ __asm__ __volatile__(
+ "pushq $0x0\n\t"
+ "popfq\n\t"
+ "stc\n\t"
+ "pushfq\n\t"
+ "popq %0"
+ : "=3Dr"(res)
+ :
+ : "memory", "cc"
+ );
+ return res;
+}
+
+ULong do_cmc ( void )
+{
+ ULong res;
+ __asm__ __volatile__(
+ "pushq $0x0\n\t"
+ "popfq\n\t"
+ "stc\n\t"
+ "cmc\n\t"
+ "pushfq\n\t"
+ "popq %0"
+ : "=3Dr"(res)
+ :
+ : "memory", "cc"
+ );
+ return res;
+}
+
+int main ( void )
+{
+ printf("clc: 0x%016llx\n", 0x8d5 & do_clc());
+ printf("stc: 0x%016llx\n", 0x8d5 & do_stc());
+ printf("cmc: 0x%016llx\n", 0x8d5 & do_cmc());
+ return 0;
+}
Added: trunk/none/tests/amd64/clc.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/clc.stderr.exp (rev 0)
+++ trunk/none/tests/amd64/clc.stderr.exp 2006-05-12 20:28:26 UTC (rev 58=
93)
@@ -0,0 +1,2 @@
+
+
Added: trunk/none/tests/amd64/clc.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/clc.stdout.exp (rev 0)
+++ trunk/none/tests/amd64/clc.stdout.exp 2006-05-12 20:28:26 UTC (rev 58=
93)
@@ -0,0 +1,3 @@
+clc: 0x00000000000008d4
+stc: 0x0000000000000001
+cmc: 0x0000000000000000
Added: trunk/none/tests/amd64/clc.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/clc.vgtest (rev 0)
+++ trunk/none/tests/amd64/clc.vgtest 2006-05-12 20:28:26 UTC (rev 5893)
@@ -0,0 +1 @@
+prog: clc
|
|
From: <sv...@va...> - 2006-05-12 20:15:36
|
Author: sewardj
Date: 2006-05-12 21:15:33 +0100 (Fri, 12 May 2006)
New Revision: 1613
Log:
Implement CLC/STC/CMC. Fixes #125651.
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-05-12 17:47:21 UTC (rev 1612)
+++ trunk/priv/guest-amd64/toIR.c 2006-05-12 20:15:33 UTC (rev 1613)
@@ -12825,30 +12825,39 @@
DIP("std\n");
break;
=20
-//.. //-- case 0xF8: /* CLC */
-//.. //-- uInstr0(cb, CALLM_S, 0);
-//.. //-- uInstr1(cb, CALLM, 0, Lit16, VGOFF_(helper_CLC));
-//.. //-- uFlagsRWU(cb, FlagsEmpty, FlagC, FlagsOSZAP);
-//.. //-- uInstr0(cb, CALLM_E, 0);
-//.. //-- DIP("clc\n");
-//.. //-- break;
-//.. //--=20
-//.. //-- case 0xF9: /* STC */
-//.. //-- uInstr0(cb, CALLM_S, 0);
-//.. //-- uInstr1(cb, CALLM, 0, Lit16, VGOFF_(helper_STC));
-//.. //-- uFlagsRWU(cb, FlagsEmpty, FlagC, FlagsOSZAP);
-//.. //-- uInstr0(cb, CALLM_E, 0);
-//.. //-- DIP("stc\n");
-//.. //-- break;
-//.. //--=20
-//.. //-- case 0xF5: /* CMC */
-//.. //-- uInstr0(cb, CALLM_S, 0);
-//.. //-- uInstr1(cb, CALLM, 0, Lit16, VGOFF_(helper_CMC));
-//.. //-- uFlagsRWU(cb, FlagC, FlagC, FlagsOSZAP);
-//.. //-- uInstr0(cb, CALLM_E, 0);
-//.. //-- DIP("cmc\n");
-//.. //-- break;
-//..=20
+ case 0xF8: /* CLC */
+ case 0xF9: /* STC */
+ case 0xF5: /* CMC */
+ t0 =3D newTemp(Ity_I64);
+ t1 =3D newTemp(Ity_I64);
+ assign( t0, mk_amd64g_calculate_rflags_all() );
+ switch (opc) {
+ case 0xF8:=20
+ assign( t1, binop(Iop_And64, mkexpr(t0),=20
+ mkU64(~AMD64G_CC_MASK_C)));
+ DIP("clc\n");
+ break;
+ case 0xF9:=20
+ assign( t1, binop(Iop_Or64, mkexpr(t0),=20
+ mkU64(AMD64G_CC_MASK_C)));
+ DIP("stc\n");
+ break;
+ case 0xF5:=20
+ assign( t1, binop(Iop_Xor64, mkexpr(t0),=20
+ mkU64(AMD64G_CC_MASK_C)));
+ DIP("cmc\n");
+ break;
+ default:=20
+ vpanic("disInstr(x64)(clc/stc/cmc)");
+ }
+ 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(t1) ));
+ /* 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) ));
+ break;
+
//.. /* REPNE prefix insn */
//.. case 0xF2: {=20
//.. Addr32 eip_orig =3D guest_eip_bbstart + delta - 1;
|
|
From: <sv...@va...> - 2006-05-12 19:50:52
|
Author: sewardj
Date: 2006-05-12 20:50:44 +0100 (Fri, 12 May 2006)
New Revision: 5892
Log:
Comprehensive tests for bt{s,r,c,}{w,l,q} on amd64.
Added:
trunk/memcheck/tests/amd64/bt_everything.c
trunk/memcheck/tests/amd64/bt_everything.stderr.exp
trunk/memcheck/tests/amd64/bt_everything.stdout.exp
trunk/memcheck/tests/amd64/bt_everything.vgtest
Modified:
trunk/memcheck/tests/amd64/Makefile.am
Modified: trunk/memcheck/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/memcheck/tests/amd64/Makefile.am 2006-05-12 14:24:18 UTC (rev 5=
891)
+++ trunk/memcheck/tests/amd64/Makefile.am 2006-05-12 19:50:44 UTC (rev 5=
892)
@@ -8,10 +8,12 @@
$(addsuffix .stderr.exp,$(INSN_TESTS)) \
$(addsuffix .stdout.exp,$(INSN_TESTS)) \
$(addsuffix .vgtest,$(INSN_TESTS)) \
+ bt_everything.stderr.exp bt_everything.stdout.exp \
+ bt_everything.vgtest \
more_x87_fp.stderr.exp more_x87_fp.stdout.exp more_x87_fp.vgtest \
sse_memory.stderr.exp sse_memory.stdout.exp sse_memory.vgtest
=20
-check_PROGRAMS =3D more_x87_fp sse_memory
+check_PROGRAMS =3D bt_everything more_x87_fp sse_memory
=20
AM_CPPFLAGS =3D -I$(top_srcdir)/include
AM_CFLAGS =3D $(WERROR) -Winline -Wall -Wshadow -g -I$(top_srcdir)/inc=
lude
Added: trunk/memcheck/tests/amd64/bt_everything.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/memcheck/tests/amd64/bt_everything.c (r=
ev 0)
+++ trunk/memcheck/tests/amd64/bt_everything.c 2006-05-12 19:50:44 UTC (r=
ev 5892)
@@ -0,0 +1,498 @@
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+
+typedef unsigned long long int ULong;
+typedef unsigned int UInt;
+typedef unsigned short UShort;
+typedef unsigned char UChar;
+
+typedef signed int Int;
+typedef signed short Short;
+
+typedef signed long int Word;
+
+/* ------------ MEM, Q ------------ */
+
+ULong btsq_mem ( char* base, Word bitno )
+{
+ UChar res;
+ __asm__=20
+ __volatile__("btsq\t%2, %0\n\t"
+ "setc\t%1"=20
+ : "=3Dm" (*base), "=3Dq" (res)
+ : "r" (bitno));
+ /* Pretty meaningless to dereference base here, but that's what you
+ have to do to get a btsl insn which refers to memory starting at
+ base. */
+ return res;
+}
+
+ULong btrq_mem ( char* base, Word bitno )
+{
+ UChar res;
+ __asm__=20
+ __volatile__("btrq\t%2, %0\n\t"
+ "setc\t%1"=20
+ : "=3Dm" (*base), "=3Dq" (res)
+ : "r" (bitno));
+ return res;
+}
+
+ULong btcq_mem ( char* base, Word bitno )
+{
+ UChar res;
+ __asm__=20
+ __volatile__("btcq\t%2, %0\n\t"
+ "setc\t%1"=20
+ : "=3Dm" (*base), "=3Dq" (res)
+ : "r" (bitno));
+ return res;
+}
+
+ULong btq_mem ( char* base, Word bitno )
+{
+ UChar res;
+ __asm__=20
+ __volatile__("btq\t%2, %0\n\t"
+ "setc\t%1"=20
+ : "=3Dm" (*base), "=3Dq" (res)
+ : "r" (bitno)
+ : "cc", "memory");
+ return res;
+}
+
+
+/* ------------ MEM, L ------------ */
+
+ULong btsl_mem ( char* base, Word bitno )
+{
+ UChar res;
+ __asm__=20
+ __volatile__("btsl\t%2, %0\n\t"
+ "setc\t%1"=20
+ : "=3Dm" (*base), "=3Dq" (res)
+ : "r" ((Int)bitno));
+ /* Pretty meaningless to dereference base here, but that's what you
+ have to do to get a btsl insn which refers to memory starting at
+ base. */
+ return res;
+}
+
+ULong btrl_mem ( char* base, Word bitno )
+{
+ UChar res;
+ __asm__=20
+ __volatile__("btrl\t%2, %0\n\t"
+ "setc\t%1"=20
+ : "=3Dm" (*base), "=3Dq" (res)
+ : "r" ((Int)bitno));
+ return res;
+}
+
+ULong btcl_mem ( char* base, Word bitno )
+{
+ UChar res;
+ __asm__=20
+ __volatile__("btcl\t%2, %0\n\t"
+ "setc\t%1"=20
+ : "=3Dm" (*base), "=3Dq" (res)
+ : "r" ((Int)bitno));
+ return res;
+}
+
+ULong btl_mem ( char* base, Word bitno )
+{
+ UChar res;
+ __asm__=20
+ __volatile__("btl\t%2, %0\n\t"
+ "setc\t%1"=20
+ : "=3Dm" (*base), "=3Dq" (res)
+ : "r" ((Int)bitno)
+ : "cc", "memory");
+ return res;
+}
+
+
+
+/* ------------ MEM, W ------------ */
+
+ULong btsw_mem ( char* base, Word bitno )
+{
+ UChar res;
+ __asm__=20
+ __volatile__("btsw\t%2, %0\n\t"
+ "setc\t%1"=20
+ : "=3Dm" (*base), "=3Dq" (res)
+ : "r" ((Short)bitno));
+ /* Pretty meaningless to dereference base here, but that's what you
+ have to do to get a btsl insn which refers to memory starting at
+ base. */
+ return res;
+}
+
+ULong btrw_mem ( char* base, Word bitno )
+{
+ UChar res;
+ __asm__=20
+ __volatile__("btrw\t%2, %0\n\t"
+ "setc\t%1"=20
+ : "=3Dm" (*base), "=3Dq" (res)
+ : "r" ((Short)bitno));
+ return res;
+}
+
+ULong btcw_mem ( char* base, Word bitno )
+{
+ UChar res;
+ __asm__=20
+ __volatile__("btcw\t%2, %0\n\t"
+ "setc\t%1"=20
+ : "=3Dm" (*base), "=3Dq" (res)
+ : "r" ((Short)bitno));
+ return res;
+}
+
+ULong btw_mem ( char* base, Word bitno )
+{
+ UChar res;
+ __asm__=20
+ __volatile__("btw\t%2, %0\n\t"
+ "setc\t%1"=20
+ : "=3Dm" (*base), "=3Dq" (res)
+ : "r" ((Short)bitno)
+ : "cc", "memory");
+ return res;
+}
+
+
+
+/* ------------ REG, Q ------------ */
+
+ULong btsq_reg ( ULong reg_in, Word bitno,=20
+ ULong* reg_out_p )
+{
+ UChar res;
+ ULong reg_out;
+ __asm__=20
+ __volatile__("movq\t%3, %%rax\n\t"
+ "btsq\t%2, %%rax\n\t"
+ "movq\t%%rax, %1\n\t"
+ "setc\t%0"=20
+ : "=3Dq" (res), "=3Dr" (reg_out)
+ : "r" (bitno), "r" (reg_in)
+ : "cc", "eax");
+ *reg_out_p =3D reg_out;
+ return res;
+}
+
+
+ULong btrq_reg ( ULong reg_in, Word bitno,=20
+ ULong* reg_out_p )
+{
+ UChar res;
+ ULong reg_out;
+ __asm__=20
+ __volatile__("movq\t%3, %%rax\n\t"
+ "btrq\t%2, %%rax\n\t"
+ "movq\t%%rax, %1\n\t"
+ "setc\t%0"=20
+ : "=3Dq" (res), "=3Dr" (reg_out)
+ : "r" (bitno), "r" (reg_in)
+ : "cc", "eax");
+ *reg_out_p =3D reg_out;
+ return res;
+}
+
+
+ULong btcq_reg ( ULong reg_in, Word bitno,=20
+ ULong* reg_out_p )
+{
+ UChar res;
+ ULong reg_out;
+ __asm__=20
+ __volatile__("movq\t%3, %%rax\n\t"
+ "btcq\t%2, %%rax\n\t"
+ "movq\t%%rax, %1\n\t"
+ "setc\t%0"=20
+ : "=3Dq" (res), "=3Dr" (reg_out)
+ : "r" (bitno), "r" (reg_in)
+ : "cc", "eax");
+ *reg_out_p =3D reg_out;
+ return res;
+}
+
+
+ULong btq_reg ( ULong reg_in, Word bitno,=20
+ ULong* reg_out_p )
+{
+ UChar res;
+ ULong reg_out;
+ __asm__=20
+ __volatile__("movq\t%3, %%rax\n\t"
+ "btq\t%2, %%rax\n\t"
+ "movq\t%%rax, %1\n\t"
+ "setc\t%0"=20
+ : "=3Dq" (res), "=3Dr" (reg_out)
+ : "r" (bitno), "r" (reg_in)
+ : "cc", "eax");
+ *reg_out_p =3D reg_out;
+ return res;
+}
+
+
+
+/* ------------ REG, L ------------ */
+
+ULong btsl_reg ( ULong reg_in, Word bitno,=20
+ ULong* reg_out_p )
+{
+ UChar res;
+ ULong reg_out;
+ __asm__=20
+ __volatile__("movq\t%3, %%rax\n\t"
+ "btsl\t%2, %%eax\n\t"
+ "movq\t%%rax, %1\n\t"
+ "setc\t%0"=20
+ : "=3Dq" (res), "=3Dr" (reg_out)
+ : "r" ((Int)bitno), "r" (reg_in)
+ : "cc", "eax");
+ *reg_out_p =3D reg_out;
+ return res;
+}
+
+
+ULong btrl_reg ( ULong reg_in, Word bitno,=20
+ ULong* reg_out_p )
+{
+ UChar res;
+ ULong reg_out;
+ __asm__=20
+ __volatile__("movq\t%3, %%rax\n\t"
+ "btrl\t%2, %%eax\n\t"
+ "movq\t%%rax, %1\n\t"
+ "setc\t%0"=20
+ : "=3Dq" (res), "=3Dr" (reg_out)
+ : "r" ((Int)bitno), "r" (reg_in)
+ : "cc", "eax");
+ *reg_out_p =3D reg_out;
+ return res;
+}
+
+
+ULong btcl_reg ( ULong reg_in, Word bitno,=20
+ ULong* reg_out_p )
+{
+ UChar res;
+ ULong reg_out;
+ __asm__=20
+ __volatile__("movq\t%3, %%rax\n\t"
+ "btcl\t%2, %%eax\n\t"
+ "movq\t%%rax, %1\n\t"
+ "setc\t%0"=20
+ : "=3Dq" (res), "=3Dr" (reg_out)
+ : "r" ((Int)bitno), "r" (reg_in)
+ : "cc", "eax");
+ *reg_out_p =3D reg_out;
+ return res;
+}
+
+
+ULong btl_reg ( ULong reg_in, Word bitno,=20
+ ULong* reg_out_p )
+{
+ UChar res;
+ ULong reg_out;
+ __asm__=20
+ __volatile__("movq\t%3, %%rax\n\t"
+ "btl\t%2, %%eax\n\t"
+ "movq\t%%rax, %1\n\t"
+ "setc\t%0"=20
+ : "=3Dq" (res), "=3Dr" (reg_out)
+ : "r" ((Int)bitno), "r" (reg_in)
+ : "cc", "eax");
+ *reg_out_p =3D reg_out;
+ return res;
+}
+
+
+
+/* ------------ REG, W ------------ */
+
+ULong btsw_reg ( ULong reg_in, Word bitno,=20
+ ULong* reg_out_p )
+{
+ UChar res;
+ ULong reg_out;
+ __asm__=20
+ __volatile__("movq\t%3, %%rax\n\t"
+ "btsw\t%2, %%ax\n\t"
+ "movq\t%%rax, %1\n\t"
+ "setc\t%0"=20
+ : "=3Dq" (res), "=3Dr" (reg_out)
+ : "r" ((Short)bitno), "r" (reg_in)
+ : "cc", "eax");
+ *reg_out_p =3D reg_out;
+ return res;
+}
+
+
+ULong btrw_reg ( ULong reg_in, Word bitno,=20
+ ULong* reg_out_p )
+{
+ UChar res;
+ ULong reg_out;
+ __asm__=20
+ __volatile__("movq\t%3, %%rax\n\t"
+ "btrw\t%2, %%ax\n\t"
+ "movq\t%%rax, %1\n\t"
+ "setc\t%0"=20
+ : "=3Dq" (res), "=3Dr" (reg_out)
+ : "r" ((Short)bitno), "r" (reg_in)
+ : "cc", "eax");
+ *reg_out_p =3D reg_out;
+ return res;
+}
+
+
+ULong btcw_reg ( ULong reg_in, Word bitno,=20
+ ULong* reg_out_p )
+{
+ UChar res;
+ ULong reg_out;
+ __asm__=20
+ __volatile__("movq\t%3, %%rax\n\t"
+ "btcw\t%2, %%ax\n\t"
+ "movq\t%%rax, %1\n\t"
+ "setc\t%0"=20
+ : "=3Dq" (res), "=3Dr" (reg_out)
+ : "r" ((Short)bitno), "r" (reg_in)
+ : "cc", "eax");
+ *reg_out_p =3D reg_out;
+ return res;
+}
+
+
+ULong btw_reg ( ULong reg_in, Word bitno,=20
+ ULong* reg_out_p )
+{
+ UChar res;
+ ULong reg_out;
+ __asm__=20
+ __volatile__("movq\t%3, %%rax\n\t"
+ "btw\t%2, %%ax\n\t"
+ "movq\t%%rax, %1\n\t"
+ "setc\t%0"=20
+ : "=3Dq" (res), "=3Dr" (reg_out)
+ : "r" ((Short)bitno), "r" (reg_in)
+ : "cc", "eax");
+ *reg_out_p =3D reg_out;
+ return res;
+}
+
+
+
+
+
+
+
+ULong rol1 ( ULong x )
+{
+ return (x << 1) | (x >> 63);
+}
+
+int main ( void )
+{
+ UInt n, op;
+ ULong carrydep, c, res;
+ UChar* block;
+ ULong reg;
+ Word bitoff;
+
+ /*------------------------ MEM-L -----------------------*/
+
+ carrydep =3D 0;
+ block =3D calloc(200,1);
+ block +=3D 100;
+ /* Valid bit offsets are -800 .. 799 inclusive. */
+
+ for (n =3D 0; n < 10000; n++) {
+ bitoff =3D (random() % 1600) - 800;
+ op =3D random() % 12;
+ c =3D 2;
+ switch (op) {
+ case 0: c =3D btsl_mem(block, bitoff); break;
+ case 1: c =3D btrl_mem(block, bitoff); break;
+ case 2: c =3D btcl_mem(block, bitoff); break;
+ case 3: c =3D btl_mem(block, bitoff); break;
+ case 4: c =3D btsq_mem(block, bitoff); break;
+ case 5: c =3D btrq_mem(block, bitoff); break;
+ case 6: c =3D btcq_mem(block, bitoff); break;
+ case 7: c =3D btq_mem(block, bitoff); break;
+ case 8: c =3D btsw_mem(block, bitoff); break;
+ case 9: c =3D btrw_mem(block, bitoff); break;
+ case 10: c =3D btcw_mem(block, bitoff); break;
+ case 11: c =3D btw_mem(block, bitoff); break;
+ default: assert(0);
+ }
+ assert(c =3D=3D 0 || c =3D=3D 1);
+ carrydep =3D c ? (rol1(carrydep) ^ bitoff) : carrydep;
+ }
+
+ /* Compute final result */
+ block -=3D 100; =20
+ res =3D 0;
+ for (n =3D 0; n < 200; n++) {
+ UChar ch =3D block[n];
+ /* printf("%d ", (int)block[n]); */
+ res =3D rol1(res) ^ (UInt)ch;
+ }
+
+ printf("MEM-L: final res 0x%llx, carrydep 0x%llx\n", res, carrydep);
+
+ /*------------------------ REG-L -----------------------*/
+
+ carrydep =3D 0;
+ reg =3D 0;
+
+ for (n =3D 0; n < 1000; n++) {
+ bitoff =3D (random() % 100) - 50;
+ op =3D random() % 12;
+ c =3D 2;
+ switch (op) {
+ case 0: c =3D btsl_reg(reg, bitoff, ®); break;
+ case 1: c =3D btrl_reg(reg, bitoff, ®); break;
+ case 2: c =3D btcl_reg(reg, bitoff, ®); break;
+ case 3: c =3D btl_reg(reg, bitoff, ®); break;
+ case 4: c =3D btsq_reg(reg, bitoff, ®); break;
+ case 5: c =3D btrq_reg(reg, bitoff, ®); break;
+ case 6: c =3D btcq_reg(reg, bitoff, ®); break;
+ case 7: c =3D btq_reg(reg, bitoff, ®); break;
+ case 8: c =3D btsw_reg(reg, bitoff, ®); break;
+ case 9: c =3D btrw_reg(reg, bitoff, ®); break;
+ case 10: c =3D btcw_reg(reg, bitoff, ®); break;
+ case 11: c =3D btw_reg(reg, bitoff, ®); break;
+ default: assert(0);
+ }
+ assert(c =3D=3D 0 || c =3D=3D 1);
+ carrydep =3D c ? (rol1(carrydep) ^ bitoff) : carrydep;
+ }
+
+ printf("REG-L: final res 0x%llx, carrydep 0x%llx\n", reg, carrydep);
+
+ block +=3D 100;
+
+ /* Just try one of these at once; more than one can cause a
+ confusing merging of error messages. */
+ //btsl_mem(block, -800); /* should not complain */
+ //btsl_mem(block, -801); /* should complain */
+ //btsl_mem(block, 799); /* should not complain */
+ //btsl_mem(block, 800); /* should complain */
+
+ block -=3D 100;
+ free(block);
+
+ return 0;
+}
+
Added: trunk/memcheck/tests/amd64/bt_everything.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
Added: trunk/memcheck/tests/amd64/bt_everything.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/memcheck/tests/amd64/bt_everything.stdout.exp =
(rev 0)
+++ trunk/memcheck/tests/amd64/bt_everything.stdout.exp 2006-05-12 19:50:=
44 UTC (rev 5892)
@@ -0,0 +1,2 @@
+MEM-L: final res 0xbb05dc8f69ba36dc, carrydep 0x818f336625f01277
+REG-L: final res 0xa15f293e, carrydep 0x6082b5e5befc6a40
Added: trunk/memcheck/tests/amd64/bt_everything.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/memcheck/tests/amd64/bt_everything.vgtest =
(rev 0)
+++ trunk/memcheck/tests/amd64/bt_everything.vgtest 2006-05-12 19:50:44 U=
TC (rev 5892)
@@ -0,0 +1,2 @@
+prog: bt_everything
+vgopts: -q
|
|
From: <sv...@va...> - 2006-05-12 17:47:26
|
Author: sewardj
Date: 2006-05-12 18:47:21 +0100 (Fri, 12 May 2006)
New Revision: 1612
Log:
(1) Fix longstanding bug causing erroneous register zeroing for 'btl'.
(2) Implement 16-bit versions of bt/bts/btr/btc. (Fixes #125607)
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-05-12 14:04:48 UTC (rev 1611)
+++ trunk/priv/guest-amd64/toIR.c 2006-05-12 17:47:21 UTC (rev 1612)
@@ -6905,7 +6905,11 @@
/* Move reg operand from stack back to reg */
if (epartIsReg(modrm)) {
/* t_esp still points at it. */
- putIRegE(sz, pfx, modrm, loadLE(szToITy(sz), mkexpr(t_rsp)) );
+ /* only write the reg if actually modifying it; doing otherwise
+ zeroes the top half erroneously when doing btl due to
+ standard zero-extend rule */
+ if (op !=3D BtOpNone)
+ putIRegE(sz, pfx, modrm, loadLE(szToITy(sz), mkexpr(t_rsp)) );
putIReg64(R_RSP, binop(Iop_Add64, mkexpr(t_rsp), mkU64(sz)) );
}
=20
@@ -13354,22 +13358,22 @@
=20
case 0xA3: /* BT Gv,Ev */
if (haveF2orF3(pfx)) goto decode_failure;
- if (sz !=3D 8 && sz !=3D 4) goto decode_failure;
+ if (sz !=3D 8 && sz !=3D 4 && sz !=3D 2) goto decode_failure;
delta =3D dis_bt_G_E ( pfx, sz, delta, BtOpNone );
break;
case 0xB3: /* BTR Gv,Ev */
if (haveF2orF3(pfx)) goto decode_failure;
- if (sz !=3D 8 && sz !=3D 4) goto decode_failure;
+ if (sz !=3D 8 && sz !=3D 4 && sz !=3D 2) goto decode_failure;
delta =3D dis_bt_G_E ( pfx, sz, delta, BtOpReset );
break;
case 0xAB: /* BTS Gv,Ev */
if (haveF2orF3(pfx)) goto decode_failure;
- if (sz !=3D 8 && sz !=3D 4) goto decode_failure;
+ if (sz !=3D 8 && sz !=3D 4 && sz !=3D 2) goto decode_failure;
delta =3D dis_bt_G_E ( pfx, sz, delta, BtOpSet );
break;
case 0xBB: /* BTC Gv,Ev */
if (haveF2orF3(pfx)) goto decode_failure;
- if (sz !=3D 8 && sz !=3D 4) goto decode_failure;
+ if (sz !=3D 8 && sz !=3D 4 && sz !=3D 2) goto decode_failure;
delta =3D dis_bt_G_E ( pfx, sz, delta, BtOpComp );
break;
=20
|
|
From: <js...@ac...> - 2006-05-12 15:16:23
|
Nightly build on minnie ( SuSE 10.0, ppc32 ) started at 2006-05-12 02: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 == 206 tests, 12 stderr failures, 6 stdout failures, 0 posttest failures == memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/leakotron (stdout) memcheck/tests/mempool (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigaltstack (stderr) memcheck/tests/stack_changes (stdout) memcheck/tests/stack_changes (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) |
|
From: <sv...@va...> - 2006-05-12 14:24:23
|
Author: sewardj
Date: 2006-05-12 15:24:18 +0100 (Fri, 12 May 2006)
New Revision: 5891
Log:
Test x86 {push,pop}{w,l}.
Added:
trunk/memcheck/tests/x86/pushpopmem.c
trunk/memcheck/tests/x86/pushpopmem.stderr.exp
trunk/memcheck/tests/x86/pushpopmem.stdout.exp
trunk/memcheck/tests/x86/pushpopmem.vgtest
Modified:
trunk/memcheck/tests/x86/Makefile.am
Modified: trunk/memcheck/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/memcheck/tests/x86/Makefile.am 2006-05-09 18:46:01 UTC (rev 589=
0)
+++ trunk/memcheck/tests/x86/Makefile.am 2006-05-12 14:24:18 UTC (rev 589=
1)
@@ -10,6 +10,7 @@
$(addsuffix .stdout.exp,$(INSN_TESTS)) \
$(addsuffix .vgtest,$(INSN_TESTS)) \
pushfpopf.stderr.exp pushfpopf.stdout.exp pushfpopf.vgtest \
+ pushpopmem.stderr.exp pushpopmem.stdout.exp pushpopmem.vgtest \
scalar.stderr.exp scalar.stderr.exp2 scalar.vgtest \
scalar_fork.stderr.exp scalar_fork.vgtest \
scalar_exit_group.stderr.exp scalar_exit_group.stderr.exp2 \
@@ -25,7 +26,7 @@
=20
check_PROGRAMS =3D \
scalar_exit_group scalar_fork scalar_supp scalar_vfork \
- fpeflags pushfpopf scalar sse_memory tronical \
+ fpeflags pushfpopf pushpopmem scalar sse_memory tronical \
more_x86_fp fprem
=20
AM_CPPFLAGS =3D -I$(top_srcdir)/include
Added: trunk/memcheck/tests/x86/pushpopmem.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/memcheck/tests/x86/pushpopmem.c (rev 0)
+++ trunk/memcheck/tests/x86/pushpopmem.c 2006-05-12 14:24:18 UTC (rev 58=
91)
@@ -0,0 +1,62 @@
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+unsigned int do32 ( unsigned int x )
+{
+ unsigned int* y =3D malloc(sizeof(unsigned int));
+ unsigned int* z =3D malloc(sizeof(unsigned int));
+ unsigned int t;
+ assert(y);
+ assert(z);
+ y[0] =3D x;
+ __asm__ __volatile__(
+ "pushl %0\n\t"
+ "pushl %1\n\t"
+ "popl %%ebx\n\t"
+ "popl %%eax\n\t"
+ "pushl 0(%%eax)\n\t"
+ "popl 0(%%ebx)"
+ : /*OUT*/
+ : /*IN*/ "r"(y), "r"(z)
+ : /*TRASH*/ "memory", "eax", "ebx"
+ );
+ t =3D z[0];
+ free(y);
+ free(z);
+ return t;
+}
+
+unsigned short do16 ( unsigned short x )
+{
+ unsigned short* y =3D malloc(sizeof(unsigned short));
+ unsigned short* z =3D malloc(sizeof(unsigned short));
+ unsigned short t;
+ assert(y);
+ assert(z);
+ y[0] =3D x;
+ __asm__ __volatile__(
+ "pushl %0\n\t"
+ "pushl %1\n\t"
+ "popl %%ebx\n\t"
+ "popl %%eax\n\t"
+ "pushw 0(%%eax)\n\t"
+ "popw 0(%%ebx)"
+ : /*OUT*/
+ : /*IN*/ "r"(y), "r"(z)
+ : /*TRASH*/ "memory", "eax", "ebx"
+ );
+ t =3D z[0];
+ free(y);
+ free(z);
+ return t;
+}
+
+
+int main ( void )
+{
+ printf("do32: 0x%08X\n", do32(0xCafeBabe) );
+ printf("do16: 0x%08X\n", (unsigned int)do16(0xfeBa) );
+ return 0;
+}
Added: trunk/memcheck/tests/x86/pushpopmem.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
Added: trunk/memcheck/tests/x86/pushpopmem.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/memcheck/tests/x86/pushpopmem.stdout.exp =
(rev 0)
+++ trunk/memcheck/tests/x86/pushpopmem.stdout.exp 2006-05-12 14:24:18 UT=
C (rev 5891)
@@ -0,0 +1,2 @@
+do32: 0xCAFEBABE
+do16: 0x0000FEBA
Added: trunk/memcheck/tests/x86/pushpopmem.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/memcheck/tests/x86/pushpopmem.vgtest (r=
ev 0)
+++ trunk/memcheck/tests/x86/pushpopmem.vgtest 2006-05-12 14:24:18 UTC (r=
ev 5891)
@@ -0,0 +1,2 @@
+prog: pushpopmem
+vgopts: -q
|
|
From: <sv...@va...> - 2006-05-12 14:04:55
|
Author: sewardj
Date: 2006-05-12 15:04:48 +0100 (Fri, 12 May 2006)
New Revision: 1611
Log:
Support 'popw m16'. Fixes #126243.
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-05-06 14:40:40 UTC (rev 1610)
+++ trunk/priv/guest-x86/toIR.c 2006-05-12 14:04:48 UTC (rev 1611)
@@ -11467,19 +11467,23 @@
break;
=20
case 0x8F: /* POPL/POPW m32 */
- { Int len;
- UChar rm =3D getIByte(delta);
+ { Int len;
+ UChar rm =3D getIByte(delta);
=20
/* make sure this instruction is correct POP */
- vassert(!epartIsReg(rm) && (gregOfRM(rm) =3D=3D 0));
+ if (epartIsReg(rm) || gregOfRM(rm) !=3D 0)
+ goto decode_failure;
/* and has correct size */
- vassert(sz =3D=3D 4); =20
- =20
- t1 =3D newTemp(Ity_I32); t3 =3D newTemp(Ity_I32);
+ if (sz !=3D 4 && sz !=3D 2)
+ goto decode_failure;
+ ty =3D szToITy(sz);
+
+ t1 =3D newTemp(Ity_I32); /* stack address */
+ t3 =3D newTemp(ty); /* data */
/* set t1 to ESP: t1 =3D ESP */
assign( t1, getIReg(4, R_ESP) );
/* load M[ESP] to virtual register t3: t3 =3D M[t1] */
- assign( t3, loadLE(Ity_I32, mkexpr(t1)) );
+ assign( t3, loadLE(ty, mkexpr(t1)) );
=20
/* increase ESP; must be done before the STORE. Intel manual say=
s:
If the ESP register is used as a base register for addressin=
g
@@ -11493,7 +11497,7 @@
addr =3D disAMode ( &len, sorb, delta, dis_buf);
storeLE( mkexpr(addr), mkexpr(t3) );
=20
- DIP("popl %s\n", dis_buf);
+ DIP("pop%c %s\n", sz=3D=3D2 ? 'w' : 'l', dis_buf);
=20
delta +=3D len;
break;
|
|
From: Tom H. <th...@cy...> - 2006-05-12 02:57:05
|
Nightly build on ford ( i686, Fedora Core 4 ) started at 2006-05-12 03:25:09 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 == 236 tests, 7 stderr failures, 0 stdout failures, 0 posttest failures == memcheck/tests/leak-tree (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: <js...@ac...> - 2006-05-12 02:56:30
|
Nightly build on g5 ( YDL 4.0, ppc970 ) started at 2006-05-12 04:40:00 CEST 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 == 212 tests, 6 stderr failures, 3 stdout failures, 0 posttest failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/leakotron (stdout) memcheck/tests/pointer-trace (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) none/tests/ppc32/mftocrf (stdout) |
|
From: Tom H. <to...@co...> - 2006-05-12 02:47:48
|
Nightly build on dunsmere ( athlon, Fedora Core 5 ) started at 2006-05-12 03:30:08 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 == 238 tests, 7 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/mempool (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/sse1_memory (stdout) memcheck/tests/xml1 (stderr) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2006-05-12 02:33:50
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2006-05-12 03:15: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 == 237 tests, 21 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/mempool (stderr) memcheck/tests/partial_load_dflt (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/sse1_memory (stdout) memcheck/tests/xml1 (stderr) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2006-05-12 02:27:07
|
Nightly build on dellow ( x86_64, Fedora Core 5 ) started at 2006-05-12 03:10:09 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 == 260 tests, 5 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/sse1_memory (stdout) memcheck/tests/xml1 (stderr) none/tests/amd64/faultstatus (stderr) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2006-05-12 02:18:41
|
Nightly build on aston ( x86_64, Fedora Core 3 ) started at 2006-05-12 03:05:03 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 == 260 tests, 7 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/sse1_memory (stdout) memcheck/tests/xml1 (stderr) none/tests/amd64/faultstatus (stderr) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2006-05-12 02:15:22
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2006-05-12 03: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 == 260 tests, 7 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/sse1_memory (stdout) none/tests/amd64/faultstatus (stderr) none/tests/fdleak_fcntl (stderr) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: <js...@ac...> - 2006-05-12 01:31:45
|
Nightly build on phoenix ( SuSE 10.0 ) started at 2006-05-12 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, 6 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) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |