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
(32) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
1
(29) |
2
(23) |
3
(17) |
|
4
(19) |
5
(7) |
6
(11) |
7
(8) |
8
(6) |
9
(12) |
10
(23) |
|
11
(16) |
12
(21) |
13
(27) |
14
(35) |
15
(17) |
16
(6) |
17
(11) |
|
18
(13) |
19
(7) |
20
(12) |
21
(11) |
22
(9) |
23
|
24
(8) |
|
25
(15) |
26
(9) |
27
(14) |
28
(17) |
29
(41) |
30
(17) |
31
(15) |
|
From: Bart V. A. <bar...@gm...> - 2008-05-04 07:14:54
|
On Sun, May 4, 2008 at 12:08 AM, Nuno Lopes <nun...@sa...> wrote: >> Posting the output of the following command on powerpc64 will >> definitely help, since it shows the thread ID's Valgrind assigns to >> threads: >> >> ./vg-in-place --tool=exp-drd -d exp-drd/tests/fp_race 2>&1 | tail -n 30 > > Ok, so please find the dump of that command in attach. Thanks. I see a mysterious line in the ppc64 output, that does not appear in the amd64 output: --22020:1:signals extending a stack base 0x7fefff000 down by 4096 The address 0x7fefff000 looks to me like an address on Valgrind's stack. Is it normal that VG_(extend_stack)() gets called when Valgrind's stack is extended ? Shouldn't this function be called only for client stacks ? Bart. |
|
From: Tom H. <th...@cy...> - 2008-05-04 02:56:13
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-05-04 03:20:07 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 == 429 tests, 7 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-05-04 02:53:45
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-05-04 03:05:05 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 == 423 tests, 4 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-05-04 02:41:39
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-05-04 03:25:04 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 == 427 tests, 6 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == 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 == 427 tests, 7 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap2 (stdout) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sun May 4 03:33:18 2008 --- new.short Sun May 4 03:41:28 2008 *************** *** 8,10 **** ! == 427 tests, 7 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 427 tests, 6 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) *************** *** 17,19 **** none/tests/mremap2 (stdout) - helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) --- 17,18 ---- |
|
From: Tom H. <th...@cy...> - 2008-05-04 02:37:21
|
Nightly build on dellow ( x86_64, Fedora 8 ) started at 2008-05-04 03:10:04 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 == 423 tests, 7 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) none/tests/pth_cvsimple (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == 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 == 423 tests, 6 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sun May 4 03:23:49 2008 --- new.short Sun May 4 03:37:25 2008 *************** *** 8,10 **** ! == 423 tests, 6 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 423 tests, 7 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) *************** *** 14,17 **** --- 14,19 ---- none/tests/mremap2 (stdout) + none/tests/pth_cvsimple (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) + helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-05-04 02:23:41
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-05-04 03:00:05 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 == 429 tests, 30 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/amd64/insn_ssse3 (stdout) none/tests/amd64/insn_ssse3 (stderr) none/tests/amd64/ssse3_misaligned (stderr) none/tests/blockfault (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap2 (stdout) none/tests/x86/insn_ssse3 (stdout) none/tests/x86/insn_ssse3 (stderr) none/tests/x86/ssse3_misaligned (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) |
|
From: Nuno L. <nun...@sa...> - 2008-05-03 22:08:33
|
> Posting the output of the following command on powerpc64 will > definitely help, since it shows the thread ID's Valgrind assigns to > threads: > > ./vg-in-place --tool=exp-drd -d exp-drd/tests/fp_race 2>&1 | tail -n 30 Ok, so please find the dump of that command in attach. Regards, Nuno |
|
From: Bart V. A. <bar...@gm...> - 2008-05-03 19:00:33
|
On Sat, May 3, 2008 at 7:59 PM, Julian Seward <js...@ac...> wrote: > >> Thanks, this gives some extra information: stack walking by >> VG_(get_StackTrace)() in the main thread works as expected, but the >> stack pointers returned by VG_(get_StackTrace)() for threads created >> by pthread_create() can be out of range. Julian, is it normal that >> running_tid == 1 for a created thread ? > > Er, I'm afraid I don't really understand the question. "Is > running_tid == 1 for a created thread" at exactly where in the > source code? I was referring to the last output posted by Nuno. This output shows an assertion failure. The first stack frame shown is run_a_thread_NORETURN(). So this must be a call stack of a thread created via pthread_create(). Such threads have a thread ID that is equal to or higher than 2. Yet in the same output there is a message "sched status: running_tid=1", which means that at the time of the assertion failure VG_(running_tid) == 1. This is a contradiction -- it looks like there is something wrong with the thread ID handling. Posting the output of the following command on powerpc64 will definitely help, since it shows the thread ID's Valgrind assigns to threads: ./vg-in-place --tool=exp-drd -d exp-drd/tests/fp_race 2>&1 | tail -n 30 Bart. |
|
From: Julian S. <js...@ac...> - 2008-05-03 18:04:38
|
> Thanks, this gives some extra information: stack walking by > VG_(get_StackTrace)() in the main thread works as expected, but the > stack pointers returned by VG_(get_StackTrace)() for threads created > by pthread_create() can be out of range. Julian, is it normal that > running_tid == 1 for a created thread ? Er, I'm afraid I don't really understand the question. "Is running_tid == 1 for a created thread" at exactly where in the source code? J |
|
From: Bart V. A. <bar...@gm...> - 2008-05-03 10:55:40
|
On Fri, May 2, 2008 at 10:59 PM, Nuno Lopes <nun...@sa...> wrote: > Sure! I'm still able to trigger the assertion with threaded tests, although > simple non-threaded programs seem to run fine. > Most (if not all) regtests fail. e.g.: > > exp-drd: drd_clientreq.c:107 (highest_used_stack_address): Assertion > 'VG_(thread_get_stack_max)(vg_tid) - VG_(thread_get_stack_size)(vg_tid) <= > husa && husa < VG_(thread_get_stack_max)(vg_tid)' failed. > at 0x........: report_and_quit (m_libcassert.c:?) > by 0x........: vgPlain_assert_fail (m_libcassert.c:?) > by 0x........: highest_used_stack_address (drd_clientreq.c:?) > by 0x........: drd_handle_client_request (drd_clientreq.c:?) > by 0x........: do_client_request (scheduler.c:?) > by 0x........: vgPlain_scheduler (scheduler.c:?) > by 0x........: run_a_thread_NORETURN (syswrap-linux.c:89) > > sched status: > running_tid=1 > > Thread 1: status = VgTs_Runnable > at 0x........: main (drd_pthread_intercepts.c:?) > by 0x........: (below main) (in /...libc...) Thanks, this gives some extra information: stack walking by VG_(get_StackTrace)() in the main thread works as expected, but the stack pointers returned by VG_(get_StackTrace)() for threads created by pthread_create() can be out of range. Julian, is it normal that running_tid == 1 for a created thread ? Bart. |
|
From: <sv...@va...> - 2008-05-03 09:34:56
|
Author: bart
Date: 2008-05-03 10:35:01 +0100 (Sat, 03 May 2008)
New Revision: 8000
Log:
Print name of Fedora package that contains /usr/bin/getconf in case /usr/bin/getconf is not found.
Modified:
trunk/exp-drd/tests/supported_libpthread
Modified: trunk/exp-drd/tests/supported_libpthread
===================================================================
--- trunk/exp-drd/tests/supported_libpthread 2008-05-03 09:15:25 UTC (rev 7999)
+++ trunk/exp-drd/tests/supported_libpthread 2008-05-03 09:35:01 UTC (rev 8000)
@@ -7,6 +7,7 @@
if [ "$(uname)" = "Linux" ]; then
if [ ! -x /usr/bin/getconf ]; then
echo "Error: could not find the program /usr/bin/getconf."
+ echo "Please install the glibc-common package."
# Assume NPTL.
exit 0
fi
|
|
From: <sv...@va...> - 2008-05-03 09:15:20
|
Author: bart
Date: 2008-05-03 10:15:25 +0100 (Sat, 03 May 2008)
New Revision: 7999
Log:
Changed #if defined(platform) tests into #if defined(HAVE_...) tests.
Modified:
trunk/exp-drd/drd_pthread_intercepts.c
trunk/exp-drd/tests/recursive_mutex.c
Modified: trunk/exp-drd/drd_pthread_intercepts.c
===================================================================
--- trunk/exp-drd/drd_pthread_intercepts.c 2008-05-03 09:12:15 UTC (rev 7998)
+++ trunk/exp-drd/drd_pthread_intercepts.c 2008-05-03 09:15:25 UTC (rev 7999)
@@ -118,9 +118,9 @@
/* PTHREAD_MUTEX_TIMED_NP */
/* PTHREAD_MUTEX_NORMAL */
case PTHREAD_MUTEX_DEFAULT:
-# if !defined(VGP_ppc32_aix5) && !defined(VGP_ppc64_aix5)
+#if defined(HAVE_PTHREAD_MUTEX_ADAPTIVE_NP)
case PTHREAD_MUTEX_ADAPTIVE_NP:
-# endif
+#endif
return mutex_type_default_mutex;
}
return mutex_type_invalid_mutex;
Modified: trunk/exp-drd/tests/recursive_mutex.c
===================================================================
--- trunk/exp-drd/tests/recursive_mutex.c 2008-05-03 09:12:15 UTC (rev 7998)
+++ trunk/exp-drd/tests/recursive_mutex.c 2008-05-03 09:15:25 UTC (rev 7999)
@@ -7,6 +7,7 @@
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
+#include "../../config.h"
static void lock_twice(pthread_mutex_t* const p)
@@ -21,14 +22,17 @@
{
/* Let the program abort after 3 seconds instead of leaving it deadlocked. */
alarm(3);
-#if !defined(_AIX)
+
+#if defined(HAVE_PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP)
{
pthread_mutex_t m = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
printf("Recursive mutex (statically initialized).\n");
lock_twice(&m);
pthread_mutex_destroy(&m);
- }
+ }
+#endif
+#if defined(HAVE_PTHREAD_MUTEX_RECURSIVE_NP)
{
pthread_mutex_t m;
pthread_mutexattr_t attr;
@@ -40,7 +44,9 @@
pthread_mutexattr_destroy(&attr);
lock_twice(&m);
pthread_mutex_destroy(&m);
- }
+ }
+#endif
+#if defined(HAVE_PTHREAD_MUTEX_ERRORCHECK_NP)
{
pthread_mutex_t m;
pthread_mutexattr_t attr;
@@ -51,15 +57,16 @@
pthread_mutex_init(&m, &attr);
pthread_mutexattr_destroy(&attr);
lock_twice(&m);
- pthread_mutex_destroy(&m); }
-#endif /* !defined(_AIX) */
+ pthread_mutex_destroy(&m);
+ }
+#endif
{
pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;
printf("Non-recursive mutex.\n");
fflush(stdout);
lock_twice(&m);
- }
+ }
printf("Done.\n");
return 0;
}
|
|
From: <sv...@va...> - 2008-05-03 09:12:10
|
Author: bart Date: 2008-05-03 10:12:15 +0100 (Sat, 03 May 2008) New Revision: 7998 Log: Added configure tests for PTHREAD_MUTEX_ADAPTIVE_NP, PTHREAD_MUTEX_ERRORCHECK_NP, PTHREAD_MUTEX_RECURSIVE_NP and PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP. Modified: trunk/configure.in Modified: trunk/configure.in =================================================================== --- trunk/configure.in 2008-05-03 09:00:40 UTC (rev 7997) +++ trunk/configure.in 2008-05-03 09:12:15 UTC (rev 7998) @@ -580,6 +580,88 @@ AC_MSG_RESULT([no]) ]) + +# Check for PTHREAD_MUTEX_ADAPTIVE_NP + +AC_MSG_CHECKING([for PTHREAD_MUTEX_ADAPTIVE_NP]) + +AC_TRY_COMPILE( +[ +#define _GNU_SOURCE +#include <pthread.h> +], [ + return (PTHREAD_MUTEX_ADAPTIVE_NP); +], +[ +AC_MSG_RESULT([yes]) +AC_DEFINE([HAVE_PTHREAD_MUTEX_ADAPTIVE_NP], 1, + [Define to 1 if you have the `PTHREAD_MUTEX_ADAPTIVE_NP' constant.]) +], [ +AC_MSG_RESULT([no]) +]) + + +# Check for PTHREAD_MUTEX_ERRORCHECK_NP + +AC_MSG_CHECKING([for PTHREAD_MUTEX_ERRORCHECK_NP]) + +AC_TRY_COMPILE( +[ +#define _GNU_SOURCE +#include <pthread.h> +], [ + return (PTHREAD_MUTEX_ERRORCHECK_NP); +], +[ +AC_MSG_RESULT([yes]) +AC_DEFINE([HAVE_PTHREAD_MUTEX_ERRORCHECK_NP], 1, + [Define to 1 if you have the `PTHREAD_MUTEX_ERRORCHECK_NP' constant.]) +], [ +AC_MSG_RESULT([no]) +]) + + +# Check for PTHREAD_MUTEX_RECURSIVE_NP + +AC_MSG_CHECKING([for PTHREAD_MUTEX_RECURSIVE_NP]) + +AC_TRY_COMPILE( +[ +#define _GNU_SOURCE +#include <pthread.h> +], [ + return (PTHREAD_MUTEX_RECURSIVE_NP); +], +[ +AC_MSG_RESULT([yes]) +AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE_NP], 1, + [Define to 1 if you have the `PTHREAD_MUTEX_RECURSIVE_NP' constant.]) +], [ +AC_MSG_RESULT([no]) +]) + + +# Check for PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP + +AC_MSG_CHECKING([for PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP]) + +AC_TRY_COMPILE( +[ +#define _GNU_SOURCE +#include <pthread.h> +], [ + pthread_mutex_t m = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; + return 0; +], +[ +AC_MSG_RESULT([yes]) +AC_DEFINE([HAVE_PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP], 1, + [Define to 1 if you have the `PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP' constant.]) +], [ +AC_MSG_RESULT([no]) +]) + + # Check whether pthread_mutex_t has a member called __m_kind. AC_MSG_CHECKING([for pthread_mutex_t::__m_kind]) |
|
From: <sv...@va...> - 2008-05-03 09:00:36
|
Author: bart
Date: 2008-05-03 10:00:40 +0100 (Sat, 03 May 2008)
New Revision: 7997
Log:
Reverted last commit since it does not fix anything (unfortunately).
Modified:
trunk/exp-drd/drd_pthread_intercepts.c
Modified: trunk/exp-drd/drd_pthread_intercepts.c
===================================================================
--- trunk/exp-drd/drd_pthread_intercepts.c 2008-05-03 08:34:52 UTC (rev 7996)
+++ trunk/exp-drd/drd_pthread_intercepts.c 2008-05-03 09:00:40 UTC (rev 7997)
@@ -97,6 +97,7 @@
static void init(void)
{
check_threading_library();
+ vg_set_main_thread_state();
/* glibc up to and including version 2.7 triggers conflicting accesses */
/* on stdout and stderr when sending output to one of these streams from */
/* more than one thread. Suppress data race reports on these objects. */
@@ -104,17 +105,6 @@
DRD_IGNORE_VAR(*stderr);
}
-int VG_WRAP_FUNCTION_ZZ(Za,main)(int argc, char** argv, char** envp);
-int VG_WRAP_FUNCTION_ZZ(Za,main)(int argc, char** argv, char** envp)
-{
- int ret;
- OrigFn fn;
- VALGRIND_GET_ORIG_FN(fn);
- vg_set_main_thread_state();
- CALL_FN_W_WWW(ret, fn, argc, argv, envp);
- return ret;
-}
-
static MutexT pthread_to_drd_mutex_type(const int kind)
{
switch (kind)
|
|
From: <sv...@va...> - 2008-05-03 08:34:52
|
Author: bart
Date: 2008-05-03 09:34:52 +0100 (Sat, 03 May 2008)
New Revision: 7996
Log:
Print an error message if /usr/bin/getconf is not found.
Modified:
trunk/exp-drd/tests/supported_libpthread
Modified: trunk/exp-drd/tests/supported_libpthread
===================================================================
--- trunk/exp-drd/tests/supported_libpthread 2008-05-03 05:24:57 UTC (rev 7995)
+++ trunk/exp-drd/tests/supported_libpthread 2008-05-03 08:34:52 UTC (rev 7996)
@@ -5,6 +5,11 @@
# libpthread is found (LinuxThreads).
if [ "$(uname)" = "Linux" ]; then
+ if [ ! -x /usr/bin/getconf ]; then
+ echo "Error: could not find the program /usr/bin/getconf."
+ # Assume NPTL.
+ exit 0
+ fi
libpthread_version="$(/usr/bin/getconf GNU_LIBPTHREAD_VERSION 2>/dev/null)"
if [ "${libpthread_version#NPTL}" != "${libpthread_version}" ]; then
# NPTL
|
|
From: Bart V. A. <bar...@gm...> - 2008-05-03 08:27:18
|
On Sat, May 3, 2008 at 7:42 AM, Julian Seward <js...@ac...> wrote: > On Friday 02 May 2008 21:21, Bart Van Assche wrote: >> On Fri, May 2, 2008 at 7:57 PM, Nuno Lopes <nun...@sa...> wrote: >> > >> > exp-drd: drd_clientreq.c:102 (highest_used_stack_address): Assertion >> > 'VG_(thread_get_stack_max)(vg_tid) - VG_(thread_get_stack_size)(vg_tid) >> > <= husa && husa <= VG_(thread_get_stack_max)(vg_tid)' failed. > > I tried to look into this a bit. Not directly related, but: one thing I > noticed is that all the drd regression tests fail on a Fedora 8 machine, > because the prereq test fails, because it assumes /usr/bin/getconf > exists, and it doesn't: > > $ ls /usr/bin/getconf* > ls: cannot access /usr/bin/getconf*: No such file or directory Apparently openSUSE distributes /usr/bin/getconf via the glibc RPM, and for Fedora 7 getconf is included in the glibc-common RPM. /usr/bin/getconf might have been moved to the glibc-devel RPM in later Fedora versions. I can will see what I can do to let the "supported_libpthread" script print a more verbose error message. Bart. |
|
From: Julian S. <js...@ac...> - 2008-05-03 05:48:18
|
On Friday 02 May 2008 21:21, Bart Van Assche wrote: > On Fri, May 2, 2008 at 7:57 PM, Nuno Lopes <nun...@sa...> wrote: > > Bingo! > > I now get the following: > > > > exp-drd: drd_clientreq.c:102 (highest_used_stack_address): Assertion > > 'VG_(thread_get_stack_max)(vg_tid) - VG_(thread_get_stack_size)(vg_tid) > > <= husa && husa <= VG_(thread_get_stack_max)(vg_tid)' failed. I tried to look into this a bit. Not directly related, but: one thing I noticed is that all the drd regression tests fail on a Fedora 8 machine, because the prereq test fails, because it assumes /usr/bin/getconf exists, and it doesn't: $ ./exp-drd/tests/supported_libpthread ; echo $? 1 $ ls /usr/bin/getconf* ls: cannot access /usr/bin/getconf*: No such file or directory $ which getconf /usr/bin/which: no getconf in (/home/sewardj/Bin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/bin:/bin:/usr/bin:/home/sewardj/bin) $ perl tests/vg_regtest exp-drd -- Running tests in exp-drd/tests ------------------------------------- drd_bitmap_test: (skipping, prereq failed: ./supported_libpthread) fp_race: (skipping, prereq failed: ./supported_libpthread) fp_race2: (skipping, prereq failed: ./supported_libpthread) hg01_all_ok: (skipping, prereq failed: ./supported_libpthread) hg02_deadlock: (skipping, prereq failed: ./supported_libpthread) hg03_inherit: (skipping, prereq failed: ./supported_libpthread) hg04_race: (skipping, prereq failed: ./supported_libpthread) hg05_race2: (skipping, prereq failed: ./supported_libpthread) hg06_readshared: (skipping, prereq failed: ./supported_libpthread) linuxthreads_det: valgrind ./linuxthreads_det *** linuxthreads_det failed (stderr) *** matinv: (skipping, prereq failed: ./supported_libpthread) memory_allocation: (skipping, prereq failed: ./supported_libpthread) omp_matinv: (skipping, prereq failed: ./run_openmp_test ./omp_matinv) omp_matinv_racy: (skipping, prereq failed: ./run_openmp_test ./omp_matinv) omp_prime_racy: (skipping, prereq failed: ./run_openmp_test ./omp_prime) pth_barrier: (skipping, prereq failed: ./supported_libpthread) pth_barrier2: (skipping, prereq failed: ./supported_libpthread) pth_barrier3: (skipping, prereq failed: ./supported_libpthread) pth_broadcast: (skipping, prereq failed: ./supported_libpthread) pth_cond_race: (skipping, prereq failed: ./supported_libpthread) pth_cond_race2: (skipping, prereq failed: ./supported_libpthread) pth_create_chain: (skipping, prereq failed: ./supported_libpthread) pth_detached: (skipping, prereq failed: ./supported_libpthread) pth_detached2: (skipping, prereq failed: ./supported_libpthread) pth_detached_sem: (skipping, prereq failed: ./supported_libpthread) recursive_mutex: (skipping, prereq failed: ./supported_libpthread) rwlock_race: (skipping, prereq failed: ./supported_libpthread) sem_as_mutex: (skipping, prereq failed: ./supported_libpthread) sem_as_mutex2: (skipping, prereq failed: ./supported_libpthread) sigalrm: (skipping, prereq failed: ./supported_libpthread) tc01_simple_race: (skipping, prereq failed: ./supported_libpthread) tc02_simple_tls: (skipping, prereq failed: ./supported_libpthread) tc03_re_excl: (skipping, prereq failed: ./supported_libpthread) tc04_free_lock: (skipping, prereq failed: ./supported_libpthread) tc05_simple_race: (skipping, prereq failed: ./supported_libpthread) tc06_two_races: (skipping, prereq failed: ./supported_libpthread) tc07_hbl1: (skipping, prereq failed: ./supported_libpthread) tc08_hbl2: (skipping, prereq failed: ./supported_libpthread) tc09_bad_unlock: (skipping, prereq failed: ./supported_libpthread) tc10_rec_lock: (skipping, prereq failed: ./supported_libpthread) tc11_XCHG: (skipping, prereq failed: ./supported_libpthread) tc12_rwl_trivial: (skipping, prereq failed: ./supported_libpthread) tc13_laog1: (skipping, prereq failed: ./supported_libpthread) tc15_laog_lockdel: (skipping, prereq failed: ./supported_libpthread) tc16_byterace: (skipping, prereq failed: ./supported_libpthread) tc17_sembar: (skipping, prereq failed: ./supported_libpthread) tc18_semabuse: (skipping, prereq failed: ./supported_libpthread) tc19_shadowmem: (skipping, prereq failed: ./supported_libpthread) tc20_verifywrap: (skipping, prereq failed: ./supported_libpthread) tc20_verifywrap2: (skipping, prereq failed: ./supported_libpthread) tc21_pthonce: (skipping, prereq failed: ./supported_libpthread) tc22_exit_w_lock: (skipping, prereq failed: ./supported_libpthread) tc23_bogus_condwait: (skipping, prereq failed: ./supported_libpthread) tc24_nonzero_sem: (skipping, prereq failed: ./supported_libpthread) trylock: (skipping, prereq failed: ./supported_libpthread) -- Finished tests in exp-drd/tests ------------------------------------- J |
|
From: <sv...@va...> - 2008-05-03 05:25:05
|
Author: sewardj
Date: 2008-05-03 06:24:57 +0100 (Sat, 03 May 2008)
New Revision: 7995
Log:
Remove a bit of unused code.
Modified:
trunk/memcheck/mc_main.c
Modified: trunk/memcheck/mc_main.c
===================================================================
--- trunk/memcheck/mc_main.c 2008-05-02 22:27:07 UTC (rev 7994)
+++ trunk/memcheck/mc_main.c 2008-05-03 05:24:57 UTC (rev 7995)
@@ -3828,11 +3828,10 @@
sm_off = SM_OFF(a);
vabits8 = sm->vabits8[sm_off];
-//---------------------------------------------------------------------------
-#if 1
// Cleverness: sometimes we don't have to write the shadow memory at
// all, if we can tell that what we want to write is the same as what is
- // already there.
+ // already there. The 64/16/8 bit cases also have cleverness at this
+ // point, but it works a little differently to the code below.
if (V_BITS32_DEFINED == vbits32) {
if (vabits8 == (UInt)VA_BITS8_DEFINED) {
return;
@@ -3858,32 +3857,7 @@
PROF_EVENT(234, "mc_STOREV32-slow4");
mc_STOREVn_slow( a, 32, (ULong)vbits32, isBigEndian );
}
-//---------------------------------------------------------------------------
-#else
- if (LIKELY( !is_distinguished_sm(sm) &&
- (VA_BITS8_DEFINED == vabits8 ||
- VA_BITS8_UNDEFINED == vabits8) ))
- {
- /* Handle common case quickly: a is suitably aligned, */
- /* is mapped, and is addressible. */
- // Convert full V-bits in register to compact 2-bit form.
- if (V_BITS32_DEFINED == vbits32) {
- sm->vabits8[sm_off] = VA_BITS8_DEFINED;
- } else if (V_BITS32_UNDEFINED == vbits32) {
- sm->vabits8[sm_off] = VA_BITS8_UNDEFINED;
- } else {
- /* Slow but general case -- writing partially defined bytes. */
- PROF_EVENT(232, "mc_STOREV32-slow2");
- mc_STOREVn_slow( a, 32, (ULong)vbits32, isBigEndian );
- }
- } else {
- /* Slow but general case. */
- PROF_EVENT(233, "mc_STOREV32-slow3");
- mc_STOREVn_slow( a, 32, (ULong)vbits32, isBigEndian );
- }
#endif
-//---------------------------------------------------------------------------
-#endif
}
VG_REGPARM(2) void MC_(helperc_STOREV32be) ( Addr a, UWord vbits32 )
|
|
From: Tom H. <th...@cy...> - 2008-05-03 03:01:25
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-05-03 03:05:06 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 == 423 tests, 4 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-05-03 02:57:06
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-05-03 03:20:07 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 == 429 tests, 7 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-05-03 02:41:33
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-05-03 03:25:04 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 == 427 tests, 7 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap2 (stdout) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == 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 == 427 tests, 6 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sat May 3 03:33:33 2008 --- new.short Sat May 3 03:41:38 2008 *************** *** 8,10 **** ! == 427 tests, 6 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 427 tests, 7 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) *************** *** 17,18 **** --- 17,19 ---- none/tests/mremap2 (stdout) + helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) |
|
From: Tom H. <th...@cy...> - 2008-05-03 02:37:45
|
Nightly build on dellow ( x86_64, Fedora 8 ) started at 2008-05-03 03:10:04 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 == 423 tests, 7 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == 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 == 423 tests, 8 stderr failures, 4 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) none/tests/pth_cvsimple (stdout) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/pth_detached2 (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sat May 3 03:24:12 2008 --- new.short Sat May 3 03:37:49 2008 *************** *** 8,10 **** ! == 423 tests, 8 stderr failures, 4 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 423 tests, 7 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) *************** *** 14,17 **** none/tests/mremap2 (stdout) - none/tests/pth_cvsimple (stdout) - helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc18_semabuse (stderr) --- 14,15 ---- *************** *** 20,22 **** helgrind/tests/tc22_exit_w_lock (stderr) - exp-drd/tests/pth_detached2 (stdout) --- 18,19 ---- |
|
From: Tom H. <th...@cy...> - 2008-05-03 02:23:52
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-05-03 03:00:05 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 == 429 tests, 30 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/amd64/insn_ssse3 (stdout) none/tests/amd64/insn_ssse3 (stderr) none/tests/amd64/ssse3_misaligned (stderr) none/tests/blockfault (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap2 (stdout) none/tests/x86/insn_ssse3 (stdout) none/tests/x86/insn_ssse3 (stderr) none/tests/x86/ssse3_misaligned (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) |
|
From: <sv...@va...> - 2008-05-02 22:27:02
|
Author: sewardj
Date: 2008-05-02 23:27:07 +0100 (Fri, 02 May 2008)
New Revision: 7994
Log:
Make sure sp[0] and fp[0] are set in a rarely-taken path. Thanks to
Bart for spotting this.
Modified:
trunk/coregrind/m_stacktrace.c
Modified: trunk/coregrind/m_stacktrace.c
===================================================================
--- trunk/coregrind/m_stacktrace.c 2008-05-02 19:21:02 UTC (rev 7993)
+++ trunk/coregrind/m_stacktrace.c 2008-05-02 22:27:07 UTC (rev 7994)
@@ -104,6 +104,8 @@
if (fp_min + 512 >= fp_max) {
/* If the stack limits look bogus, don't poke around ... but
don't bomb out either. */
+ if (sps) sps[0] = sp;
+ if (fps) fps[0] = fp;
ips[0] = ip;
return 1;
}
|
|
From: <sv...@va...> - 2008-05-02 22:15:08
|
Author: sewardj
Date: 2008-05-02 23:15:12 +0100 (Fri, 02 May 2008)
New Revision: 1833
Log:
Specialise CondNZ after SUBW for both x86 and amd64.
Modified:
trunk/priv/guest-amd64/ghelpers.c
trunk/priv/guest-x86/ghelpers.c
Modified: trunk/priv/guest-amd64/ghelpers.c
===================================================================
--- trunk/priv/guest-amd64/ghelpers.c 2008-05-01 20:13:04 UTC (rev 1832)
+++ trunk/priv/guest-amd64/ghelpers.c 2008-05-02 22:15:12 UTC (rev 1833)
@@ -1001,6 +1001,13 @@
unop(Iop_64to16,cc_dep1),
unop(Iop_64to16,cc_dep2)));
}
+ if (isU64(cc_op, AMD64G_CC_OP_SUBW) && isU64(cond, AMD64CondNZ)) {
+ /* word sub/cmp, then NZ --> test dst!=src */
+ return unop(Iop_1Uto64,
+ binop(Iop_CmpNE16,
+ unop(Iop_64to16,cc_dep1),
+ unop(Iop_64to16,cc_dep2)));
+ }
if (isU64(cc_op, AMD64G_CC_OP_SUBW) && isU64(cond, AMD64CondLE)) {
/* word sub/cmp, then LE (signed less than or equal)
Modified: trunk/priv/guest-x86/ghelpers.c
===================================================================
--- trunk/priv/guest-x86/ghelpers.c 2008-05-01 20:13:04 UTC (rev 1832)
+++ trunk/priv/guest-x86/ghelpers.c 2008-05-02 22:15:12 UTC (rev 1833)
@@ -925,6 +925,13 @@
unop(Iop_32to16,cc_dep1),
unop(Iop_32to16,cc_dep2)));
}
+ if (isU32(cc_op, X86G_CC_OP_SUBW) && isU32(cond, X86CondNZ)) {
+ /* word sub/cmp, then NZ --> test dst!=src */
+ return unop(Iop_1Uto32,
+ binop(Iop_CmpNE16,
+ unop(Iop_32to16,cc_dep1),
+ unop(Iop_32to16,cc_dep2)));
+ }
/*---------------- SUBB ----------------*/
|