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
(23) |
2
(40) |
3
(17) |
4
(10) |
|
5
(14) |
6
(41) |
7
(26) |
8
(23) |
9
(15) |
10
(25) |
11
(14) |
|
12
(23) |
13
(11) |
14
(18) |
15
(21) |
16
(18) |
17
(8) |
18
(14) |
|
19
(16) |
20
(15) |
21
(12) |
22
(11) |
23
(8) |
24
(11) |
25
(12) |
|
26
(9) |
27
(17) |
28
(31) |
29
(16) |
30
(10) |
31
(17) |
|
|
From: Bart V. A. <bar...@gm...> - 2006-03-11 19:31:42
|
Hello,
I am now one step further: my drd tool is now notified about
thread creation, thread termination and mutex locking / unlocking. The
list of conflicting accesses shortened significantly. I have attached
the svn diffs against version 1594:5748M.
Can someone please review/comment on the changes I made ?
Some difficulties I encountered:
- I need the thread ID of the joined thread for
track_post_pthread_join(). There are two difficulties:
* There are applications that call pthread_join with zero as the first
argument (i.e. thread not specified).
* Even if the first argument of pthread_join() is nonzero,
VG_(get_lwp_tid)() cannot be called since this information is cleaned
up as soon as the thread stops.
- For each mutex, I need the following information: recursion count
(depth of recursive locking) and at the time pthread_mutex_lock() is
called, the thread ID of the last thread that called
pthread_mutex_unlock(). This information is now stored in my tool. Is
this the right place, or should this information be managed by the
Valgrind core such that it is also accessible by Helgrind ?
- To be implemented: a notification when either
pthread_mutex_destroy() is called or the mutex memory is freed (POSIX
mutexes do not have to be initialized / destroyed via
pthread_mutex_init() / pthread_mutex_destroy()). I have to investigate
this further.
Examining thread 2 (vc [ 1: 3, 2: 1 ]) versus thread 1 (vc [ 1: 4 ])
0x040161C8 W W
0x040161C9 W W
0x040161CA W W
0x040161CB W W
0x04016EF1 W W
0x04472D98 R W
0x04472D99 R W
0x04472D9A R W
0x04472D9B R W
0x08049B80 W W
0x08049B81 W W
0x08049B82 W W
0x08049B83 W W
0x08049B84 W W
0x08049B85 W W
0x08049B86 W W
0x08049B87 W W
0x08049B98 W W
0x08049B99 W W
0x08049B9A W W
0x08049B9B W W
On 3/5/06, Julian Seward <js...@ac...> wrote:
>
> > Good news: my data race detection tool, although far from finished, is
> > already producing some output. It can already show the list of
> > conflicting accesses between threads.
>
> Cool.
>
> > pthread_mutex_unlock() ? Is anyone willing to make
> > VG_(track_{pre|post}_mutex_{lock|unlock}) working again ?
>
> Attached is a patch against r5712 which does track_{pre|post}_mutex_lock
> and track_post_mutex_unlock. There is no track_pre_mutex_unlock
> (since it never blocks) although one could be created if you want.
>
> Tracking pthread_join is not done yet. It's more difficult; I
> have not yet figured out how to find out the TId of the thread
> being joined to. We know the pthread_t of that thread, but
> I don't see an obvious way to find its TId (valgrind's internal
> thread-id).
>
> Anyway, this should give some idea how to build/modify the
> notifications you need.
>
> - vg_preloaded.c runs on the simulated CPU, and intercepts (wraps)
> the relevant pthread functions.
>
> - These wrappers use the client request mechanism to pass event
> notifications to the scheduler (scheduler.c).
>
> - The scheduler passes these notifications on to the tool, if it
> has asked to see them.
>
> I haven't committed this. Maybe you can mess with the patch to get
> it more like you want.
|
|
From: <sv...@va...> - 2006-03-11 16:19:18
|
Author: sewardj
Date: 2006-03-11 16:19:14 +0000 (Sat, 11 Mar 2006)
New Revision: 5748
Log:
Complete CALL_FN_W_* wrappers for amd64-linux.
Modified:
trunk/include/valgrind.h
Modified: trunk/include/valgrind.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/include/valgrind.h 2006-03-11 13:20:41 UTC (rev 5747)
+++ trunk/include/valgrind.h 2006-03-11 16:19:14 UTC (rev 5748)
@@ -919,6 +919,328 @@
lval =3D (__typeof__(lval)) _res; \
} while (0)
=20
+#define CALL_FN_W_WWW(lval, orig, arg1,arg2,arg3) \
+ do { \
+ volatile OrigFn _orig =3D (orig); \
+ volatile unsigned long _argvec[4]; \
+ volatile unsigned long _res; \
+ _argvec[0] =3D (unsigned long)_orig.nraddr; \
+ _argvec[1] =3D (unsigned long)(arg1); \
+ _argvec[2] =3D (unsigned long)(arg2); \
+ _argvec[3] =3D (unsigned long)(arg3); \
+ __asm__ volatile( \
+ "movq 24(%%rax), %%rdx\n\t" \
+ "movq 16(%%rax), %%rsi\n\t" \
+ "movq 8(%%rax), %%rdi\n\t" \
+ "movq (%%rax), %%rax\n\t" /* target->%rax */ \
+ VALGRIND_CALL_NOREDIR_RAX \
+ : /*out*/ "=3Da" (_res) \
+ : /*in*/ "a" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
+ ); \
+ lval =3D (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_WWWW(lval, orig, arg1,arg2,arg3,arg4) \
+ do { \
+ volatile OrigFn _orig =3D (orig); \
+ volatile unsigned long _argvec[5]; \
+ volatile unsigned long _res; \
+ _argvec[0] =3D (unsigned long)_orig.nraddr; \
+ _argvec[1] =3D (unsigned long)(arg1); \
+ _argvec[2] =3D (unsigned long)(arg2); \
+ _argvec[3] =3D (unsigned long)(arg3); \
+ _argvec[4] =3D (unsigned long)(arg4); \
+ __asm__ volatile( \
+ "movq 32(%%rax), %%rcx\n\t" \
+ "movq 24(%%rax), %%rdx\n\t" \
+ "movq 16(%%rax), %%rsi\n\t" \
+ "movq 8(%%rax), %%rdi\n\t" \
+ "movq (%%rax), %%rax\n\t" /* target->%rax */ \
+ VALGRIND_CALL_NOREDIR_RAX \
+ : /*out*/ "=3Da" (_res) \
+ : /*in*/ "a" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
+ ); \
+ lval =3D (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_5W(lval, orig, arg1,arg2,arg3,arg4,arg5) \
+ do { \
+ volatile OrigFn _orig =3D (orig); \
+ volatile unsigned long _argvec[6]; \
+ volatile unsigned long _res; \
+ _argvec[0] =3D (unsigned long)_orig.nraddr; \
+ _argvec[1] =3D (unsigned long)(arg1); \
+ _argvec[2] =3D (unsigned long)(arg2); \
+ _argvec[3] =3D (unsigned long)(arg3); \
+ _argvec[4] =3D (unsigned long)(arg4); \
+ _argvec[5] =3D (unsigned long)(arg5); \
+ __asm__ volatile( \
+ "movq 40(%%rax), %%r8\n\t" \
+ "movq 32(%%rax), %%rcx\n\t" \
+ "movq 24(%%rax), %%rdx\n\t" \
+ "movq 16(%%rax), %%rsi\n\t" \
+ "movq 8(%%rax), %%rdi\n\t" \
+ "movq (%%rax), %%rax\n\t" /* target->%rax */ \
+ VALGRIND_CALL_NOREDIR_RAX \
+ : /*out*/ "=3Da" (_res) \
+ : /*in*/ "a" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
+ ); \
+ lval =3D (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_6W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6) \
+ do { \
+ volatile OrigFn _orig =3D (orig); \
+ volatile unsigned long _argvec[7]; \
+ volatile unsigned long _res; \
+ _argvec[0] =3D (unsigned long)_orig.nraddr; \
+ _argvec[1] =3D (unsigned long)(arg1); \
+ _argvec[2] =3D (unsigned long)(arg2); \
+ _argvec[3] =3D (unsigned long)(arg3); \
+ _argvec[4] =3D (unsigned long)(arg4); \
+ _argvec[5] =3D (unsigned long)(arg5); \
+ _argvec[6] =3D (unsigned long)(arg6); \
+ __asm__ volatile( \
+ "movq 48(%%rax), %%r9\n\t" \
+ "movq 40(%%rax), %%r8\n\t" \
+ "movq 32(%%rax), %%rcx\n\t" \
+ "movq 24(%%rax), %%rdx\n\t" \
+ "movq 16(%%rax), %%rsi\n\t" \
+ "movq 8(%%rax), %%rdi\n\t" \
+ "movq (%%rax), %%rax\n\t" /* target->%rax */ \
+ VALGRIND_CALL_NOREDIR_RAX \
+ : /*out*/ "=3Da" (_res) \
+ : /*in*/ "a" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
+ ); \
+ lval =3D (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_7W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7) \
+ do { \
+ volatile OrigFn _orig =3D (orig); \
+ volatile unsigned long _argvec[8]; \
+ volatile unsigned long _res; \
+ _argvec[0] =3D (unsigned long)_orig.nraddr; \
+ _argvec[1] =3D (unsigned long)(arg1); \
+ _argvec[2] =3D (unsigned long)(arg2); \
+ _argvec[3] =3D (unsigned long)(arg3); \
+ _argvec[4] =3D (unsigned long)(arg4); \
+ _argvec[5] =3D (unsigned long)(arg5); \
+ _argvec[6] =3D (unsigned long)(arg6); \
+ _argvec[7] =3D (unsigned long)(arg7); \
+ __asm__ volatile( \
+ "pushq 56(%%rax)\n\t" \
+ "movq 48(%%rax), %%r9\n\t" \
+ "movq 40(%%rax), %%r8\n\t" \
+ "movq 32(%%rax), %%rcx\n\t" \
+ "movq 24(%%rax), %%rdx\n\t" \
+ "movq 16(%%rax), %%rsi\n\t" \
+ "movq 8(%%rax), %%rdi\n\t" \
+ "movq (%%rax), %%rax\n\t" /* target->%rax */ \
+ VALGRIND_CALL_NOREDIR_RAX \
+ "addq $8, %%rsp\n" \
+ : /*out*/ "=3Da" (_res) \
+ : /*in*/ "a" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
+ ); \
+ lval =3D (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_8W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8) \
+ do { \
+ volatile OrigFn _orig =3D (orig); \
+ volatile unsigned long _argvec[9]; \
+ volatile unsigned long _res; \
+ _argvec[0] =3D (unsigned long)_orig.nraddr; \
+ _argvec[1] =3D (unsigned long)(arg1); \
+ _argvec[2] =3D (unsigned long)(arg2); \
+ _argvec[3] =3D (unsigned long)(arg3); \
+ _argvec[4] =3D (unsigned long)(arg4); \
+ _argvec[5] =3D (unsigned long)(arg5); \
+ _argvec[6] =3D (unsigned long)(arg6); \
+ _argvec[7] =3D (unsigned long)(arg7); \
+ _argvec[8] =3D (unsigned long)(arg8); \
+ __asm__ volatile( \
+ "pushq 64(%%rax)\n\t" \
+ "pushq 56(%%rax)\n\t" \
+ "movq 48(%%rax), %%r9\n\t" \
+ "movq 40(%%rax), %%r8\n\t" \
+ "movq 32(%%rax), %%rcx\n\t" \
+ "movq 24(%%rax), %%rdx\n\t" \
+ "movq 16(%%rax), %%rsi\n\t" \
+ "movq 8(%%rax), %%rdi\n\t" \
+ "movq (%%rax), %%rax\n\t" /* target->%rax */ \
+ VALGRIND_CALL_NOREDIR_RAX \
+ "addq $16, %%rsp\n" \
+ : /*out*/ "=3Da" (_res) \
+ : /*in*/ "a" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
+ ); \
+ lval =3D (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_9W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8,arg9) \
+ do { \
+ volatile OrigFn _orig =3D (orig); \
+ volatile unsigned long _argvec[10]; \
+ volatile unsigned long _res; \
+ _argvec[0] =3D (unsigned long)_orig.nraddr; \
+ _argvec[1] =3D (unsigned long)(arg1); \
+ _argvec[2] =3D (unsigned long)(arg2); \
+ _argvec[3] =3D (unsigned long)(arg3); \
+ _argvec[4] =3D (unsigned long)(arg4); \
+ _argvec[5] =3D (unsigned long)(arg5); \
+ _argvec[6] =3D (unsigned long)(arg6); \
+ _argvec[7] =3D (unsigned long)(arg7); \
+ _argvec[8] =3D (unsigned long)(arg8); \
+ _argvec[9] =3D (unsigned long)(arg9); \
+ __asm__ volatile( \
+ "pushq 72(%%rax)\n\t" \
+ "pushq 64(%%rax)\n\t" \
+ "pushq 56(%%rax)\n\t" \
+ "movq 48(%%rax), %%r9\n\t" \
+ "movq 40(%%rax), %%r8\n\t" \
+ "movq 32(%%rax), %%rcx\n\t" \
+ "movq 24(%%rax), %%rdx\n\t" \
+ "movq 16(%%rax), %%rsi\n\t" \
+ "movq 8(%%rax), %%rdi\n\t" \
+ "movq (%%rax), %%rax\n\t" /* target->%rax */ \
+ VALGRIND_CALL_NOREDIR_RAX \
+ "addq $24, %%rsp\n" \
+ : /*out*/ "=3Da" (_res) \
+ : /*in*/ "a" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
+ ); \
+ lval =3D (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_10W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8,arg9,arg10) \
+ do { \
+ volatile OrigFn _orig =3D (orig); \
+ volatile unsigned long _argvec[11]; \
+ volatile unsigned long _res; \
+ _argvec[0] =3D (unsigned long)_orig.nraddr; \
+ _argvec[1] =3D (unsigned long)(arg1); \
+ _argvec[2] =3D (unsigned long)(arg2); \
+ _argvec[3] =3D (unsigned long)(arg3); \
+ _argvec[4] =3D (unsigned long)(arg4); \
+ _argvec[5] =3D (unsigned long)(arg5); \
+ _argvec[6] =3D (unsigned long)(arg6); \
+ _argvec[7] =3D (unsigned long)(arg7); \
+ _argvec[8] =3D (unsigned long)(arg8); \
+ _argvec[9] =3D (unsigned long)(arg9); \
+ _argvec[10] =3D (unsigned long)(arg10); \
+ __asm__ volatile( \
+ "pushq 80(%%rax)\n\t" \
+ "pushq 72(%%rax)\n\t" \
+ "pushq 64(%%rax)\n\t" \
+ "pushq 56(%%rax)\n\t" \
+ "movq 48(%%rax), %%r9\n\t" \
+ "movq 40(%%rax), %%r8\n\t" \
+ "movq 32(%%rax), %%rcx\n\t" \
+ "movq 24(%%rax), %%rdx\n\t" \
+ "movq 16(%%rax), %%rsi\n\t" \
+ "movq 8(%%rax), %%rdi\n\t" \
+ "movq (%%rax), %%rax\n\t" /* target->%rax */ \
+ VALGRIND_CALL_NOREDIR_RAX \
+ "addq $32, %%rsp\n" \
+ : /*out*/ "=3Da" (_res) \
+ : /*in*/ "a" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
+ ); \
+ lval =3D (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_11W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8,arg9,arg10,arg11) \
+ do { \
+ volatile OrigFn _orig =3D (orig); \
+ volatile unsigned long _argvec[12]; \
+ volatile unsigned long _res; \
+ _argvec[0] =3D (unsigned long)_orig.nraddr; \
+ _argvec[1] =3D (unsigned long)(arg1); \
+ _argvec[2] =3D (unsigned long)(arg2); \
+ _argvec[3] =3D (unsigned long)(arg3); \
+ _argvec[4] =3D (unsigned long)(arg4); \
+ _argvec[5] =3D (unsigned long)(arg5); \
+ _argvec[6] =3D (unsigned long)(arg6); \
+ _argvec[7] =3D (unsigned long)(arg7); \
+ _argvec[8] =3D (unsigned long)(arg8); \
+ _argvec[9] =3D (unsigned long)(arg9); \
+ _argvec[10] =3D (unsigned long)(arg10); \
+ _argvec[11] =3D (unsigned long)(arg11); \
+ __asm__ volatile( \
+ "pushq 88(%%rax)\n\t" \
+ "pushq 80(%%rax)\n\t" \
+ "pushq 72(%%rax)\n\t" \
+ "pushq 64(%%rax)\n\t" \
+ "pushq 56(%%rax)\n\t" \
+ "movq 48(%%rax), %%r9\n\t" \
+ "movq 40(%%rax), %%r8\n\t" \
+ "movq 32(%%rax), %%rcx\n\t" \
+ "movq 24(%%rax), %%rdx\n\t" \
+ "movq 16(%%rax), %%rsi\n\t" \
+ "movq 8(%%rax), %%rdi\n\t" \
+ "movq (%%rax), %%rax\n\t" /* target->%rax */ \
+ VALGRIND_CALL_NOREDIR_RAX \
+ "addq $40, %%rsp\n" \
+ : /*out*/ "=3Da" (_res) \
+ : /*in*/ "a" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
+ ); \
+ lval =3D (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_12W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8,arg9,arg10,arg11,arg12) \
+ do { \
+ volatile OrigFn _orig =3D (orig); \
+ volatile unsigned long _argvec[13]; \
+ volatile unsigned long _res; \
+ _argvec[0] =3D (unsigned long)_orig.nraddr; \
+ _argvec[1] =3D (unsigned long)(arg1); \
+ _argvec[2] =3D (unsigned long)(arg2); \
+ _argvec[3] =3D (unsigned long)(arg3); \
+ _argvec[4] =3D (unsigned long)(arg4); \
+ _argvec[5] =3D (unsigned long)(arg5); \
+ _argvec[6] =3D (unsigned long)(arg6); \
+ _argvec[7] =3D (unsigned long)(arg7); \
+ _argvec[8] =3D (unsigned long)(arg8); \
+ _argvec[9] =3D (unsigned long)(arg9); \
+ _argvec[10] =3D (unsigned long)(arg10); \
+ _argvec[11] =3D (unsigned long)(arg11); \
+ _argvec[12] =3D (unsigned long)(arg12); \
+ __asm__ volatile( \
+ "pushq 96(%%rax)\n\t" \
+ "pushq 88(%%rax)\n\t" \
+ "pushq 80(%%rax)\n\t" \
+ "pushq 72(%%rax)\n\t" \
+ "pushq 64(%%rax)\n\t" \
+ "pushq 56(%%rax)\n\t" \
+ "movq 48(%%rax), %%r9\n\t" \
+ "movq 40(%%rax), %%r8\n\t" \
+ "movq 32(%%rax), %%rcx\n\t" \
+ "movq 24(%%rax), %%rdx\n\t" \
+ "movq 16(%%rax), %%rsi\n\t" \
+ "movq 8(%%rax), %%rdi\n\t" \
+ "movq (%%rax), %%rax\n\t" /* target->%rax */ \
+ VALGRIND_CALL_NOREDIR_RAX \
+ "addq $48, %%rsp\n" \
+ : /*out*/ "=3Da" (_res) \
+ : /*in*/ "a" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
+ ); \
+ lval =3D (__typeof__(lval)) _res; \
+ } while (0)
+
#endif /* ARCH_amd64 */
=20
/* --------------------------- ppc32 --------------------------- */
|
|
From: <sv...@va...> - 2006-03-11 13:20:49
|
Author: sewardj
Date: 2006-03-11 13:20:41 +0000 (Sat, 11 Mar 2006)
New Revision: 5747
Log:
Majorly beef up this test:
* test all wrapped-function arities from 0 to 12
* try hard to run both callers and callees out of integer registers,
so as to detect problems where the CALL_FN_* macros do not
properly save registers around the call
This will cause failure in building the regtests on all non-x86
platforms. Will fix shortly.
Modified:
trunk/memcheck/tests/Makefile.am
trunk/memcheck/tests/wrap6.c
trunk/memcheck/tests/wrap6.stdout.exp
Modified: trunk/memcheck/tests/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/Makefile.am 2006-03-11 12:58:03 UTC (rev 5746)
+++ trunk/memcheck/tests/Makefile.am 2006-03-11 13:20:41 UTC (rev 5747)
@@ -173,6 +173,7 @@
vcpu_fbench_CFLAGS =3D $(AM_FLAG_M3264_PRI) $(AM_CFLAGS) -O2 -g
vcpu_fnfns_CFLAGS =3D $(AM_FLAG_M3264_PRI) $(AM_CFLAGS) -O2 -g
vcpu_fnfns_LDADD =3D -lm
+wrap6_CFLAGS =3D $(AM_FLAG_M3264_PRI) $(AM_CFLAGS) -O2 -g
=20
# Don't allow GCC to inline memcpy(), because then we can't intercept it
overlap_CFLAGS =3D $(AM_CFLAGS) -fno-builtin-memcpy
Modified: trunk/memcheck/tests/wrap6.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/wrap6.c 2006-03-11 12:58:03 UTC (rev 5746)
+++ trunk/memcheck/tests/wrap6.c 2006-03-11 13:20:41 UTC (rev 5747)
@@ -1,6 +1,7 @@
=20
#include <stdlib.h>
#include <stdio.h>
+#include <assert.h>
#include "valgrind.h"
=20
/* Program that checks all numbers of args (0 through 12) work for
@@ -14,21 +15,21 @@
=20
#define TRASH_IREGS(_rlval, _vec) \
do { \
- UInt* vec =3D (_vec); \
+ register UInt* vec =3D (_vec); \
/* x86 spills for v > 4, amd64 for v > 12. */ \
- UInt i, sum =3D 0; \
- UInt v1 =3D vec[1-1]; \
- UInt v2 =3D vec[2-1]; \
- UInt v3 =3D vec[3-1]; \
- UInt v4 =3D vec[4-1]; \
- UInt v5 =3D vec[5-1]; \
- UInt v6 =3D vec[6-1]; \
- UInt v7 =3D vec[7-1]; \
- UInt v8 =3D vec[8-1]; \
- UInt v9 =3D vec[9-1]; \
- UInt v10 =3D vec[10-1]; \
- UInt v11 =3D vec[11-1]; \
- UInt v12 =3D vec[12-1]; \
+ register UInt i, sum =3D 0; \
+ register UInt v1 =3D vec[1-1]; \
+ register UInt v2 =3D vec[2-1]; \
+ register UInt v3 =3D vec[3-1]; \
+ register UInt v4 =3D vec[4-1]; \
+ register UInt v5 =3D vec[5-1]; \
+ register UInt v6 =3D vec[6-1]; \
+ register UInt v7 =3D vec[7-1]; \
+ register UInt v8 =3D vec[8-1]; \
+ register UInt v9 =3D vec[9-1]; \
+ register UInt v10 =3D vec[10-1]; \
+ register UInt v11 =3D vec[11-1]; \
+ register UInt v12 =3D vec[12-1]; \
for (i =3D 0; i < 50; i++) { \
v1 =3D ROL(v1,1); \
v2 =3D ROL(v2,2); \
@@ -57,6 +58,69 @@
_rlval =3D sum; \
} while (0)
=20
+
+/* Returns one, in a way that gcc probably can't constant fold out */
+
+volatile int one_actual_return_value =3D 0; /* the value one() returns *=
/
+
+ __attribute__((noinline))
+int one ( void )
+{
+ int i, sum, a[7];
+ for (i =3D 0; i < 7; i++)
+ a[i] =3D i;
+ a[3] =3D 3+one_actual_return_value;
+ sum =3D 0;
+ for (i =3D 7-1; i >=3D 0; i--)
+ sum +=3D a[i] - i;
+ return sum;
+}
+
+#define LOOPS_START \
+ { register int len =3D one(); \
+ register int x0; for (x0 =3D 0x1000; x0 < 0x1000+len; x0++) { \
+ register int x1; for (x1 =3D 0x1100; x1 < 0x1100+len; x1++) { \
+ register int x2; for (x2 =3D 0x1200; x2 < 0x1200+len; x2++) { \
+ register int x3; for (x3 =3D 0x1300; x3 < 0x1300+len; x3++) { \
+ register int x4; for (x4 =3D 0x1400; x4 < 0x1400+len; x4++) { \
+ register int x5; for (x5 =3D 0x1500; x5 < 0x1500+len; x5++) { \
+ register int x6; for (x6 =3D 0x1600; x6 < 0x1600+len; x6++) { \
+ register int x7; for (x7 =3D 0x1700; x7 < 0x1700+len; x7++) { \
+ register int x8; for (x8 =3D 0x1800; x8 < 0x1800+len; x8++) { \
+ register int x9; for (x9 =3D 0x1900; x9 < 0x1900+len; x9++) { \
+ register int xA; for (xA =3D 0x1A00; xA < 0x1A00+len; xA++) { \
+ register int xB; for (xB =3D 0x1B00; xB < 0x1B00+len; xB++) { \
+ register int xC; for (xC =3D 0x1C00; xC < 0x1C00+len; xC++) { \
+ register int xD; for (xD =3D 0x1D00; xD < 0x1D00+len; xD++) { \
+ register int xE; for (xE =3D 0x1E00; xE < 0x1E00+len; xE++) { \
+ register int xF; for (xF =3D 0x1F00; xF < 0x1F00+len; xF++) { \
+ /* */
+
+#define LOOPS_END \
+ assert(xF >=3D 0x1F00 && xF <=3D 0x1F00+len); } \
+ assert(xE >=3D 0x1E00 && xE <=3D 0x1E00+len); } \
+ assert(xD >=3D 0x1D00 && xD <=3D 0x1D00+len); } \
+ assert(xC >=3D 0x1C00 && xC <=3D 0x1C00+len); } \
+ assert(xB >=3D 0x1B00 && xB <=3D 0x1B00+len); } \
+ assert(xA >=3D 0x1A00 && xA <=3D 0x1A00+len); } \
+ assert(x9 >=3D 0x1900 && x9 <=3D 0x1900+len); } \
+ assert(x8 >=3D 0x1800 && x8 <=3D 0x1800+len); } \
+ assert(x7 >=3D 0x1700 && x7 <=3D 0x1700+len); } \
+ assert(x6 >=3D 0x1600 && x6 <=3D 0x1600+len); } \
+ assert(x5 >=3D 0x1500 && x5 <=3D 0x1500+len); } \
+ assert(x4 >=3D 0x1400 && x4 <=3D 0x1400+len); } \
+ assert(x3 >=3D 0x1300 && x3 <=3D 0x1300+len); } \
+ assert(x2 >=3D 0x1200 && x2 <=3D 0x1200+len); } \
+ assert(x1 >=3D 0x1100 && x1 <=3D 0x1100+len); } \
+ assert(x0 >=3D 0x1000 && x0 <=3D 0x1000+len); } \
+ }
+
+/* General idea is for the wrappers to use LOOPS_START / LOOPS_END to
+ soak up lots of int registers. And the orig fn uses TRASH_IREGS to
+ do the same. If there is insufficient saving of caller-saves regs
+ by the CALL_FN_* macros, then hopefully the assertions in LOOPS_END
+ will fail. */
+
/* --------------- 0 --------------- */ =20
=20
UInt fn_0 ( void )
@@ -70,14 +134,16 @@
=20
UInt I_WRAP_SONAME_FNNAME_ZU(NONE,fn_0) ( UInt a1 )
{
- UInt r;
+ UInt r =3D 0;
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
- printf("fn_0 wrapper pre ()\n");
- CALL_FN_W_v(r, fn);
- printf("fn_0 wrapper post1 =3D %d\n", (int)r);
- CALL_FN_v_v(fn);
- printf("fn_0 wrapper post2 =3D %d\n", (int)r);
+ LOOPS_START
+ printf("fn_0 wrapper pre ()\n");
+ CALL_FN_W_v(r, fn);
+ printf("fn_0 wrapper post1 =3D %d\n", (int)r);
+ CALL_FN_v_v(fn);
+ printf("fn_0 wrapper post2 =3D %d\n", (int)r);
+ LOOPS_END
return r;
}
=20
@@ -95,14 +161,16 @@
=20
UInt I_WRAP_SONAME_FNNAME_ZU(NONE,fn_1) ( UInt a1 )
{
- UInt r;
+ UInt r =3D 0;
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
- printf("fn_1 wrapper pre ( %d )\n", (int)a1);
- CALL_FN_W_W(r, fn, a1);
- printf("fn_1 wrapper post1 =3D %d\n", (int)r);
- CALL_FN_v_W(fn, a1);
- printf("fn_1 wrapper post2 =3D %d\n", (int)r);
+ LOOPS_START
+ printf("fn_1 wrapper pre ( %d )\n", (int)a1);
+ CALL_FN_W_W(r, fn, a1);
+ printf("fn_1 wrapper post1 =3D %d\n", (int)r);
+ CALL_FN_v_W(fn, a1);
+ printf("fn_1 wrapper post2 =3D %d\n", (int)r);
+ LOOPS_END
return r;
}
=20
@@ -110,7 +178,7 @@
=20
UInt fn_2 ( UInt a1, UInt a2 )
{
- UInt r;
+ UInt r =3D 0;
UInt* words =3D calloc(200, sizeof(UInt));
words[1-1] =3D a1;
words[2-1] =3D a2;
@@ -121,23 +189,381 @@
=20
UInt I_WRAP_SONAME_FNNAME_ZU(NONE,fn_2) ( UInt a1, UInt a2 )
{
- UInt r;
+ UInt r =3D 0;
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
- printf("fn_2 wrapper pre ( %d, %d )\n", (int)a1, (int)a2);
- CALL_FN_W_WW(r, fn, a1, a2);
- printf("fn_2 wrapper post1 =3D %d\n", (int)r);
- CALL_FN_v_WW(fn, a1, a2);
- printf("fn_2 wrapper post2 =3D %d\n", (int)r);
+ LOOPS_START
+ printf("fn_2 wrapper pre ( %d, %d )\n", (int)a1, (int)a2);
+ CALL_FN_W_WW(r, fn, a1, a2);
+ printf("fn_2 wrapper post1 =3D %d\n", (int)r);
+ CALL_FN_v_WW(fn, a1, a2);
+ printf("fn_2 wrapper post2 =3D %d\n", (int)r);
+ LOOPS_END
return r;
}
=20
+/* --------------- 3 --------------- */ =20
+
+UInt fn_3 ( UInt a1, UInt a2, UInt a3 )
+{
+ UInt r;
+ UInt* words =3D calloc(200, sizeof(UInt));
+ words[1-1] =3D a1;
+ words[2-1] =3D a2;
+ words[3-1] =3D a3;
+ TRASH_IREGS(r, words);
+ free(words);
+ return r;
+}
+
+UInt I_WRAP_SONAME_FNNAME_ZU(NONE,fn_3) ( UInt a1, UInt a2, UInt a3 )
+{
+ UInt r =3D 0;
+ OrigFn fn;
+ VALGRIND_GET_ORIG_FN(fn);
+ LOOPS_START
+ printf("fn_3 wrapper pre ( %d, %d, %d )\n", (int)a1, (int)a2, (int)=
a3);
+ CALL_FN_W_WWW(r, fn, a1, a2, a3);
+ printf("fn_3 wrapper post1 =3D %d\n", (int)r);
+ CALL_FN_v_WWW(fn, a1, a2, a3);
+ printf("fn_3 wrapper post2 =3D %d\n", (int)r);
+ LOOPS_END
+ return r;
+}
+
+/* --------------- 4 --------------- */ =20
+
+UInt fn_4 ( UInt a1, UInt a2, UInt a3, UInt a4 )
+{
+ UInt r;
+ UInt* words =3D calloc(200, sizeof(UInt));
+ words[1-1] =3D a1;
+ words[2-1] =3D a2;
+ words[3-1] =3D a3;
+ words[4-1] =3D a4;
+ TRASH_IREGS(r, words);
+ free(words);
+ return r;
+}
+
+UInt I_WRAP_SONAME_FNNAME_ZU(NONE,fn_4)=20
+ ( UInt a1, UInt a2, UInt a3, UInt a4 )
+{
+ UInt r =3D 0;
+ OrigFn fn;
+ VALGRIND_GET_ORIG_FN(fn);
+ LOOPS_START
+ printf("fn_4 wrapper pre ( %d, %d, %d, %d )\n",=20
+ (int)a1, (int)a2, (int)a3, (int)a4);
+ CALL_FN_W_WWWW(r, fn, a1, a2, a3, a4);
+ printf("fn_4 wrapper post1 =3D %d\n", (int)r);
+ LOOPS_END
+ return r;
+}
+
+/* --------------- 5 --------------- */ =20
+
+UInt fn_5 ( UInt a1, UInt a2, UInt a3, UInt a4, UInt a5 )
+{
+ UInt r;
+ UInt* words =3D calloc(200, sizeof(UInt));
+ words[1-1] =3D a1;
+ words[2-1] =3D a2;
+ words[3-1] =3D a3;
+ words[4-1] =3D a4;
+ words[5-1] =3D a5;
+ TRASH_IREGS(r, words);
+ free(words);
+ return r;
+}
+
+UInt I_WRAP_SONAME_FNNAME_ZU(NONE,fn_5)=20
+ ( UInt a1, UInt a2, UInt a3, UInt a4, UInt a5 )
+{
+ UInt r =3D 0;
+ OrigFn fn;
+ VALGRIND_GET_ORIG_FN(fn);
+ LOOPS_START
+ printf("fn_5 wrapper pre ( %d, %d, %d, %d, %d )\n",=20
+ (int)a1, (int)a2, (int)a3, (int)a4, (int)a5);
+ CALL_FN_W_5W(r, fn, a1, a2, a3, a4, a5);
+ printf("fn_5 wrapper post1 =3D %d\n", (int)r);
+ LOOPS_END
+ return r;
+}
+
+/* --------------- 6 --------------- */ =20
+
+UInt fn_6 ( UInt a1, UInt a2, UInt a3, UInt a4, UInt a5, UInt a6 )
+{
+ UInt r;
+ UInt* words =3D calloc(200, sizeof(UInt));
+ words[1-1] =3D a1;
+ words[2-1] =3D a2;
+ words[3-1] =3D a3;
+ words[4-1] =3D a4;
+ words[5-1] =3D a5;
+ words[6-1] =3D a6;
+ TRASH_IREGS(r, words);
+ free(words);
+ return r;
+}
+
+UInt I_WRAP_SONAME_FNNAME_ZU(NONE,fn_6)=20
+ ( UInt a1, UInt a2, UInt a3, UInt a4, UInt a5, UInt a6 )
+{
+ UInt r =3D 0;
+ OrigFn fn;
+ VALGRIND_GET_ORIG_FN(fn);
+ LOOPS_START
+ printf("fn_6 wrapper pre ( %d, %d, %d, %d, %d, %d )\n",=20
+ (int)a1, (int)a2, (int)a3, (int)a4, (int)a5, (int)a6);
+ CALL_FN_W_6W(r, fn, a1, a2, a3, a4, a5, a6);
+ printf("fn_6 wrapper post1 =3D %d\n", (int)r);
+ LOOPS_END
+ return r;
+}
+
+/* --------------- 7 --------------- */ =20
+
+UInt fn_7 ( UInt a1, UInt a2, UInt a3, UInt a4, UInt a5, UInt a6,
+ UInt a7 )
+{
+ UInt r;
+ UInt* words =3D calloc(200, sizeof(UInt));
+ words[1-1] =3D a1;
+ words[2-1] =3D a2;
+ words[3-1] =3D a3;
+ words[4-1] =3D a4;
+ words[5-1] =3D a5;
+ words[6-1] =3D a6;
+ words[7-1] =3D a7;
+ TRASH_IREGS(r, words);
+ free(words);
+ return r;
+}
+
+UInt I_WRAP_SONAME_FNNAME_ZU(NONE,fn_7)=20
+ ( UInt a1, UInt a2, UInt a3, UInt a4, UInt a5, UInt a6,
+ UInt a7 )
+{
+ UInt r =3D 0;
+ OrigFn fn;
+ VALGRIND_GET_ORIG_FN(fn);
+ LOOPS_START
+ printf("fn_7 wrapper pre ( %d, %d, %d, %d, %d, %d, %d )\n",=20
+ (int)a1, (int)a2, (int)a3, (int)a4, (int)a5, (int)a6,
+ (int)a7);
+ CALL_FN_W_7W(r, fn, a1, a2, a3, a4, a5, a6, a7);
+ printf("fn_7 wrapper post1 =3D %d\n", (int)r);
+ LOOPS_END
+ return r;
+}
+
+/* --------------- 8 --------------- */ =20
+
+UInt fn_8 ( UInt a1, UInt a2, UInt a3, UInt a4, UInt a5, UInt a6,
+ UInt a7, UInt a8 )
+{
+ UInt r;
+ UInt* words =3D calloc(200, sizeof(UInt));
+ words[1-1] =3D a1;
+ words[2-1] =3D a2;
+ words[3-1] =3D a3;
+ words[4-1] =3D a4;
+ words[5-1] =3D a5;
+ words[6-1] =3D a6;
+ words[7-1] =3D a7;
+ words[8-1] =3D a8;
+ TRASH_IREGS(r, words);
+ free(words);
+ return r;
+}
+
+UInt I_WRAP_SONAME_FNNAME_ZU(NONE,fn_8)=20
+ ( UInt a1, UInt a2, UInt a3, UInt a4, UInt a5, UInt a6,
+ UInt a7, UInt a8 )
+{
+ UInt r =3D 0;
+ OrigFn fn;
+ VALGRIND_GET_ORIG_FN(fn);
+ LOOPS_START
+ printf("fn_8 wrapper pre ( %d, %d, %d, %d, %d, %d, %d, %d )\n",=20
+ (int)a1, (int)a2, (int)a3, (int)a4, (int)a5, (int)a6,
+ (int)a7, (int)a8);
+ CALL_FN_W_8W(r, fn, a1, a2, a3, a4, a5, a6, a7, a8);
+ printf("fn_8 wrapper post1 =3D %d\n", (int)r);
+ LOOPS_END
+ return r;
+}
+
+/* --------------- 9 --------------- */ =20
+
+UInt fn_9 ( UInt a1, UInt a2, UInt a3, UInt a4, UInt a5, UInt a6,
+ UInt a7, UInt a8, UInt a9 )
+{
+ UInt r;
+ UInt* words =3D calloc(200, sizeof(UInt));
+ words[1-1] =3D a1;
+ words[2-1] =3D a2;
+ words[3-1] =3D a3;
+ words[4-1] =3D a4;
+ words[5-1] =3D a5;
+ words[6-1] =3D a6;
+ words[7-1] =3D a7;
+ words[8-1] =3D a8;
+ words[9-1] =3D a9;
+ TRASH_IREGS(r, words);
+ free(words);
+ return r;
+}
+
+UInt I_WRAP_SONAME_FNNAME_ZU(NONE,fn_9)=20
+ ( UInt a1, UInt a2, UInt a3, UInt a4, UInt a5, UInt a6,
+ UInt a7, UInt a8, UInt a9 )
+{
+ UInt r =3D 0;
+ OrigFn fn;
+ VALGRIND_GET_ORIG_FN(fn);
+ LOOPS_START
+ printf("fn_9 wrapper pre ( %d, %d, %d, %d, %d, %d, %d, %d, %d )\n",=
=20
+ (int)a1, (int)a2, (int)a3, (int)a4, (int)a5, (int)a6,
+ (int)a7, (int)a8, (int)a9);
+ CALL_FN_W_9W(r, fn, a1, a2, a3, a4, a5, a6, a7, a8, a9);
+ printf("fn_9 wrapper post1 =3D %d\n", (int)r);
+ LOOPS_END
+ return r;
+}
+
+/* --------------- 10 --------------- */ =20
+
+UInt fn_10 ( UInt a1, UInt a2, UInt a3, UInt a4, UInt a5, UInt a6,
+ UInt a7, UInt a8, UInt a9, UInt a10 )
+{
+ UInt r;
+ UInt* words =3D calloc(200, sizeof(UInt));
+ words[1-1] =3D a1;
+ words[2-1] =3D a2;
+ words[3-1] =3D a3;
+ words[4-1] =3D a4;
+ words[5-1] =3D a5;
+ words[6-1] =3D a6;
+ words[7-1] =3D a7;
+ words[8-1] =3D a8;
+ words[9-1] =3D a9;
+ words[10-1] =3D a10;
+ TRASH_IREGS(r, words);
+ free(words);
+ return r;
+}
+
+UInt I_WRAP_SONAME_FNNAME_ZU(NONE,fn_10)=20
+ ( UInt a1, UInt a2, UInt a3, UInt a4, UInt a5, UInt a6,
+ UInt a7, UInt a8, UInt a9, UInt a10 )
+{
+ UInt r =3D 0;
+ OrigFn fn;
+ VALGRIND_GET_ORIG_FN(fn);
+ LOOPS_START
+ printf("fn_10 wrapper pre ( %d, %d, %d, %d, %d, %d, %d, %d, %d, %d )=
\n",=20
+ (int)a1, (int)a2, (int)a3, (int)a4, (int)a5, (int)a6,
+ (int)a7, (int)a8, (int)a9, (int)a10);
+ CALL_FN_W_10W(r, fn, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
+ printf("fn_10 wrapper post1 =3D %d\n", (int)r);
+ LOOPS_END
+ return r;
+}
+
+/* --------------- 11 --------------- */ =20
+
+UInt fn_11 ( UInt a1, UInt a2, UInt a3, UInt a4, UInt a5, UInt a6,
+ UInt a7, UInt a8, UInt a9, UInt a10, UInt a11 )
+{
+ UInt r;
+ UInt* words =3D calloc(200, sizeof(UInt));
+ words[1-1] =3D a1;
+ words[2-1] =3D a2;
+ words[3-1] =3D a3;
+ words[4-1] =3D a4;
+ words[5-1] =3D a5;
+ words[6-1] =3D a6;
+ words[7-1] =3D a7;
+ words[8-1] =3D a8;
+ words[9-1] =3D a9;
+ words[10-1] =3D a10;
+ words[11-1] =3D a11;
+ TRASH_IREGS(r, words);
+ free(words);
+ return r;
+}
+
+UInt I_WRAP_SONAME_FNNAME_ZU(NONE,fn_11)=20
+ ( UInt a1, UInt a2, UInt a3, UInt a4, UInt a5, UInt a6,
+ UInt a7, UInt a8, UInt a9, UInt a10, UInt a11 )
+{
+ UInt r =3D 0;
+ OrigFn fn;
+ VALGRIND_GET_ORIG_FN(fn);
+ LOOPS_START
+ printf("fn_11 wrapper pre ( %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, =
%d )\n",=20
+ (int)a1, (int)a2, (int)a3, (int)a4, (int)a5, (int)a6,
+ (int)a7, (int)a8, (int)a9, (int)a10, (int)a11);
+ CALL_FN_W_11W(r, fn, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
+ printf("fn_11 wrapper post1 =3D %d\n", (int)r);
+ LOOPS_END
+ return r;
+}
+
+/* --------------- 12 --------------- */ =20
+
+UInt fn_12 ( UInt a1, UInt a2, UInt a3, UInt a4, UInt a5, UInt a6,
+ UInt a7, UInt a8, UInt a9, UInt a10, UInt a11, UInt a12 )
+{
+ UInt r;
+ UInt* words =3D calloc(200, sizeof(UInt));
+ words[1-1] =3D a1;
+ words[2-1] =3D a2;
+ words[3-1] =3D a3;
+ words[4-1] =3D a4;
+ words[5-1] =3D a5;
+ words[6-1] =3D a6;
+ words[7-1] =3D a7;
+ words[8-1] =3D a8;
+ words[9-1] =3D a9;
+ words[10-1] =3D a10;
+ words[11-1] =3D a11;
+ words[12-1] =3D a12;
+ TRASH_IREGS(r, words);
+ free(words);
+ return r;
+}
+
+UInt I_WRAP_SONAME_FNNAME_ZU(NONE,fn_12)=20
+ ( UInt a1, UInt a2, UInt a3, UInt a4, UInt a5, UInt a6,
+ UInt a7, UInt a8, UInt a9, UInt a10, UInt a11, UInt a12 )
+{
+ UInt r =3D 0;
+ OrigFn fn;
+ VALGRIND_GET_ORIG_FN(fn);
+ LOOPS_START
+ printf("fn_12 wrapper pre ( %d, %d, %d, %d, %d, %d, "
+ "%d, %d, %d, %d, %d, %d )\n",=20
+ (int)a1, (int)a2, (int)a3, (int)a4, (int)a5, (int)a6,
+ (int)a7, (int)a8, (int)a9, (int)a10, (int)a11, (int)a12);
+ CALL_FN_W_12W(r, fn, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a=
12);
+ printf("fn_12 wrapper post1 =3D %d\n", (int)r);
+ LOOPS_END
+ return r;
+}
+
/* --------------- main --------------- */ =20
=20
int main ( void )
{
UInt w;
=20
+ one_actual_return_value =3D 1;
+
printf("fn_0 ...\n");
w =3D fn_0();
printf(" ... %d\n\n", (int)w);
@@ -150,6 +576,45 @@
w =3D fn_2(42,43);
printf(" ... %d\n\n", (int)w);
=20
+ printf("fn_3 ...\n");
+ w =3D fn_3(42,43,44);
+ printf(" ... %d\n\n", (int)w);
+
+ printf("fn_4 ...\n");
+ w =3D fn_4(42,43,44,45);
+ printf(" ... %d\n\n", (int)w);
+
+ printf("fn_5 ...\n");
+ w =3D fn_5(42,43,44,45,46);
+ printf(" ... %d\n\n", (int)w);
+
+ printf("fn_6 ...\n");
+ w =3D fn_6(42,43,44,45,46,47);
+ printf(" ... %d\n\n", (int)w);
+
+ printf("fn_7 ...\n");
+ w =3D fn_7(42,43,44,45,46,47,48);
+ printf(" ... %d\n\n", (int)w);
+
+ printf("fn_8 ...\n");
+ w =3D fn_8(42,43,44,45,46,47,48,49);
+ printf(" ... %d\n\n", (int)w);
+
+ printf("fn_9 ...\n");
+ w =3D fn_9(42,43,44,45,46,47,48,49,50);
+ printf(" ... %d\n\n", (int)w);
+
+ printf("fn_10 ...\n");
+ w =3D fn_10(42,43,44,45,46,47,48,49,50,51);
+ printf(" ... %d\n\n", (int)w);
+
+ printf("fn_11 ...\n");
+ w =3D fn_11(42,43,44,45,46,47,48,49,50,51,52);
+ printf(" ... %d\n\n", (int)w);
+
+ printf("fn_12 ...\n");
+ w =3D fn_12(42,43,44,45,46,47,48,49,50,51,52,53);
+ printf(" ... %d\n\n", (int)w);
+
return 0;
}
-
Modified: trunk/memcheck/tests/wrap6.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/wrap6.stdout.exp 2006-03-11 12:58:03 UTC (rev 57=
46)
+++ trunk/memcheck/tests/wrap6.stdout.exp 2006-03-11 13:20:41 UTC (rev 57=
47)
@@ -16,3 +16,54 @@
fn_2 wrapper post2 =3D 201956282
... 201956282
=20
+fn_3 ...
+fn_3 wrapper pre ( 42, 43, 44 )
+fn_3 wrapper post1 =3D -1985342033
+fn_3 wrapper post2 =3D -1985342033
+ ... -1985342033
+
+fn_4 ...
+fn_4 wrapper pre ( 42, 43, 44, 45 )
+fn_4 wrapper post1 =3D 1119208547
+ ... 1119208547
+
+fn_5 ...
+fn_5 wrapper pre ( 42, 43, 44, 45, 46 )
+fn_5 wrapper post1 =3D -1638411058
+ ... -1638411058
+
+fn_6 ...
+fn_6 wrapper pre ( 42, 43, 44, 45, 46, 47 )
+fn_6 wrapper post1 =3D 379190336
+ ... 379190336
+
+fn_7 ...
+fn_7 wrapper pre ( 42, 43, 44, 45, 46, 47, 48 )
+fn_7 wrapper post1 =3D -1634577206
+ ... -1634577206
+
+fn_8 ...
+fn_8 wrapper pre ( 42, 43, 44, 45, 46, 47, 48, 49 )
+fn_8 wrapper post1 =3D 1977785290
+ ... 1977785290
+
+fn_9 ...
+fn_9 wrapper pre ( 42, 43, 44, 45, 46, 47, 48, 49, 50 )
+fn_9 wrapper post1 =3D -892905021
+ ... -892905021
+
+fn_10 ...
+fn_10 wrapper pre ( 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 )
+fn_10 wrapper post1 =3D -726791237
+ ... -726791237
+
+fn_11 ...
+fn_11 wrapper pre ( 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52 )
+fn_11 wrapper post1 =3D 951678589
+ ... 951678589
+
+fn_12 ...
+fn_12 wrapper pre ( 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53 )
+fn_12 wrapper post1 =3D 1071266195
+ ... 1071266195
+
|
|
From: <sv...@va...> - 2006-03-11 12:58:10
|
Author: sewardj
Date: 2006-03-11 12:58:03 +0000 (Sat, 11 Mar 2006)
New Revision: 5746
Log:
Fix comment typo.
Modified:
trunk/memcheck/memcheck.h
Modified: trunk/memcheck/memcheck.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/memcheck/memcheck.h 2006-03-11 12:57:41 UTC (rev 5745)
+++ trunk/memcheck/memcheck.h 2006-03-11 12:58:03 UTC (rev 5746)
@@ -73,7 +73,7 @@
/* !! ABIWARNING !! ABIWARNING !! ABIWARNING !! ABIWARNING !!=20
This enum comprises an ABI exported by Valgrind to programs
which use client requests. DO NOT CHANGE THE ORDER OF THESE
- ENTRIES, NOT DELETE ANY -- add new ones at the end. */
+ ENTRIES, NOR DELETE ANY -- add new ones at the end. */
typedef
enum {=20
VG_USERREQ__MAKE_NOACCESS =3D VG_USERREQ_TOOL_BASE('M','C'),
|
|
From: <sv...@va...> - 2006-03-11 12:58:00
|
Author: sewardj
Date: 2006-03-11 12:57:41 +0000 (Sat, 11 Mar 2006)
New Revision: 5745
Log:
Add missing x86-linux CALL_FN_W_11W macro.
Modified:
trunk/include/valgrind.h
Modified: trunk/include/valgrind.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/include/valgrind.h 2006-03-11 06:48:20 UTC (rev 5744)
+++ trunk/include/valgrind.h 2006-03-11 12:57:41 UTC (rev 5745)
@@ -451,6 +451,10 @@
do { volatile unsigned long _junk; \
CALL_FN_W_WW(_junk,fnptr,arg1,arg2); } while (0)
=20
+#define CALL_FN_v_WWW(fnptr, arg1,arg2,arg3) \
+ do { volatile unsigned long _junk; \
+ CALL_FN_W_WWW(_junk,fnptr,arg1,arg2,arg3); } while (0)
+
/* ---------------------------- x86 ---------------------------- */
=20
#if defined(ARCH_x86)
@@ -762,6 +766,47 @@
lval =3D (__typeof__(lval)) _res; \
} while (0)
=20
+#define CALL_FN_W_11W(lval, orig, arg1,arg2,arg3,arg4,arg5, \
+ arg6,arg7,arg8,arg9,arg10, \
+ arg11) \
+ do { \
+ volatile OrigFn _orig =3D (orig); \
+ volatile unsigned long _argvec[12]; \
+ volatile unsigned long _res; \
+ _argvec[0] =3D (unsigned long)_orig.nraddr; \
+ _argvec[1] =3D (unsigned long)(arg1); \
+ _argvec[2] =3D (unsigned long)(arg2); \
+ _argvec[3] =3D (unsigned long)(arg3); \
+ _argvec[4] =3D (unsigned long)(arg4); \
+ _argvec[5] =3D (unsigned long)(arg5); \
+ _argvec[6] =3D (unsigned long)(arg6); \
+ _argvec[7] =3D (unsigned long)(arg7); \
+ _argvec[8] =3D (unsigned long)(arg8); \
+ _argvec[9] =3D (unsigned long)(arg9); \
+ _argvec[10] =3D (unsigned long)(arg10); \
+ _argvec[11] =3D (unsigned long)(arg11); \
+ __asm__ volatile( \
+ "pushl 44(%%eax)\n\t" \
+ "pushl 40(%%eax)\n\t" \
+ "pushl 36(%%eax)\n\t" \
+ "pushl 32(%%eax)\n\t" \
+ "pushl 28(%%eax)\n\t" \
+ "pushl 24(%%eax)\n\t" \
+ "pushl 20(%%eax)\n\t" \
+ "pushl 16(%%eax)\n\t" \
+ "pushl 12(%%eax)\n\t" \
+ "pushl 8(%%eax)\n\t" \
+ "pushl 4(%%eax)\n\t" \
+ "movl (%%eax), %%eax\n\t" /* target->%eax */ \
+ VALGRIND_CALL_NOREDIR_EAX \
+ "addl $44, %%esp\n" \
+ : /*out*/ "=3Da" (_res) \
+ : /*in*/ "a" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
+ ); \
+ lval =3D (__typeof__(lval)) _res; \
+ } while (0)
+
#define CALL_FN_W_12W(lval, orig, arg1,arg2,arg3,arg4,arg5, \
arg6,arg7,arg8,arg9,arg10, \
arg11,arg12) \
@@ -1067,6 +1112,10 @@
#define VG_IS_TOOL_USERREQ(a, b, v) \
(VG_USERREQ_TOOL_BASE(a,b) =3D=3D ((v) & 0xffff0000))
=20
+/* !! ABIWARNING !! ABIWARNING !! ABIWARNING !! ABIWARNING !!=20
+ This enum comprises an ABI exported by Valgrind to programs
+ which use client requests. DO NOT CHANGE THE ORDER OF THESE
+ ENTRIES, NOR DELETE ANY -- add new ones at the end. */
typedef
enum { VG_USERREQ__RUNNING_ON_VALGRIND =3D 0x1001,
VG_USERREQ__DISCARD_TRANSLATIONS =3D 0x1002,
|
|
From: <js...@ac...> - 2006-03-11 10:44:57
|
Nightly build on minnie ( SuSE 10.0, ppc32 ) started at 2006-03-11 02:00:01 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 194 tests, 11 stderr failures, 5 stdout 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/test_fx (stdout) none/tests/ppc32/test_fx (stderr) none/tests/ppc32/test_gx (stdout) |
|
From: <sv...@va...> - 2006-03-11 06:48:24
|
Author: njn Date: 2006-03-11 06:48:20 +0000 (Sat, 11 Mar 2006) New Revision: 5744 Log: Add a comment. Modified: trunk/lackey/lk_main.c Modified: trunk/lackey/lk_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/lackey/lk_main.c 2006-03-10 22:17:57 UTC (rev 5743) +++ trunk/lackey/lk_main.c 2006-03-11 06:48:20 UTC (rev 5744) @@ -38,6 +38,9 @@ // Instrumentation", 2004, for details about the few loads and stores th= at // it misses, and other caveats about the accuracy of the address trace. // +// [Actually, the traces aren't quite right because instructions that mo= dify +// a memory location are treated like a load followed by a store.] +// // If you want to modify how the memory traces are printed/gathered, loo= k at // the code that is controlled by the variable 'lk_clo_trace_mem' and th= e // functions 'trace_load()' and 'trace_mem'.. With a bit of effort you |
|
From: <js...@ac...> - 2006-03-11 05:01:32
|
Nightly build on phoenix ( SuSE 10.0 ) started at 2006-03-11 03:30:01 GMT Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 225 tests, 6 stderr failures, 0 stdout 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) ================================================= == Results from 24 hours ago == ================================================= Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 225 tests, 6 stderr failures, 1 stdout failure ================= memcheck/tests/leak-tree (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/tls (stdout) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sat Mar 11 03:53:03 2006 --- new.short Sat Mar 11 04:10:01 2006 *************** *** 10,12 **** ! == 225 tests, 6 stderr failures, 1 stdout failure ================= memcheck/tests/leak-tree (stderr) --- 10,12 ---- ! == 225 tests, 6 stderr failures, 0 stdout failures ================= memcheck/tests/leak-tree (stderr) *************** *** 15,17 **** memcheck/tests/x86/scalar_supp (stderr) - none/tests/tls (stdout) none/tests/x86/faultstatus (stderr) --- 15,16 ---- |
|
From: Tom H. <to...@co...> - 2006-03-11 03:44:10
|
Nightly build on dunsmere ( athlon, Fedora Core 4 ) started at 2006-03-11 03:30:08 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 227 tests, 7 stderr failures, 1 stdout failure ================= 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) memcheck/tests/x86/sse1_memory (stdout) none/tests/x86/faultstatus (stderr) none/tests/x86/int (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 == 227 tests, 8 stderr failures, 1 stdout failure ================= memcheck/tests/leak-tree (stderr) memcheck/tests/mempool (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/sse1_memory (stdout) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sat Mar 11 03:37:15 2006 --- new.short Sat Mar 11 03:44:04 2006 *************** *** 8,12 **** ! == 227 tests, 8 stderr failures, 1 stdout failure ================= memcheck/tests/leak-tree (stderr) - memcheck/tests/mempool (stderr) memcheck/tests/pointer-trace (stderr) --- 8,11 ---- ! == 227 tests, 7 stderr failures, 1 stdout failure ================= memcheck/tests/leak-tree (stderr) memcheck/tests/pointer-trace (stderr) |
|
From: <js...@ac...> - 2006-03-11 03:43:38
|
Nightly build on g5 ( YDL 4.0, ppc970 ) started at 2006-03-11 04:40:00 CET Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... failed Last 20 lines of verbose log follow echo mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Get_count': mpiwrap.c:865: warning: implicit declaration of function `CALL_FN_W_WWW' mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Testall': mpiwrap.c:1266: warning: implicit declaration of function `CALL_FN_W_WWWW' mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Iprobe': mpiwrap.c:1298: warning: implicit declaration of function `CALL_FN_W_5W' mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Sendrecv': mpiwrap.c:1371: warning: implicit declaration of function `CALL_FN_W_12W' mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Gather': mpiwrap.c:1498: warning: implicit declaration of function `CALL_FN_W_8W' mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Accumulate': mpiwrap.c:1952: warning: implicit declaration of function `CALL_FN_W_9W' mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Type_create_darray': mpiwrap.c:2189: warning: implicit declaration of function `CALL_FN_W_10W' mpicc: No such file or directory make[2]: *** [libmpiwrap.so] Error 1 make[2]: Leaving directory `/home/sewardj/Nightly/valgrind/auxprogs' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/sewardj/Nightly/valgrind' make: *** [all] Error 2 ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... failed Last 20 lines of verbose log follow echo mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Waitall': mpiwrap.c:1069: warning: implicit declaration of function `CALL_FN_W_WWW' mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Iprobe': mpiwrap.c:1101: warning: implicit declaration of function `CALL_FN_W_5W' mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Sendrecv': mpiwrap.c:1139: warning: implicit declaration of function `CALL_FN_W_12W' mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Gather': mpiwrap.c:1230: warning: implicit declaration of function `CALL_FN_W_8W' mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Accumulate': mpiwrap.c:1577: warning: implicit declaration of function `CALL_FN_W_9W' mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Attr_get': mpiwrap.c:1590: warning: implicit declaration of function `CALL_FN_W_WWWW' mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Type_create_darray': mpiwrap.c:1814: warning: implicit declaration of function `CALL_FN_W_10W' mpicc: No such file or directory make[2]: *** [libmpiwrap.so] Error 1 make[2]: Leaving directory `/home/sewardj/Nightly/valgrind/auxprogs' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/sewardj/Nightly/valgrind' make: *** [all] Error 2 ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sat Mar 11 04:41:52 2006 --- new.short Sat Mar 11 04:43:34 2006 *************** *** 6,21 **** Last 20 lines of verbose log follow echo ! mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Waitall': ! mpiwrap.c:1069: warning: implicit declaration of function `CALL_FN_W_WWW' mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Iprobe': ! mpiwrap.c:1101: warning: implicit declaration of function `CALL_FN_W_5W' mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Sendrecv': ! mpiwrap.c:1139: warning: implicit declaration of function `CALL_FN_W_12W' mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Gather': ! mpiwrap.c:1230: warning: implicit declaration of function `CALL_FN_W_8W' mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Accumulate': ! mpiwrap.c:1577: warning: implicit declaration of function `CALL_FN_W_9W' ! mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Attr_get': ! mpiwrap.c:1590: warning: implicit declaration of function `CALL_FN_W_WWWW' mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Type_create_darray': ! mpiwrap.c:1814: warning: implicit declaration of function `CALL_FN_W_10W' mpicc: No such file or directory --- 6,21 ---- Last 20 lines of verbose log follow echo ! mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Get_count': ! mpiwrap.c:865: warning: implicit declaration of function `CALL_FN_W_WWW' ! mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Testall': ! mpiwrap.c:1266: warning: implicit declaration of function `CALL_FN_W_WWWW' mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Iprobe': ! mpiwrap.c:1298: warning: implicit declaration of function `CALL_FN_W_5W' mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Sendrecv': ! mpiwrap.c:1371: warning: implicit declaration of function `CALL_FN_W_12W' mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Gather': ! mpiwrap.c:1498: warning: implicit declaration of function `CALL_FN_W_8W' mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Accumulate': ! mpiwrap.c:1952: warning: implicit declaration of function `CALL_FN_W_9W' mpiwrap.c: In function `_vgwZU_libmpiZdsoZa_PMPI_Type_create_darray': ! mpiwrap.c:2189: warning: implicit declaration of function `CALL_FN_W_10W' mpicc: No such file or directory |
|
From: Tom H. <th...@cy...> - 2006-03-11 03:32:43
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2006-03-11 03:15:02 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 226 tests, 21 stderr failures, 1 stdout failure ================= 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-03-11 03:29:55
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2006-03-11 03:00:04 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 249 tests, 7 stderr failures, 2 stdout 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/tls (stdout) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2006-03-11 03:25:41
|
Nightly build on dellow ( x86_64, Fedora Core 4 ) started at 2006-03-11 03:10:12 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 249 tests, 5 stderr failures, 1 stdout failure ================= memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/sse1_memory (stdout) none/tests/amd64/faultstatus (stderr) none/tests/x86/faultstatus (stderr) none/tests/x86/int (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 == 249 tests, 6 stderr failures, 1 stdout failure ================= memcheck/tests/pointer-trace (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/x86/faultstatus (stderr) none/tests/x86/int (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sat Mar 11 03:18:37 2006 --- new.short Sat Mar 11 03:25:30 2006 *************** *** 8,11 **** ! == 249 tests, 6 stderr failures, 1 stdout failure ================= ! memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) --- 8,10 ---- ! == 249 tests, 5 stderr failures, 1 stdout failure ================= memcheck/tests/x86/scalar (stderr) |
|
From: Tom H. <th...@cy...> - 2006-03-11 03:22:08
|
Nightly build on aston ( x86_64, Fedora Core 3 ) started at 2006-03-11 03:05:11 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 249 tests, 6 stderr failures, 1 stdout failure ================= 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/x86/faultstatus (stderr) none/tests/x86/int (stderr) |