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
(25) |
2
(25) |
3
(5) |
4
(13) |
|
5
(4) |
6
(8) |
7
(6) |
8
|
9
(10) |
10
(15) |
11
(9) |
|
12
(14) |
13
(10) |
14
(24) |
15
(41) |
16
(13) |
17
(9) |
18
(3) |
|
19
(10) |
20
(11) |
21
(28) |
22
(36) |
23
(52) |
24
(36) |
25
(12) |
|
26
(31) |
27
(27) |
28
(20) |
29
(15) |
30
(22) |
31
(17) |
|
|
From: <sv...@va...> - 2009-07-01 23:56:29
|
Author: weidendo
Date: 2009-07-02 00:56:23 +0100 (Thu, 02 Jul 2009)
New Revision: 10399
Log:
Fix handling of multiple signal deliveries in a row
This fixes bug 136154.
Background:
The function stack - CLG_(current_fn_stack) - is a stack of
pointers to the fn_node structs of the currently active
functions. This stack is used for determining current context
from call chain to current function, and modified on entering
(via push_cxt) and leaving a function.
Entering a signal handler will push a 0 to the function stack
to make the context only dependend on the call chain inside of
the signal handler.
Thus, delivering two signals in a row should push two times a
0 value onto the function stack. However, the second 0-push was
incorrectly suppressed, leading to a failed assertion when
returning from the 2nd signal handler.
This also fixes a bug with incorrectly zeroing global cost
counters when changing the execution context, introduced with
r10386.
Modified:
trunk/callgrind/context.c
trunk/callgrind/threads.c
Modified: trunk/callgrind/context.c
===================================================================
--- trunk/callgrind/context.c 2009-07-01 18:46:27 UTC (rev 10398)
+++ trunk/callgrind/context.c 2009-07-01 23:56:23 UTC (rev 10399)
@@ -276,7 +276,7 @@
/**
* Change execution context by calling a new function from current context
- *
+ * Pushing 0x0 specifies a marker for a signal handler entry
*/
void CLG_(push_cxt)(fn_node* fn)
{
@@ -294,7 +294,7 @@
cs->entry[cs->sp].cxt = CLG_(current_state).cxt;
cs->entry[cs->sp].fn_sp = CLG_(current_fn_stack).top - CLG_(current_fn_stack).bottom;
- if (*(CLG_(current_fn_stack).top) == fn) return;
+ if (fn && (*(CLG_(current_fn_stack).top) == fn)) return;
if (fn && (fn->group>0) &&
((*(CLG_(current_fn_stack).top))->group == fn->group)) return;
@@ -318,11 +318,10 @@
CLG_(current_fn_stack).size = new_size;
}
- if (*(CLG_(current_fn_stack).top) == 0) {
+ if (fn && (*(CLG_(current_fn_stack).top) == 0)) {
UInt *pactive;
/* this is first function: increment its active count */
- CLG_ASSERT(fn != 0);
pactive = CLG_(get_fn_entry)(fn->number);
(*pactive)++;
}
Modified: trunk/callgrind/threads.c
===================================================================
--- trunk/callgrind/threads.c 2009-07-01 18:46:27 UTC (rev 10398)
+++ trunk/callgrind/threads.c 2009-07-01 23:56:23 UTC (rev 10399)
@@ -208,17 +208,16 @@
/* save current execution state */
exec_state_save();
- /* setup current state for a spontaneous call */
- CLG_(init_exec_state)( &CLG_(current_state) );
- CLG_(push_cxt)(0);
-
/* setup new cxtinfo struct for this signal handler */
es = push_exec_state(sigNum);
- CLG_(init_cost)( CLG_(sets).full, es->cost);
+ // because of this, below call to init_exec_state will zero es->cost
CLG_(current_state).cost = es->cost;
es->call_stack_bottom = CLG_(current_call_stack).sp;
+ /* setup current state for a spontaneous call */
+ CLG_(init_exec_state)( &CLG_(current_state) );
CLG_(current_state).sig = sigNum;
+ CLG_(push_cxt)(0);
}
/* Run post-signal if the stackpointer for call stack is at
@@ -418,6 +417,7 @@
es->jmps_passed = CLG_(current_state).jmps_passed;
es->bbcc = CLG_(current_state).bbcc;
es->nonskipped = CLG_(current_state).nonskipped;
+ CLG_ASSERT(es->cost == CLG_(current_state).cost);
CLG_DEBUGIF(1) {
CLG_DEBUG(1, " cxtinfo_save(sig %d): collect %s, jmps_passed %d\n",
|
|
From: Bart V. A. <bar...@gm...> - 2009-07-01 19:48:31
|
On Wed, Jul 1, 2009 at 1:59 AM, Nicholas
Nethercote<n.n...@gm...> wrote:
> On Tue, Jun 30, 2009 at 5:47 PM, Bart Van
> Assche<bar...@gm...> wrote:
>>
>> Nightly build on georgia-tech-cellbuzz-native ( cellbuzz, ppc64, Fedora 7, native )
>> =================================================
>> == Difference between 24 hours ago and now ==
>> =================================================
>>
>> *** old.short Tue Jun 30 03:01:12 2009
>> --- new.short Tue Jun 30 03:47:06 2009
>> ***************
>> *** 8,10 ****
>>
>> ! == 419 tests, 36 stderr failures, 12 stdout failures, 0 post failures ==
>> memcheck/tests/deep_templates (stdout)
>> --- 8,10 ----
>>
>> ! == 420 tests, 40 stderr failures, 13 stdout failures, 0 post failures ==
>> memcheck/tests/deep_templates (stdout)
>> ***************
>> *** 21,22 ****
>> --- 21,23 ----
>> memcheck/tests/wrap8 (stderr)
>> + none/tests/empty-exe (stderr)
>> none/tests/linux/mremap (stderr)
>> ***************
>> *** 30,33 ****
>> --- 31,38 ----
>> none/tests/ppc64/round (stdout)
>> + none/tests/shell (stdout)
>> + none/tests/shell (stderr)
>> + none/tests/shell_valid1 (stderr)
>> none/tests/shell_valid2 (stderr)
>> none/tests/shell_valid3 (stderr)
>> + none/tests/shell_zerolength (stderr)
>> helgrind/tests/hg05_race2 (stderr)
>
> The shell failures could be due to r10387 and r10384. Any chance you
> could take a look at this? It looks like select_platform() in
> coregrind/launcher-linux.c might be returning NULL in cases it
> shouldn't. If you could do some printf debugging or GDB tracing that
> would be really helpful... thanks.
After having applied the patch below I get the following results:
$ perl tests/vg_regtest none
...
$ grep Assert none/tests/*diff*
none/tests/cmdline6.stderr.diff:+valgrind: launcher-linux.c:193:
select_platform: Assertion `platform' failed.
none/tests/empty-exe.stderr.diff:+valgrind: launcher-linux.c:131:
select_platform: Assertion `0' failed.
none/tests/shell_binaryfile.stderr.diff:+valgrind:
launcher-linux.c:193: select_platform: Assertion `platform' failed.
none/tests/shell_dir.stderr.diff:+valgrind: launcher-linux.c:131:
select_platform: Assertion `0' failed.
none/tests/shell_nonexec.stderr.diff:+valgrind: launcher-linux.c:193:
select_platform: Assertion `platform' failed.
none/tests/shell_valid2.stderr.diff:+valgrind: launcher-linux.c:193:
select_platform: Assertion `platform' failed.
none/tests/shell_zerolength.stderr.diff:+valgrind:
launcher-linux.c:131: select_platform: Assertion `0' failed.
none/tests/shell_zerolength.stderr.diff-dash:+valgrind:
launcher-linux.c:131: select_platform: Assertion `0' failed.
svn diff coregrind/launcher-linux.c
Index: coregrind/launcher-linux.c
===================================================================
--- coregrind/launcher-linux.c (revision 10398)
+++ coregrind/launcher-linux.c (working copy)
@@ -116,6 +116,8 @@
ssize_t n_bytes;
const char *platform = NULL;
+ assert(clientname);
+
if (strchr(clientname, '/') == NULL)
clientname = find_client(clientname);
@@ -126,6 +128,7 @@
n_bytes = read(fd, header, sizeof(header));
close(fd);
if (n_bytes < 2) {
+ assert(0);
return NULL;
}
@@ -151,6 +154,7 @@
header[i] = '\0';
platform = select_platform(interp);
+ assert(platform);
} else if (n_bytes >= SELFMAG && memcmp(header, ELFMAG, SELFMAG) == 0) {
@@ -186,6 +190,7 @@
}
}
+ assert(platform);
return platform;
}
|
|
From: <sv...@va...> - 2009-07-01 18:46:34
|
Author: bart
Date: 2009-07-01 19:46:27 +0100 (Wed, 01 Jul 2009)
New Revision: 10398
Log:
Switched to the just introduced ANNOTATE_*() macro's.
Modified:
trunk/drd/tests/annotate_rwlock.c
Modified: trunk/drd/tests/annotate_rwlock.c
===================================================================
--- trunk/drd/tests/annotate_rwlock.c 2009-07-01 18:45:45 UTC (rev 10397)
+++ trunk/drd/tests/annotate_rwlock.c 2009-07-01 18:46:27 UTC (rev 10398)
@@ -67,7 +67,7 @@
assert(p->writer_count >= 0);
assert(p->reader_count == 0 || p->writer_count == 0);
__sync_fetch_and_sub(&p->locked, 1);
- ANNOTATE_RWLOCK_ACQUIRED(p, 0);
+ ANNOTATE_READERLOCK_ACQUIRED(p);
}
static void rwlock_wrlock(rwlock_t* p)
@@ -86,7 +86,7 @@
assert(p->writer_count >= 0);
assert(p->reader_count == 0 || p->writer_count == 0);
__sync_fetch_and_sub(&p->locked, 1);
- ANNOTATE_RWLOCK_ACQUIRED(p, 1);
+ ANNOTATE_WRITERLOCK_ACQUIRED(p);
}
static void rwlock_unlock(rwlock_t* p)
@@ -96,12 +96,12 @@
if (p->reader_count > 0)
{
p->reader_count--;
- ANNOTATE_RWLOCK_RELEASED(p, 0);
+ ANNOTATE_READERLOCK_RELEASED(p);
}
else
{
p->writer_count--;
- ANNOTATE_RWLOCK_RELEASED(p, 1);
+ ANNOTATE_WRITERLOCK_RELEASED(p);
}
assert(p->reader_count >= 0);
assert(p->writer_count >= 0);
|
|
From: <sv...@va...> - 2009-07-01 18:45:56
|
Author: bart Date: 2009-07-01 19:45:45 +0100 (Wed, 01 Jul 2009) New Revision: 10397 Log: Added four more ANNOTATE_*() macro's / removed the API-warning. Modified: trunk/drd/drd.h Modified: trunk/drd/drd.h =================================================================== --- trunk/drd/drd.h 2009-07-01 18:43:11 UTC (rev 10396) +++ trunk/drd/drd.h 2009-07-01 18:45:45 UTC (rev 10397) @@ -84,10 +84,13 @@ */ #define DRD_TRACE_VAR(x) DRDCL_(trace_range)(&(x), sizeof(x)) -/* !! APIWARNING !! APIWARNING !! APIWARNING !! APIWARNING !! - The semantics and the names of the macro's defined below are still - under discussion and subject to change without notice. -*/ +/** + * @defgroup RaceDetectionAnnotations Data race detection annotations. + * + * @see See also the source file <a href="http://code.google.com/p/google-perftools/source/browse/trunk/src/base/dynamic_annotations.h">dynamic_annotations.h</a> + * in the ThreadSanitizer project. + */ +/*@{*/ /** * Tell DRD to insert a mark. addr is the address of an object that is not a @@ -167,6 +170,18 @@ DRDCL_(annotate_rwlock)(rwlock, 2, is_w) /** + * Tell DRD that a reader lock has been acquired on a reader-writer + * synchronization object. + */ +#define ANNOTATE_READERLOCK_ACQUIRED(rwlock) ANNOTATE_RWLOCK_ACQUIRED(rwlock, 0) + +/** + * Tell DRD that a writer lock has been acquired on a reader-writer + * synchronization object. + */ +#define ANNOTATE_WRITERLOCK_ACQUIRED(rwlock) ANNOTATE_RWLOCK_ACQUIRED(rwlock, 1) + +/** * Tell DRD that a reader-writer lock is about to be released. is_w == 1 means * that a write lock is about to be released, is_w == 0 means that a read lock * is about to be released. @@ -175,6 +190,16 @@ DRDCL_(annotate_rwlock)(rwlock, 3, is_w) /** + * Tell DRD that a reader lock is about to be released. + */ +#define ANNOTATE_READERLOCK_RELEASED(rwlock) ANNOTATE_RWLOCK_RELEASED(rwlock, 0) + +/** + * Tell DRD that a writer lock is about to be released. + */ +#define ANNOTATE_WRITERLOCK_RELEASED(rwlock) ANNOTATE_RWLOCK_RELEASED(rwlock, 1) + +/** * Tell DRD that a FIFO queue has been created. The abbreviation PCQ stands for * <em>producer-consumer</em>. */ @@ -243,10 +268,7 @@ */ #define ANNOTATE_THREAD_NAME(name) DRDCL_(set_thread_name)(name) -/* !! APIWARNING !! APIWARNING !! APIWARNING !! APIWARNING !! - The semantics and the names of the macro's defined above are still - under discussion and subject to change without notice. -*/ +/*@}*/ /* !! ABIWARNING !! ABIWARNING !! ABIWARNING !! ABIWARNING !! |
|
From: <sv...@va...> - 2009-07-01 18:43:18
|
Author: bart
Date: 2009-07-01 19:43:11 +0100 (Wed, 01 Jul 2009)
New Revision: 10396
Log:
Updated test instructions.
Modified:
trunk/drd/Testing.txt
Modified: trunk/drd/Testing.txt
===================================================================
--- trunk/drd/Testing.txt 2009-07-01 18:42:36 UTC (rev 10395)
+++ trunk/drd/Testing.txt 2009-07-01 18:43:11 UTC (rev 10396)
@@ -69,6 +69,8 @@
./configure
export OMP_NUM_THREADS=4
make -j2 -s MEMCHECK="$HOME/software/valgrind/vg-in-place --tool=drd --check-stack-var=yes --var-info=yes --quiet" check
+ 5. Expected result: 776 tests / 23 expected failures / 147m24s user time
+ on a E8400 CPU @ 3 GHz.
12. Test DRD with Firefox. First build and install Firefox 3:
drd/scripts/download-and-build-firefox
|
|
From: <sv...@va...> - 2009-07-01 18:42:41
|
Author: bart Date: 2009-07-01 19:42:36 +0100 (Wed, 01 Jul 2009) New Revision: 10395 Log: Reran this script and updated the results table. Modified: trunk/drd/scripts/run-splash2 Modified: trunk/drd/scripts/run-splash2 =================================================================== --- trunk/drd/scripts/run-splash2 2009-07-01 11:59:20 UTC (rev 10394) +++ trunk/drd/scripts/run-splash2 2009-07-01 18:42:36 UTC (rev 10395) @@ -136,19 +136,19 @@ # Results: native native native none none DRD DRD HG ITC ITC # -p1 -p2 -p4 -p1 -p4 -p4 -p4+f -p4 -p4 -p4+f # .......................................................................................................................... -# Cholesky 0.14 12016 0.07 22016 0.62 41328 7.9 4.60 2.1 2.13 20 2.39 11 2.59 23 6.09 239 82 -# FFT 0.02 6692 0.02 15571 0.02 32304 17.0 7.92 18.0 2.41 154 2.81 56 3.06 105 5.42 90 41 -# LU, contiguous 0.07 4100 0.04 12304 0.05 28712 12.7 12.29 18.0 2.62 145 2.73 71 3.16 143 5.53 428 128 -# Ocean, contiguous 0.22 16848 0.18 25384 0.15 42528 6.5 3.75 10.4 2.09 117 2.52 85 2.78 272 5.95 90 28 -# Radix 0.20 15136 0.13 23336 0.11 40411 12.9 4.06 23.7 2.13 69 2.57 46 2.77 111 5.94 222 56 -# Raytrace 0.64 207104 0.48 215637 0.48 232704 8.7 1.22 11.5 1.20 378 1.31 87 1.36 213 3.79 172 53 -# Water-n2 0.17 10696 0.09 27072 0.10 59832 13.1 5.40 22.7 1.79 4422 2.82 1018 2.95 104 3.54 189 39 -# Water-sp 0.19 4444 0.11 13536 0.10 29928 11.0 11.42 22.1 2.52 382 3.03 55 3.30 93 4.76 183 34 +# Cholesky 0.09 12016 0.06 22016 0.55 42352 13.4 4.86 2.4 2.08 22 2.34 11 2.53 25 5.94 239 82 +# FFT 0.02 6692 0.02 15912 0.02 31963 16.5 7.92 18.0 2.43 151 2.97 53 3.22 103 5.48 90 41 +# LU, contiguous 0.07 4100 0.04 12304 0.04 28712 12.9 12.29 22.5 2.62 180 2.87 87 3.16 178 5.53 428 128 +# Ocean, contiguous 0.22 16848 0.14 25384 0.15 42528 6.6 3.75 10.5 2.09 112 2.65 77 2.90 271 5.95 90 28 +# Radix 0.20 15136 0.10 23336 0.13 40069 12.9 4.06 20.2 2.15 58 2.66 38 2.90 95 6.03 222 56 +# Raytrace 0.69 207104 0.48 215296 0.48 232362 8.1 1.22 11.6 1.20 422 1.35 76 1.38 212 3.78 172 53 +# Water-n2 0.16 10696 0.09 27072 0.11 59832 14.1 5.40 20.4 1.79 3220 2.98 256 3.04 94 3.54 189 39 +# Water-sp 0.20 4444 0.10 13536 0.10 29928 10.5 11.42 21.3 2.52 399 3.03 53 3.44 93 4.76 183 34 # .......................................................................................................................... -# geometric mean 0.14 13024 0.09 25818 0.12 47843 10.8 5.17 13.3 2.06 197 2.46 73 2.67 110 5.03 180 51 +# geometric mean 0.14 13024 0.09 25883 0.12 47866 11.4 5.21 13.4 2.06 195 2.54 59 2.73 110 5.03 180 51 # .......................................................................................................................... # Hardware: dual-core Intel Core2 Duo E6750, 2.66 GHz, 4 MB L2 cache, 2 GB RAM. -# Software: openSUSE 11.0 (64-bit edition), runlevel 3, gcc 4.3.1, 32 bit executables, valgrind trunk r10339. +# Software: openSUSE 11.0 (64-bit edition), runlevel 3, gcc 4.3.1, 32 bit SPLASH-2 executables, valgrind trunk r10380. ############################################################################################################################ #### |
|
From: Nicholas N. <n.n...@gm...> - 2009-07-01 17:20:58
|
Nightly build on ocean32 ( Ubuntu 9.04, x86_64 (32-bit only) )
Started at 2009-07-02 03:00:01 EST
Ended at 2009-07-02 03:13:10 EST
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
== 460 tests, 11 stderr failures, 2 stdout failures, 0 post failures ==
memcheck/tests/linux/stack_switch (stderr)
memcheck/tests/origin1-yes (stderr)
memcheck/tests/origin5-bz2 (stderr)
none/tests/empty-exe (stderr)
none/tests/linux/mremap2 (stdout)
none/tests/shell (stdout)
none/tests/shell (stderr)
none/tests/shell_valid1 (stderr)
none/tests/shell_valid2 (stderr)
none/tests/shell_valid3 (stderr)
none/tests/shell_zerolength (stderr)
exp-ptrcheck/tests/pth_create (stderr)
exp-ptrcheck/tests/pth_specific (stderr)
=================================================
== 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
mv -f .deps/callgrind_x86_linux-dump.Tpo .deps/callgrind_x86_linux-dump.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -I../cachegrind -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT callgrind_x86_linux-events.o -MD -MP -MF .deps/callgrind_x86_linux-events.Tpo -c -o callgrind_x86_linux-events.o `test -f 'events.c' || echo './'`events.c
mv -f .deps/callgrind_x86_linux-events.Tpo .deps/callgrind_x86_linux-events.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -I../cachegrind -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT callgrind_x86_linux-fn.o -MD -MP -MF .deps/callgrind_x86_linux-fn.Tpo -c -o callgrind_x86_linux-fn.o `test -f 'fn.c' || echo './'`fn.c
mv -f .deps/callgrind_x86_linux-fn.Tpo .deps/callgrind_x86_linux-fn.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -I../cachegrind -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT callgrind_x86_linux-jumps.o -MD -MP -MF .deps/callgrind_x86_linux-jumps.Tpo -c -o callgrind_x86_linux-jumps.o `test -f 'jumps.c' || echo './'`jumps.c
mv -f .deps/callgrind_x86_linux-jumps.Tpo .deps/callgrind_x86_linux-jumps.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -I../cachegrind -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT callgrind_x86_linux-main.o -MD -MP -MF .deps/callgrind_x86_linux-main.Tpo -c -o callgrind_x86_linux-main.o `test -f 'main.c' || echo './'`main.c
main.c: In function 'addConstMemStoreStmt':
main.c:665: warning: passing argument 2 of 'IRStmt_Store' makes integer from pointer without a cast
main.c:665: error: too few arguments to function 'IRStmt_Store'
make[4]: *** [callgrind_x86_linux-main.o] Error 1
make[4]: Leaving directory `/home/njn/grind/nightly32/valgrind-old/callgrind'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/home/njn/grind/nightly32/valgrind-old/callgrind'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/njn/grind/nightly32/valgrind-old/callgrind'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/njn/grind/nightly32/valgrind-old'
make: *** [all] Error 2
=================================================
== Difference between 24 hours ago and now ==
=================================================
*** old.short Thu Jul 2 03:03:52 2009
--- new.short Thu Jul 2 03:13:10 2009
***************
*** 3,26 ****
Configuring valgrind ... done
! Building valgrind ... failed
- Last 20 lines of verbose log follow echo
- mv -f .deps/callgrind_x86_linux-dump.Tpo .deps/callgrind_x86_linux-dump.Po
- gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -I../cachegrind -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT callgrind_x86_linux-events.o -MD -MP -MF .deps/callgrind_x86_linux-events.Tpo -c -o callgrind_x86_linux-events.o `test -f 'events.c' || echo './'`events.c
- mv -f .deps/callgrind_x86_linux-events.Tpo .deps/callgrind_x86_linux-events.Po
- gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -I../cachegrind -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT callgrind_x86_linux-fn.o -MD -MP -MF .deps/callgrind_x86_linux-fn.Tpo -c -o callgrind_x86_linux-fn.o `test -f 'fn.c' || echo './'`fn.c
- mv -f .deps/callgrind_x86_linux-fn.Tpo .deps/callgrind_x86_linux-fn.Po
- gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -I../cachegrind -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT callgrind_x86_linux-jumps.o -MD -MP -MF .deps/callgrind_x86_linux-jumps.Tpo -c -o callgrind_x86_linux-jumps.o `test -f 'jumps.c' || echo './'`jumps.c
- mv -f .deps/callgrind_x86_linux-jumps.Tpo .deps/callgrind_x86_linux-jumps.Po
- gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -I../cachegrind -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT callgrind_x86_linux-main.o -MD -MP -MF .deps/callgrind_x86_linux-main.Tpo -c -o callgrind_x86_linux-main.o `test -f 'main.c' || echo './'`main.c
- main.c: In function 'addConstMemStoreStmt':
- main.c:665: warning: passing argument 2 of 'IRStmt_Store' makes integer from pointer without a cast
- main.c:665: error: too few arguments to function 'IRStmt_Store'
- make[4]: *** [callgrind_x86_linux-main.o] Error 1
- make[4]: Leaving directory `/home/njn/grind/nightly32/valgrind-old/callgrind'
- make[3]: *** [all-recursive] Error 1
- make[3]: Leaving directory `/home/njn/grind/nightly32/valgrind-old/callgrind'
- make[2]: *** [all] Error 2
- make[2]: Leaving directory `/home/njn/grind/nightly32/valgrind-old/callgrind'
- make[1]: *** [all-recursive] Error 1
- make[1]: Leaving directory `/home/njn/grind/nightly32/valgrind-old'
- make: *** [all] Error 2
--- 3,23 ----
Configuring valgrind ... done
! Building valgrind ... done
! Running regression tests ... failed
!
! Regression test results follow
!
! == 460 tests, 11 stderr failures, 2 stdout failures, 0 post failures ==
! memcheck/tests/linux/stack_switch (stderr)
! memcheck/tests/origin1-yes (stderr)
! memcheck/tests/origin5-bz2 (stderr)
! none/tests/empty-exe (stderr)
! none/tests/linux/mremap2 (stdout)
! none/tests/shell (stdout)
! none/tests/shell (stderr)
! none/tests/shell_valid1 (stderr)
! none/tests/shell_valid2 (stderr)
! none/tests/shell_valid3 (stderr)
! none/tests/shell_zerolength (stderr)
! exp-ptrcheck/tests/pth_create (stderr)
! exp-ptrcheck/tests/pth_specific (stderr)
=================================================
./valgrind-new/exp-ptrcheck/tests/pth_create.stderr.diff
=================================================
--- pth_create.stderr.exp 2009-07-02 03:04:15.000000000 +1000
+++ pth_create.stderr.out 2009-07-02 03:13:04.000000000 +1000
@@ -1,18 +1,31 @@
-Invalid write of size 4
+t8 = CASle(t22::t18->t1)
+exp-ptrcheck: h_main.c:4820 (schemeS): the 'impossible' happened.
+ at 0x........: report_and_quit (m_libcassert.c:145)
+ by 0x........: vgPlain_assert_fail (m_libcassert.c:216)
+ by 0x........: h_instrument (h_main.c:4820)
+ by 0x........: LibVEX_Translate (vex_main.c:500)
+ by 0x........: vgPlain_translate (m_translate.c:1517)
+ by 0x........: vgPlain_scheduler (scheduler.c:844)
+ by 0x........: run_a_thread_NORETURN (syswrap-linux.c:91)
+
+sched status:
+ running_tid=1
+
+Thread 1: status = VgTs_Runnable
at 0x........: pthread_key_create (in /...libpthread...)
by 0x........: main (pth_create.c:17)
- Address 0x........ is 1 bytes inside the accessing pointer's
- legitimate range, a block of size 4 alloc'd
- at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: main (pth_create.c:14)
-Invalid write of size 4
- at 0x........: pthread_key_create (in /...libpthread...)
- by 0x........: main (pth_create.c:19)
- Address 0x........ is 0 bytes inside the accessing pointer's
- once-legitimate range, a block of size 4 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (pth_create.c:18)
-ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
+Note: see also the FAQ in the source distribution.
+It contains workarounds to several common problems.
+In particular, if Valgrind aborted or crashed after
+identifying problems in your program, there's a good chance
+that fixing those problems will prevent Valgrind aborting or
+crashing, especially if it happened in m_mallocfree.c.
+
+If that doesn't help, please report this bug to: www.valgrind.org
+
+In the bug report, send all the above text, the valgrind
+version, and what OS and version you are using. Thanks.
+
=================================================
./valgrind-new/exp-ptrcheck/tests/pth_specific.stderr.diff
=================================================
--- pth_specific.stderr.exp 2009-07-02 03:04:15.000000000 +1000
+++ pth_specific.stderr.out 2009-07-02 03:13:05.000000000 +1000
@@ -5,12 +5,33 @@
legitimate range, a block of size 100 alloc'd
at 0x........: malloc (vg_replace_malloc.c:...)
by 0x........: main (pth_specific.c:17)
+t8 = CASle(t22::t18->t1)
+exp-ptrcheck: h_main.c:4820 (schemeS): the 'impossible' happened.
+ at 0x........: report_and_quit (m_libcassert.c:145)
+ by 0x........: vgPlain_assert_fail (m_libcassert.c:216)
+ by 0x........: h_instrument (h_main.c:4820)
+ by 0x........: LibVEX_Translate (vex_main.c:500)
+ by 0x........: vgPlain_translate (m_translate.c:1517)
+ by 0x........: vgPlain_scheduler (scheduler.c:844)
+ by 0x........: run_a_thread_NORETURN (syswrap-linux.c:91)
-Invalid read of size 1
- at 0x........: main (pth_specific.c:27)
- Address 0x........ is 1 bytes before the accessing pointer's
- legitimate range, a block of size 100 alloc'd
- at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: main (pth_specific.c:17)
+sched status:
+ running_tid=1
+
+Thread 1: status = VgTs_Runnable
+ at 0x........: pthread_key_create (in /...libpthread...)
+ by 0x........: main (pth_specific.c:22)
+
+
+Note: see also the FAQ in the source distribution.
+It contains workarounds to several common problems.
+In particular, if Valgrind aborted or crashed after
+identifying problems in your program, there's a good chance
+that fixing those problems will prevent Valgrind aborting or
+crashing, especially if it happened in m_mallocfree.c.
+
+If that doesn't help, please report this bug to: www.valgrind.org
+
+In the bug report, send all the above text, the valgrind
+version, and what OS and version you are using. Thanks.
-ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/memcheck/tests/linux/stack_switch.stderr.diff
=================================================
--- stack_switch.stderr.exp 2009-07-02 03:04:30.000000000 +1000
+++ stack_switch.stderr.out 2009-07-02 03:08:39.000000000 +1000
@@ -0,0 +1,2 @@
+Syscall param clone(child_tidptr) contains uninitialised byte(s)
+ ...
=================================================
./valgrind-new/memcheck/tests/origin1-yes.stderr.diff
=================================================
--- origin1-yes.stderr.exp 2009-07-02 03:04:33.000000000 +1000
+++ origin1-yes.stderr.out 2009-07-02 03:08:57.000000000 +1000
@@ -47,7 +47,7 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin1-yes.c:101)
Uninitialised value was created
- at 0x........: brk (in /...libc...)
+ at 0x........: ??? (in /lib32/ld-2.9.so)
by 0x........: sbrk (in /...libc...)
by 0x........: main (origin1-yes.c:98)
=================================================
./valgrind-new/memcheck/tests/origin1-yes.stderr.diff-darwin
=================================================
--- origin1-yes.stderr.exp-darwin 2009-07-02 03:04:33.000000000 +1000
+++ origin1-yes.stderr.out 2009-07-02 03:08:57.000000000 +1000
@@ -44,7 +44,12 @@
Undef 7 of 8 (brk)
-(no complaint; sbrk initialises memory on Darwin)
+Conditional jump or move depends on uninitialised value(s)
+ at 0x........: main (origin1-yes.c:101)
+ Uninitialised value was created
+ at 0x........: ??? (in /lib32/ld-2.9.so)
+ by 0x........: sbrk (in /...libc...)
+ by 0x........: main (origin1-yes.c:98)
Undef 8 of 8 (MAKE_MEM_UNDEFINED)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2009-07-02 03:04:33.000000000 +1000
+++ origin5-bz2.stderr.out 2009-07-02 03:09:01.000000000 +1000
@@ -11,7 +11,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
@@ -19,7 +19,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
@@ -27,7 +27,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2820)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -38,7 +38,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2823)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -49,7 +49,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2854)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -60,7 +60,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2858)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -71,7 +71,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -82,7 +82,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2964)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -93,7 +93,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: fallbackSort (origin5-bz2.c:2269)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -104,7 +104,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: fallbackSort (origin5-bz2.c:2275)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2009-07-02 03:04:33.000000000 +1000
+++ origin5-bz2.stderr.out 2009-07-02 03:09:01.000000000 +1000
@@ -28,7 +28,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2820)
+ at 0x........: mainSort (origin5-bz2.c:2820)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -38,7 +39,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2823)
+ at 0x........: mainSort (origin5-bz2.c:2823)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -48,7 +50,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2855)
+ at 0x........: mainSort (origin5-bz2.c:2854)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -58,7 +61,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2859)
+ at 0x........: mainSort (origin5-bz2.c:2858)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -68,7 +72,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2963)
+ at 0x........: mainSort (origin5-bz2.c:2963)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -78,7 +83,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2964)
+ at 0x........: mainSort (origin5-bz2.c:2964)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2009-07-02 03:04:33.000000000 +1000
+++ origin5-bz2.stderr.out 2009-07-02 03:09:01.000000000 +1000
@@ -1,7 +1,7 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6481)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
at 0x........: handle_compress (origin5-bz2.c:4686)
@@ -9,85 +9,91 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
- at 0x........: BZ2_blockSort (origin5-bz2.c:2820)
+Use of uninitialised value of size 4
+ at 0x........: mainSort (origin5-bz2.c:2820)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
- at 0x........: BZ2_blockSort (origin5-bz2.c:2823)
+Use of uninitialised value of size 4
+ at 0x........: mainSort (origin5-bz2.c:2823)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
- at 0x........: BZ2_blockSort (origin5-bz2.c:2854)
+Use of uninitialised value of size 4
+ at 0x........: mainSort (origin5-bz2.c:2854)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
- at 0x........: BZ2_blockSort (origin5-bz2.c:2858)
+Use of uninitialised value of size 4
+ at 0x........: mainSort (origin5-bz2.c:2858)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
- at 0x........: BZ2_blockSort (origin5-bz2.c:2963)
+Use of uninitialised value of size 4
+ at 0x........: mainSort (origin5-bz2.c:2963)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
<truncated beyond 100 lines>
=================================================
./valgrind-new/none/tests/empty-exe.stderr.diff
=================================================
--- empty-exe.stderr.exp 2009-07-02 03:05:00.000000000 +1000
+++ empty-exe.stderr.out 2009-07-02 03:10:11.000000000 +1000
@@ -1,2 +1,2 @@
-
-
+valgrind: wrong ELF executable class (eg. 32-bit instead of 64-bit)
+valgrind: ./empty-exe: bad interpreter (/bin/sh): VG_(strerror): unknown error
=================================================
./valgrind-new/none/tests/linux/mremap2.stdout.diff
=================================================
--- mremap2.stdout.exp 2009-07-02 03:04:57.000000000 +1000
+++ mremap2.stdout.out 2009-07-02 03:10:16.000000000 +1000
@@ -27,38 +27,38 @@
..................................................
..................................................
-maymv 0 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 0 fixed 0 newsz 21 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 0 fixed 0 newsz 21 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 0 fixed 0 newsz 29 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 0 fixed 0 newsz 29 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 0 fixed 0 newsz 30 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 30 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 0 fixed 0 newsz 30 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
@@ -173,40 +173,40 @@
..................................................
..................................................
-maymv 1 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 1 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 1 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 1 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
-maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
-maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
..................................................
<truncated beyond 100 lines>
=================================================
./valgrind-new/none/tests/linux/mremap2.stdout.diff-glibc28-amd64
=================================================
--- mremap2.stdout.exp-glibc28-amd64 2009-07-02 03:04:57.000000000 +1000
+++ mremap2.stdout.out 2009-07-02 03:10:16.000000000 +1000
@@ -188,37 +188,37 @@
maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
..................................................
maymv 1 fixed 0 newsz 30 dstpo 1 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
..................................................
maymv 1 fixed 0 newsz 31 dstpo 0 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
..................................................
maymv 1 fixed 0 newsz 31 dstpo 1 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
..................................................
=================================================
./valgrind-new/none/tests/linux/mremap2.stdout.diff2
=================================================
--- mremap2.stdout.exp2 2009-07-02 03:04:57.000000000 +1000
+++ mremap2.stdout.out 2009-07-02 03:10:16.000000000 +1000
@@ -27,38 +27,38 @@
..................................................
..................................................
-maymv 0 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 0 fixed 0 newsz 21 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 0 fixed 0 newsz 21 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 0 fixed 0 newsz 29 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 0 fixed 0 newsz 29 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 0 fixed 0 newsz 30 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 30 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 0 fixed 0 newsz 30 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
@@ -173,52 +173,52 @@
..................................................
..................................................
-maymv 1 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 1 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 1 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 1 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
-maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
-maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
..................................................
<truncated beyond 100 lines>
=================================================
./valgrind-new/none/tests/shell.stderr.diff
=================================================
--- shell.stderr.exp 2009-07-02 03:05:00.000000000 +1000
+++ shell.stderr.out 2009-07-02 03:10:31.000000000 +1000
@@ -1,8 +1,3 @@
-./shell: ./x86/: is a directory
-./shell: ./shell.vgtest: Permission denied
-execve(0x........(./shell_badinterp), 0x........, 0x........) failed, errno 2
-EXEC FAILED: I can't recover from execve() failing, so I'm dying.
-Add more stringent tests in PRE(sys_execve), or work out how to recover.
-./shell: ./shell_binaryfile: cannot execute binary file
-./shell: ./shell_nosuchfile: No such file or directory
-./shell: shell_nosuchfile: command not found
+valgrind: wrong ELF executable class (eg. 32-bit instead of 64-bit)
+valgrind: wrong ELF executable class (eg. 32-bit instead of 64-bit)
+valgrind: ./shell: bad interpreter (/bin/sh): VG_(strerror): unknown error
=================================================
./valgrind-new/none/tests/shell.stderr.diff-dash
=================================================
--- shell.stderr.exp-dash 2009-07-02 03:05:00.000000000 +1000
+++ shell.stderr.out 2009-07-02 03:10:31.000000000 +1000
@@ -1,8 +1,3 @@
-./shell: 10: ./x86/: Permission denied
-./shell: 13: ./shell.vgtest: Permission denied
-execve(0x........(./shell_badinterp), 0x........, 0x........) failed, errno 2
-EXEC FAILED: I can't recover from execve() failing, so I'm dying.
-Add more stringent tests in PRE(sys_execve), or work out how to recover.
-./shell_binaryfile: 4: Syntax error: ")" unexpected
-./shell: 22: ./shell_nosuchfile: not found
-./shell: 25: shell_nosuchfile: not found
+valgrind: wrong ELF executable class (eg. 32-bit instead of 64-bit)
+valgrind: wrong ELF executable class (eg. 32-bit instead of 64-bit)
+valgrind: ./shell: bad interpreter (/bin/sh): VG_(strerror): unknown error
=================================================
./valgrind-new/none/tests/shell.stdout.diff
=================================================
--- shell.stdout.exp 2009-07-02 03:05:00.000000000 +1000
+++ shell.stdout.out 2009-07-02 03:10:31.000000000 +1000
@@ -1,10 +0,0 @@
-Execute a directory
-Execute a non-executable file
-Execute a script with a bad interpreter name
-Execute a binary file
-Execute a non-existent file
-Execute a non-existent file (2)
-Execute a valid script with a #! line
-Execute a valid script without a #! line
-Execute a valid script with #! but no interpname
-Execute a zero-length file
=================================================
./valgrind-new/none/tests/shell_valid1.stderr.diff
=================================================
--- shell_valid1.stderr.exp 2009-07-02 03:05:00.000000000 +1000
+++ shell_valid1.stderr.out 2009-07-02 03:10:31.000000000 +1000
@@ -0,0 +1,3 @@
+valgrind: wrong ELF executable class (eg. 32-bit instead of 64-bit)
+valgrind: wrong ELF executable class (eg. 32-bit instead of 64-bit)
+valgrind: ./shell_valid1: bad interpreter (/bin/sh): VG_(strerror): unknown error
=================================================
./valgrind-new/none/tests/shell_valid2.stderr.diff
=================================================
--- shell_valid2.stderr.exp 2009-07-02 03:05:00.000000000 +1000
+++ shell_valid2.stderr.out 2009-07-02 03:10:31.000000000 +1000
@@ -0,0 +1,2 @@
+valgrind: wrong ELF executable class (eg. 32-bit instead of 64-bit)
+valgrind: ./shell_valid2: bad interpreter (/bin/sh): VG_(strerror): unknown error
=================================================
./valgrind-new/none/tests/shell_valid3.stderr.diff
=================================================
--- shell_valid3.stderr.exp 2009-07-02 03:05:00.000000000 +1000
+++ shell_valid3.stderr.out 2009-07-02 03:10:31.000000000 +1000
@@ -0,0 +1,2 @@
+valgrind: wrong ELF executable class (eg. 32-bit instead of 64-bit)
+valgrind: ./shell_valid3: bad interpreter (/bin/sh): VG_(strerror): unknown error
=================================================
./valgrind-new/none/tests/shell_zerolength.stderr.diff
=================================================
--- shell_zerolength.stderr.exp 2009-07-02 03:05:00.000000000 +1000
+++ shell_zerolength.stderr.out 2009-07-02 03:10:31.000000000 +1000
@@ -0,0 +1,2 @@
+valgrind: wrong ELF executable class (eg. 32-bit instead of 64-bit)
+valgrind: ./shell_zerolength: bad interpreter (/bin/sh): VG_(strerror): unknown error
=================================================
./valgrind-new/none/tests/shell_zerolength.stderr.diff-dash
=================================================
--- shell_zerolength.stderr.exp-dash 2009-07-02 03:05:00.000000000 +1000
+++ shell_zerolength.stderr.out 2009-07-02 03:10:31.000000000 +1000
@@ -1 +1,2 @@
-Bus error
+valgrind: wrong ELF executable class (eg. 32-bit instead of 64-bit)
+valgrind: ./shell_zerolength: bad interpreter (/bin/sh): VG_(strerror): unknown error
|
|
From: Nicholas N. <n.n...@gm...> - 2009-07-01 16:15:36
|
Nightly build on ocean ( Ubuntu 9.04, x86_64 )
Started at 2009-07-02 02:00:02 EST
Ended at 2009-07-02 02:15:27 EST
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
== 497 tests, 2 stderr failures, 1 stdout failure, 0 post failures ==
none/tests/linux/mremap2 (stdout)
exp-ptrcheck/tests/pth_create (stderr)
exp-ptrcheck/tests/pth_specific (stderr)
=================================================
== 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
mv -f .deps/callgrind_amd64_linux-dump.Tpo .deps/callgrind_amd64_linux-dump.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_amd64=1 -DVGO_linux=1 -DVGP_amd64_linux=1 -m64 -fomit-frame-pointer -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -I../cachegrind -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT callgrind_amd64_linux-events.o -MD -MP -MF .deps/callgrind_amd64_linux-events.Tpo -c -o callgrind_amd64_linux-events.o `test -f 'events.c' || echo './'`events.c
mv -f .deps/callgrind_amd64_linux-events.Tpo .deps/callgrind_amd64_linux-events.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_amd64=1 -DVGO_linux=1 -DVGP_amd64_linux=1 -m64 -fomit-frame-pointer -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -I../cachegrind -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT callgrind_amd64_linux-fn.o -MD -MP -MF .deps/callgrind_amd64_linux-fn.Tpo -c -o callgrind_amd64_linux-fn.o `test -f 'fn.c' || echo './'`fn.c
mv -f .deps/callgrind_amd64_linux-fn.Tpo .deps/callgrind_amd64_linux-fn.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_amd64=1 -DVGO_linux=1 -DVGP_amd64_linux=1 -m64 -fomit-frame-pointer -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -I../cachegrind -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT callgrind_amd64_linux-jumps.o -MD -MP -MF .deps/callgrind_amd64_linux-jumps.Tpo -c -o callgrind_amd64_linux-jumps.o `test -f 'jumps.c' || echo './'`jumps.c
mv -f .deps/callgrind_amd64_linux-jumps.Tpo .deps/callgrind_amd64_linux-jumps.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_amd64=1 -DVGO_linux=1 -DVGP_amd64_linux=1 -m64 -fomit-frame-pointer -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -I../cachegrind -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT callgrind_amd64_linux-main.o -MD -MP -MF .deps/callgrind_amd64_linux-main.Tpo -c -o callgrind_amd64_linux-main.o `test -f 'main.c' || echo './'`main.c
main.c: In function 'addConstMemStoreStmt':
main.c:665: warning: passing argument 2 of 'IRStmt_Store' makes integer from pointer without a cast
main.c:665: error: too few arguments to function 'IRStmt_Store'
make[4]: *** [callgrind_amd64_linux-main.o] Error 1
make[4]: Leaving directory `/home/njn/grind/nightly/valgrind-old/callgrind'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/home/njn/grind/nightly/valgrind-old/callgrind'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/njn/grind/nightly/valgrind-old/callgrind'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/njn/grind/nightly/valgrind-old'
make: *** [all] Error 2
=================================================
== Difference between 24 hours ago and now ==
=================================================
*** old.short Thu Jul 2 02:04:50 2009
--- new.short Thu Jul 2 02:15:27 2009
***************
*** 3,26 ****
Configuring valgrind ... done
! Building valgrind ... failed
- Last 20 lines of verbose log follow echo
- mv -f .deps/callgrind_amd64_linux-dump.Tpo .deps/callgrind_amd64_linux-dump.Po
- gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_amd64=1 -DVGO_linux=1 -DVGP_amd64_linux=1 -m64 -fomit-frame-pointer -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -I../cachegrind -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT callgrind_amd64_linux-events.o -MD -MP -MF .deps/callgrind_amd64_linux-events.Tpo -c -o callgrind_amd64_linux-events.o `test -f 'events.c' || echo './'`events.c
- mv -f .deps/callgrind_amd64_linux-events.Tpo .deps/callgrind_amd64_linux-events.Po
- gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_amd64=1 -DVGO_linux=1 -DVGP_amd64_linux=1 -m64 -fomit-frame-pointer -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -I../cachegrind -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT callgrind_amd64_linux-fn.o -MD -MP -MF .deps/callgrind_amd64_linux-fn.Tpo -c -o callgrind_amd64_linux-fn.o `test -f 'fn.c' || echo './'`fn.c
- mv -f .deps/callgrind_amd64_linux-fn.Tpo .deps/callgrind_amd64_linux-fn.Po
- gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_amd64=1 -DVGO_linux=1 -DVGP_amd64_linux=1 -m64 -fomit-frame-pointer -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -I../cachegrind -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT callgrind_amd64_linux-jumps.o -MD -MP -MF .deps/callgrind_amd64_linux-jumps.Tpo -c -o callgrind_amd64_linux-jumps.o `test -f 'jumps.c' || echo './'`jumps.c
- mv -f .deps/callgrind_amd64_linux-jumps.Tpo .deps/callgrind_amd64_linux-jumps.Po
- gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_amd64=1 -DVGO_linux=1 -DVGP_amd64_linux=1 -m64 -fomit-frame-pointer -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -I../cachegrind -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT callgrind_amd64_linux-main.o -MD -MP -MF .deps/callgrind_amd64_linux-main.Tpo -c -o callgrind_amd64_linux-main.o `test -f 'main.c' || echo './'`main.c
- main.c: In function 'addConstMemStoreStmt':
- main.c:665: warning: passing argument 2 of 'IRStmt_Store' makes integer from pointer without a cast
- main.c:665: error: too few arguments to function 'IRStmt_Store'
- make[4]: *** [callgrind_amd64_linux-main.o] Error 1
- make[4]: Leaving directory `/home/njn/grind/nightly/valgrind-old/callgrind'
- make[3]: *** [all-recursive] Error 1
- make[3]: Leaving directory `/home/njn/grind/nightly/valgrind-old/callgrind'
- make[2]: *** [all] Error 2
- make[2]: Leaving directory `/home/njn/grind/nightly/valgrind-old/callgrind'
- make[1]: *** [all-recursive] Error 1
- make[1]: Leaving directory `/home/njn/grind/nightly/valgrind-old'
- make: *** [all] Error 2
--- 3,13 ----
Configuring valgrind ... done
! Building valgrind ... done
! Running regression tests ... failed
!
! Regression test results follow
!
! == 497 tests, 2 stderr failures, 1 stdout failure, 0 post failures ==
! none/tests/linux/mremap2 (stdout)
! exp-ptrcheck/tests/pth_create (stderr)
! exp-ptrcheck/tests/pth_specific (stderr)
=================================================
./valgrind-new/exp-ptrcheck/tests/pth_create.stderr.diff
=================================================
--- pth_create.stderr.exp 2009-07-02 02:05:13.000000000 +1000
+++ pth_create.stderr.out 2009-07-02 02:15:21.000000000 +1000
@@ -1,18 +1,31 @@
-Invalid write of size 4
+t9 = CASle(t27::t16->t15)
+exp-ptrcheck: h_main.c:4820 (schemeS): the 'impossible' happened.
+ at 0x........: report_and_quit (m_libcassert.c:145)
+ by 0x........: vgPlain_assert_fail (m_libcassert.c:216)
+ by 0x........: h_instrument (h_main.c:4820)
+ by 0x........: LibVEX_Translate (vex_main.c:500)
+ by 0x........: vgPlain_translate (m_translate.c:1517)
+ by 0x........: vgPlain_scheduler (scheduler.c:844)
+ by 0x........: run_a_thread_NORETURN (syswrap-linux.c:91)
+
+sched status:
+ running_tid=1
+
+Thread 1: status = VgTs_Runnable
at 0x........: pthread_key_create (in /...libpthread...)
by 0x........: main (pth_create.c:17)
- Address 0x........ is 1 bytes inside the accessing pointer's
- legitimate range, a block of size 4 alloc'd
- at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: main (pth_create.c:14)
-Invalid write of size 4
- at 0x........: pthread_key_create (in /...libpthread...)
- by 0x........: main (pth_create.c:19)
- Address 0x........ is 0 bytes inside the accessing pointer's
- once-legitimate range, a block of size 4 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (pth_create.c:18)
-ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
+Note: see also the FAQ in the source distribution.
+It contains workarounds to several common problems.
+In particular, if Valgrind aborted or crashed after
+identifying problems in your program, there's a good chance
+that fixing those problems will prevent Valgrind aborting or
+crashing, especially if it happened in m_mallocfree.c.
+
+If that doesn't help, please report this bug to: www.valgrind.org
+
+In the bug report, send all the above text, the valgrind
+version, and what OS and version you are using. Thanks.
+
=================================================
./valgrind-new/exp-ptrcheck/tests/pth_specific.stderr.diff
=================================================
--- pth_specific.stderr.exp 2009-07-02 02:05:13.000000000 +1000
+++ pth_specific.stderr.out 2009-07-02 02:15:22.000000000 +1000
@@ -5,12 +5,33 @@
legitimate range, a block of size 100 alloc'd
at 0x........: malloc (vg_replace_malloc.c:...)
by 0x........: main (pth_specific.c:17)
+t9 = CASle(t27::t16->t15)
+exp-ptrcheck: h_main.c:4820 (schemeS): the 'impossible' happened.
+ at 0x........: report_and_quit (m_libcassert.c:145)
+ by 0x........: vgPlain_assert_fail (m_libcassert.c:216)
+ by 0x........: h_instrument (h_main.c:4820)
+ by 0x........: LibVEX_Translate (vex_main.c:500)
+ by 0x........: vgPlain_translate (m_translate.c:1517)
+ by 0x........: vgPlain_scheduler (scheduler.c:844)
+ by 0x........: run_a_thread_NORETURN (syswrap-linux.c:91)
-Invalid read of size 1
- at 0x........: main (pth_specific.c:27)
- Address 0x........ is 1 bytes before the accessing pointer's
- legitimate range, a block of size 100 alloc'd
- at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: main (pth_specific.c:17)
+sched status:
+ running_tid=1
+
+Thread 1: status = VgTs_Runnable
+ at 0x........: pthread_key_create (in /...libpthread...)
+ by 0x........: main (pth_specific.c:22)
+
+
+Note: see also the FAQ in the source distribution.
+It contains workarounds to several common problems.
+In particular, if Valgrind aborted or crashed after
+identifying problems in your program, there's a good chance
+that fixing those problems will prevent Valgrind aborting or
+crashing, especially if it happened in m_mallocfree.c.
+
+If that doesn't help, please report this bug to: www.valgrind.org
+
+In the bug report, send all the above text, the valgrind
+version, and what OS and version you are using. Thanks.
-ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/none/tests/linux/mremap2.stdout.diff
=================================================
--- mremap2.stdout.exp 2009-07-02 02:06:01.000000000 +1000
+++ mremap2.stdout.out 2009-07-02 02:12:42.000000000 +1000
@@ -27,38 +27,38 @@
..................................................
..................................................
-maymv 0 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 0 fixed 0 newsz 21 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 0 fixed 0 newsz 21 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 0 fixed 0 newsz 29 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 0 fixed 0 newsz 29 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 0 fixed 0 newsz 30 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 30 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 0 fixed 0 newsz 30 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
@@ -173,40 +173,40 @@
..................................................
..................................................
-maymv 1 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 1 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 1 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 1 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
-maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
-maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
..................................................
<truncated beyond 100 lines>
=================================================
./valgrind-new/none/tests/linux/mremap2.stdout.diff-glibc28-amd64
=================================================
--- mremap2.stdout.exp-glibc28-amd64 2009-07-02 02:06:01.000000000 +1000
+++ mremap2.stdout.out 2009-07-02 02:12:42.000000000 +1000
@@ -188,37 +188,37 @@
maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
..................................................
maymv 1 fixed 0 newsz 30 dstpo 1 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
..................................................
maymv 1 fixed 0 newsz 31 dstpo 0 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
..................................................
maymv 1 fixed 0 newsz 31 dstpo 1 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
..................................................
=================================================
./valgrind-new/none/tests/linux/mremap2.stdout.diff2
=================================================
--- mremap2.stdout.exp2 2009-07-02 02:06:01.000000000 +1000
+++ mremap2.stdout.out 2009-07-02 02:12:42.000000000 +1000
@@ -27,38 +27,38 @@
..................................................
..................................................
-maymv 0 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 0 fixed 0 newsz 21 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 0 fixed 0 newsz 21 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 0 fixed 0 newsz 29 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 0 fixed 0 newsz 29 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 0 fixed 0 newsz 30 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 30 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 0 fixed 0 newsz 30 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
@@ -173,52 +173,52 @@
..................................................
..................................................
-maymv 1 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 1 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 1 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 1 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
-maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
-maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
..................................................
<truncated beyond 100 lines>
|
|
From: <sv...@va...> - 2009-07-01 12:00:28
|
Author: tom
Date: 2009-07-01 12:59:20 +0100 (Wed, 01 Jul 2009)
New Revision: 10394
Log:
When looking for the text section in a PE executable ignore any
code section which is marked as uninitialised.
This can happen if you have incremental linking enabled in Visual
Studio, which causes a .textbss section to be added before the real
text section. We were picking up that .textbss section and using it to
compute the avma and bias for the code which was giving completely the
wrong results.
Modified:
trunk/coregrind/m_debuginfo/readpdb.c
Modified: trunk/coregrind/m_debuginfo/readpdb.c
===================================================================
--- trunk/coregrind/m_debuginfo/readpdb.c 2009-07-01 08:12:22 UTC (rev 10393)
+++ trunk/coregrind/m_debuginfo/readpdb.c 2009-07-01 11:59:20 UTC (rev 10394)
@@ -2117,19 +2117,26 @@
" ::: mapped_avma is %#lx", mapped_avma);
if (pe_sechdr_avma->Characteristics & IMAGE_SCN_CNT_CODE) {
- di->have_rx_map = True;
- if (di->rx_map_avma == 0) {
- di->rx_map_avma = mapped_avma;
+ /* Ignore uninitialised code sections - if you have
+ incremental linking enabled in Visual Studio then you will
+ get a uninitialised code section called .textbss before
+ the real text section and valgrind will compute the wrong
+ avma value and hence the wrong bias. */
+ if (!(pe_sechdr_avma->Characteristics & IMAGE_SCN_CNT_UNINITIALIZED_DATA)) {
+ di->have_rx_map = True;
+ if (di->rx_map_avma == 0) {
+ di->rx_map_avma = mapped_avma;
+ }
+ if (di->rx_map_size==0) {
+ di->rx_map_foff = pe_sechdr_avma->PointerToRawData;
+ }
+ di->text_present = True;
+ if (di->text_avma==0) {
+ di->text_avma = mapped_avma;
+ }
+ di->text_size += pe_sechdr_avma->Misc.VirtualSize;
+ di->rx_map_size += pe_sechdr_avma->Misc.VirtualSize;
}
- if (di->rx_map_size==0) {
- di->rx_map_foff = pe_sechdr_avma->PointerToRawData;
- }
- di->text_present = True;
- if (di->text_avma==0) {
- di->text_avma = mapped_avma;
- }
- di->text_size += pe_sechdr_avma->Misc.VirtualSize;
- di->rx_map_size += pe_sechdr_avma->Misc.VirtualSize;
}
else if (pe_sechdr_avma->Characteristics
& IMAGE_SCN_CNT_INITIALIZED_DATA) {
|
|
From: <sv...@va...> - 2009-07-01 08:55:02
|
Author: sewardj
Date: 2009-07-01 09:45:02 +0100 (Wed, 01 Jul 2009)
New Revision: 1903
Log:
Double the size of the spill area. Fixes #195838.
Modified:
trunk/pub/libvex.h
Modified: trunk/pub/libvex.h
===================================================================
--- trunk/pub/libvex.h 2009-07-01 08:07:29 UTC (rev 1902)
+++ trunk/pub/libvex.h 2009-07-01 08:45:02 UTC (rev 1903)
@@ -375,7 +375,7 @@
16-aligned size and be 16-aligned, and placed back-to-back.
*/
-#define LibVEX_N_SPILL_BYTES 2048
+#define LibVEX_N_SPILL_BYTES 4096
/*-------------------------------------------------------*/
|
|
From: Julian S. <js...@ac...> - 2009-07-01 08:44:02
|
> Would it be possible to turn on http transport protocol on the svn server > so those of us behind a restricted firewall can do checkouts ? We did have http transport some years ago, but it broke and was subsequently disabled, for some reason. I don't remember the details though. Is it something you can work around? J |
|
From: Julian S. <js...@ac...> - 2009-07-01 08:31:10
|
On Wednesday 01 July 2009, Nicholas Nethercote wrote: > On Tue, Jun 30, 2009 at 10:19 PM, Julian Seward<js...@ac...> wrote: > > I'd like to merge branches/DCAS to trunk in the next day or so. Done. > You don't have any additional tests in the Valgrind patch -- it seems There are some tests, but I forgot to include them in the patch (duh). I'll commit them in the next day or so. > Once it's committed, can you please close > https://bugs.kde.org/show_bug.cgi?id=197793? Done. > Also, could you look at these, which might now be closeable: > > https://bugs.kde.org/show_bug.cgi?id=85756 > https://bugs.kde.org/show_bug.cgi?id=142103 Closed as dups. > https://bugs.kde.org/show_bug.cgi?id=195662 Related, but not sure what's going on there. Have queried the submitted. J |
|
From: <sv...@va...> - 2009-07-01 08:12:27
|
Author: sewardj
Date: 2009-07-01 09:12:22 +0100 (Wed, 01 Jul 2009)
New Revision: 10393
Log:
Update oprofiling notes a bit.
Modified:
trunk/docs/internals/howto_oprofile.txt
Modified: trunk/docs/internals/howto_oprofile.txt
===================================================================
--- trunk/docs/internals/howto_oprofile.txt 2009-07-01 08:10:49 UTC (rev 10392)
+++ trunk/docs/internals/howto_oprofile.txt 2009-07-01 08:12:22 UTC (rev 10393)
@@ -12,14 +12,18 @@
# produce a flat profile
opreport --merge=tgid --symbols -x \
- /home/sewardj/VgTRUNK/hgdev/Inst/lib/valgrind/x86-linux/helgrind \
+ /home/sewardj/VgTRUNK/atomk/Inst/lib/valgrind/helgrind-amd64-linux \
| less
# produce a profile w/ callgraph
opreport --merge=tgid --callgraph \
- /home/sewardj/VgTRUNK/hgdev/Inst/lib/valgrind/x86-linux/helgrind \
+ /home/sewardj/VgTRUNK/atomk/Inst/lib/valgrind/helgrind-amd64-linux \
| less
+# print annotated source
+opannotate --merge=tgid --source --include-file=libhb_core.c | less
+
+
#### notes.
1. on amd64, need to build V with -fno-omit-frame-pointer, else the
|
Author: sewardj
Date: 2009-07-01 09:10:49 +0100 (Wed, 01 Jul 2009)
New Revision: 10392
Log:
Merge in branches/DCAS.
This branch adds proper support for atomic instructions, proper in the
sense that the atomicity is preserved through the compilation
pipeline, and thus in the instrumented code.
These changes track the IR changes added by vex r1901. They primarily
update the instrumentation functions in all tools to handle the
changes, with the exception of exp-ptrcheck, which needs some further
work in order to be able to run threaded code.
Modified:
trunk/cachegrind/cg_main.c
trunk/callgrind/main.c
trunk/coregrind/m_machine.c
trunk/coregrind/m_scheduler/scheduler.c
trunk/coregrind/m_signals.c
trunk/coregrind/m_syswrap/syswrap-main.c
trunk/coregrind/m_tooliface.c
trunk/coregrind/pub_core_signals.h
trunk/coregrind/pub_core_tooliface.h
trunk/drd/drd_load_store.c
trunk/exp-ptrcheck/h_main.c
trunk/exp-ptrcheck/h_main.h
trunk/exp-ptrcheck/sg_main.c
trunk/helgrind/hg_main.c
trunk/helgrind/libhb_core.c
trunk/include/pub_tool_tooliface.h
trunk/lackey/lk_main.c
trunk/massif/ms_main.c
trunk/memcheck/mc_machine.c
trunk/memcheck/mc_translate.c
Modified: trunk/cachegrind/cg_main.c
===================================================================
--- trunk/cachegrind/cg_main.c 2009-07-01 05:05:38 UTC (rev 10391)
+++ trunk/cachegrind/cg_main.c 2009-07-01 08:10:49 UTC (rev 10392)
@@ -1032,6 +1032,27 @@
break;
}
+ case Ist_CAS: {
+ /* We treat it as a read and a write of the location. I
+ think that is the same behaviour as it was before IRCAS
+ was introduced, since prior to that point, the Vex
+ front ends would translate a lock-prefixed instruction
+ into a (normal) read followed by a (normal) write. */
+ Int dataSize;
+ IRCAS* cas = st->Ist.CAS.details;
+ tl_assert(cas->addr != NULL);
+ tl_assert(cas->dataLo != NULL);
+ dataSize = sizeofIRType(typeOfIRExpr(tyenv, cas->dataLo));
+ if (cas->dataHi != NULL)
+ dataSize *= 2; /* since it's a doubleword-CAS */
+ /* I don't think this can ever happen, but play safe. */
+ if (dataSize > MIN_LINE_SIZE)
+ dataSize = MIN_LINE_SIZE;
+ addEvent_Dr( &cgs, curr_inode, dataSize, cas->addr );
+ addEvent_Dw( &cgs, curr_inode, dataSize, cas->addr );
+ break;
+ }
+
case Ist_Exit: {
/* Stuff to widen the guard expression to a host word, so
we can pass it to the branch predictor simulation
Modified: trunk/callgrind/main.c
===================================================================
--- trunk/callgrind/main.c 2009-07-01 05:05:38 UTC (rev 10391)
+++ trunk/callgrind/main.c 2009-07-01 08:10:49 UTC (rev 10392)
@@ -657,8 +657,14 @@
static
void addConstMemStoreStmt( IRSB* bbOut, UWord addr, UInt val, IRType hWordTy)
{
+ /* JRS 2009june01: re IRTemp_INVALID, am assuming that this
+ function is used only to create instrumentation, and not to
+ copy/reconstruct IRStmt_Stores that were in the incoming IR
+ superblock. If that is not a correct assumption, then things
+ will break badly on PowerPC, esp w/ threaded apps. */
addStmtToIRSB( bbOut,
IRStmt_Store(CLGEndness,
+ IRTemp_INVALID,
IRExpr_Const(hWordTy == Ity_I32 ?
IRConst_U32( addr ) :
IRConst_U64( addr )),
@@ -841,6 +847,24 @@
break;
}
+ case Ist_CAS: {
+ /* We treat it as a read and a write of the location. I
+ think that is the same behaviour as it was before IRCAS
+ was introduced, since prior to that point, the Vex
+ front ends would translate a lock-prefixed instruction
+ into a (normal) read followed by a (normal) write. */
+ Int dataSize;
+ IRCAS* cas = st->Ist.CAS.details;
+ CLG_ASSERT(cas->addr && isIRAtom(cas->addr));
+ CLG_ASSERT(cas->dataLo);
+ dataSize = sizeofIRType(typeOfIRExpr(sbIn->tyenv, cas->dataLo));
+ if (cas->dataHi != NULL)
+ dataSize *= 2; /* since this is a doubleword-cas */
+ addEvent_Dr( &clgs, curr_inode, dataSize, cas->addr );
+ addEvent_Dw( &clgs, curr_inode, dataSize, cas->addr );
+ break;
+ }
+
case Ist_Exit: {
UInt jmps_passed;
@@ -1101,7 +1125,8 @@
#endif
static
-void CLG_(pre_syscalltime)(ThreadId tid, UInt syscallno)
+void CLG_(pre_syscalltime)(ThreadId tid, UInt syscallno,
+ UWord* args, UInt nArgs)
{
if (CLG_(clo).collect_systime) {
#if CLG_MICROSYSTIME
@@ -1115,7 +1140,8 @@
}
static
-void CLG_(post_syscalltime)(ThreadId tid, UInt syscallno, SysRes res)
+void CLG_(post_syscalltime)(ThreadId tid, UInt syscallno,
+ UWord* args, UInt nArgs, SysRes res)
{
if (CLG_(clo).collect_systime &&
CLG_(current_state).bbcc) {
Modified: trunk/coregrind/m_machine.c
===================================================================
--- trunk/coregrind/m_machine.c 2009-07-01 05:05:38 UTC (rev 10391)
+++ trunk/coregrind/m_machine.c 2009-07-01 08:10:49 UTC (rev 10392)
@@ -350,7 +350,7 @@
LibVEX_default_VexArchInfo(&vai);
#if defined(VGA_x86)
- { Bool have_sse1, have_sse2;
+ { Bool have_sse1, have_sse2, have_cx8;
UInt eax, ebx, ecx, edx;
if (!VG_(has_cpuid)())
@@ -368,6 +368,13 @@
have_sse1 = (edx & (1<<25)) != 0; /* True => have sse insns */
have_sse2 = (edx & (1<<26)) != 0; /* True => have sse2 insns */
+ /* cmpxchg8b is a minimum requirement now; if we don't have it we
+ must simply give up. But all CPUs since Pentium-I have it, so
+ that doesn't seem like much of a restriction. */
+ have_cx8 = (edx & (1<<8)) != 0; /* True => have cmpxchg8b */
+ if (!have_cx8)
+ return False;
+
if (have_sse2 && have_sse1) {
va = VexArchX86;
vai.hwcaps = VEX_HWCAPS_X86_SSE1;
@@ -390,11 +397,41 @@
}
#elif defined(VGA_amd64)
- vg_assert(VG_(has_cpuid)());
- va = VexArchAMD64;
- vai.hwcaps = 0; /*baseline - SSE2 */
- return True;
+ { Bool have_sse1, have_sse2, have_sse3, have_cx8, have_cx16;
+ UInt eax, ebx, ecx, edx;
+ if (!VG_(has_cpuid)())
+ /* we can't do cpuid at all. Give up. */
+ return False;
+
+ VG_(cpuid)(0, &eax, &ebx, &ecx, &edx);
+ if (eax < 1)
+ /* we can't ask for cpuid(x) for x > 0. Give up. */
+ return False;
+
+ /* get capabilities bits into edx */
+ VG_(cpuid)(1, &eax, &ebx, &ecx, &edx);
+
+ have_sse1 = (edx & (1<<25)) != 0; /* True => have sse insns */
+ have_sse2 = (edx & (1<<26)) != 0; /* True => have sse2 insns */
+ have_sse3 = (ecx & (1<<9)) != 0; /* True => have sse3 insns */
+
+ /* cmpxchg8b is a minimum requirement now; if we don't have it we
+ must simply give up. But all CPUs since Pentium-I have it, so
+ that doesn't seem like much of a restriction. */
+ have_cx8 = (edx & (1<<8)) != 0; /* True => have cmpxchg8b */
+ if (!have_cx8)
+ return False;
+
+ /* on amd64 we tolerate older cpus, which don't have cmpxchg16b */
+ have_cx16 = (ecx & (1<<13)) != 0; /* True => have cmpxchg16b */
+
+ va = VexArchAMD64;
+ vai.hwcaps = (have_sse3 ? VEX_HWCAPS_AMD64_SSE3 : 0)
+ | (have_cx16 ? VEX_HWCAPS_AMD64_CX16 : 0);
+ return True;
+ }
+
#elif defined(VGA_ppc32)
{
/* Find out which subset of the ppc32 instruction set is supported by
@@ -549,7 +586,6 @@
VG_(sigaction)(VKI_SIGFPE, NULL, &saved_sigfpe_act);
tmp_sigfpe_act = saved_sigfpe_act;
-
/* NODEFER: signal handler does not return (from the kernel's point of
view), hence if it is to successfully catch a signal more than once,
we need the NODEFER flag. */
Modified: trunk/coregrind/m_scheduler/scheduler.c
===================================================================
--- trunk/coregrind/m_scheduler/scheduler.c 2009-07-01 05:05:38 UTC (rev 10391)
+++ trunk/coregrind/m_scheduler/scheduler.c 2009-07-01 08:10:49 UTC (rev 10392)
@@ -679,22 +679,6 @@
trc = 0;
dispatch_ctr_SAVED = VG_(dispatch_ctr);
-# if defined(VGA_ppc32) || defined(VGA_ppc64)
- /* This is necessary due to the hacky way vex models reservations
- on ppc. It's really quite incorrect for each thread to have its
- own reservation flag/address, since it's really something that
- all threads share (that's the whole point). But having shared
- guest state is something we can't model with Vex. However, as
- per PaulM's 2.4.0ppc, the reservation is modelled using a
- reservation flag which is cleared at each context switch. So it
- is indeed possible to get away with a per thread-reservation if
- the thread's reservation is cleared before running it.
- */
- /* Clear any existing reservation that this thread might have made
- last time it was running. */
- VG_(threads)[tid].arch.vex.guest_RESVN = 0;
-# endif
-
# if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
/* On AIX, we need to get a plausible value for SPRG3 for this
thread, since it's used I think as a thread-state pointer. It
@@ -1169,6 +1153,10 @@
VG_(synth_fault)(tid);
break;
+ case VEX_TRC_JMP_SIGBUS:
+ VG_(synth_sigbus)(tid);
+ break;
+
case VEX_TRC_JMP_NODECODE:
VG_(message)(Vg_UserMsg,
"valgrind: Unrecognised instruction at address %#lx.",
Modified: trunk/coregrind/m_signals.c
===================================================================
--- trunk/coregrind/m_signals.c 2009-07-01 05:05:38 UTC (rev 10391)
+++ trunk/coregrind/m_signals.c 2009-07-01 08:10:49 UTC (rev 10392)
@@ -1766,6 +1766,27 @@
deliver_signal(tid, &info, NULL);
}
+// Synthesise a SIGBUS.
+void VG_(synth_sigbus)(ThreadId tid)
+{
+ vki_siginfo_t info;
+
+ vg_assert(VG_(threads)[tid].status == VgTs_Runnable);
+
+ VG_(memset)(&info, 0, sizeof(info));
+ info.si_signo = VKI_SIGBUS;
+ /* There are several meanings to SIGBUS (as per POSIX, presumably),
+ but the most widely understood is "invalid address alignment",
+ so let's use that. */
+ info.si_code = VKI_BUS_ADRALN;
+ /* If we knew the invalid address in question, we could put it
+ in .si_addr. Oh well. */
+ /* info.VKI_SIGINFO_si_addr = (void*)addr; */
+
+ resume_scheduler(tid);
+ deliver_signal(tid, &info, NULL);
+}
+
// Synthesise a SIGTRAP.
void VG_(synth_sigtrap)(ThreadId tid)
{
Modified: trunk/coregrind/m_syswrap/syswrap-main.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-main.c 2009-07-01 05:05:38 UTC (rev 10391)
+++ trunk/coregrind/m_syswrap/syswrap-main.c 2009-07-01 08:10:49 UTC (rev 10392)
@@ -431,7 +431,6 @@
canonical->arg7 = 0;
canonical->arg8 = 0;
-
#elif defined(VGP_ppc32_linux)
VexGuestPPC32State* gst = (VexGuestPPC32State*)gst_vanilla;
canonical->sysno = gst->guest_GPR0;
@@ -444,7 +443,6 @@
canonical->arg7 = 0;
canonical->arg8 = 0;
-
#elif defined(VGP_ppc64_linux)
VexGuestPPC64State* gst = (VexGuestPPC64State*)gst_vanilla;
canonical->sysno = gst->guest_GPR0;
@@ -457,7 +455,6 @@
canonical->arg7 = 0;
canonical->arg8 = 0;
-
#elif defined(VGP_ppc32_aix5)
VexGuestPPC32State* gst = (VexGuestPPC32State*)gst_vanilla;
canonical->sysno = gst->guest_GPR2;
@@ -1377,7 +1374,17 @@
/* Do any pre-syscall actions */
if (VG_(needs).syscall_wrapper) {
- VG_TDICT_CALL(tool_pre_syscall, tid, sysno);
+ UWord tmpv[8];
+ tmpv[0] = sci->orig_args.arg1;
+ tmpv[1] = sci->orig_args.arg2;
+ tmpv[2] = sci->orig_args.arg3;
+ tmpv[3] = sci->orig_args.arg4;
+ tmpv[4] = sci->orig_args.arg5;
+ tmpv[5] = sci->orig_args.arg6;
+ tmpv[6] = sci->orig_args.arg7;
+ tmpv[7] = sci->orig_args.arg8;
+ VG_TDICT_CALL(tool_pre_syscall, tid, sysno,
+ &tmpv[0], sizeof(tmpv)/sizeof(tmpv[0]));
}
vg_assert(ent);
@@ -1655,8 +1662,21 @@
putSyscallStatusIntoGuestState( tid, &sci->status, &tst->arch.vex );
/* Do any post-syscall actions required by the tool. */
- if (VG_(needs).syscall_wrapper)
- VG_TDICT_CALL(tool_post_syscall, tid, sysno, sci->status.sres);
+ if (VG_(needs).syscall_wrapper) {
+ UWord tmpv[8];
+ tmpv[0] = sci->orig_args.arg1;
+ tmpv[1] = sci->orig_args.arg2;
+ tmpv[2] = sci->orig_args.arg3;
+ tmpv[3] = sci->orig_args.arg4;
+ tmpv[4] = sci->orig_args.arg5;
+ tmpv[5] = sci->orig_args.arg6;
+ tmpv[6] = sci->orig_args.arg7;
+ tmpv[7] = sci->orig_args.arg8;
+ VG_TDICT_CALL(tool_post_syscall, tid,
+ sysno,
+ &tmpv[0], sizeof(tmpv)/sizeof(tmpv[0]),
+ sci->status.sres);
+ }
/* The syscall is done. */
vg_assert(sci->status.what == SsComplete);
Modified: trunk/coregrind/m_tooliface.c
===================================================================
--- trunk/coregrind/m_tooliface.c 2009-07-01 05:05:38 UTC (rev 10391)
+++ trunk/coregrind/m_tooliface.c 2009-07-01 08:10:49 UTC (rev 10392)
@@ -269,8 +269,8 @@
}
void VG_(needs_syscall_wrapper)(
- void(*pre) (ThreadId, UInt),
- void(*post)(ThreadId, UInt, SysRes res)
+ void(*pre) (ThreadId, UInt, UWord*, UInt),
+ void(*post)(ThreadId, UInt, UWord*, UInt, SysRes res)
)
{
VG_(needs).syscall_wrapper = True;
Modified: trunk/coregrind/pub_core_signals.h
===================================================================
--- trunk/coregrind/pub_core_signals.h 2009-07-01 05:05:38 UTC (rev 10391)
+++ trunk/coregrind/pub_core_signals.h 2009-07-01 08:10:49 UTC (rev 10392)
@@ -73,6 +73,7 @@
extern void VG_(synth_fault_perms) (ThreadId tid, Addr addr);
extern void VG_(synth_sigill) (ThreadId tid, Addr addr);
extern void VG_(synth_sigtrap) (ThreadId tid);
+extern void VG_(synth_sigbus) (ThreadId tid);
/* Extend the stack to cover addr, if possible */
extern Bool VG_(extend_stack)(Addr addr, UInt maxsize);
Modified: trunk/coregrind/pub_core_tooliface.h
===================================================================
--- trunk/coregrind/pub_core_tooliface.h 2009-07-01 05:05:38 UTC (rev 10391)
+++ trunk/coregrind/pub_core_tooliface.h 2009-07-01 08:10:49 UTC (rev 10392)
@@ -138,8 +138,8 @@
Bool (*tool_handle_client_request)(ThreadId, UWord*, UWord*);
// VG_(needs).syscall_wrapper
- void (*tool_pre_syscall) (ThreadId, UInt);
- void (*tool_post_syscall)(ThreadId, UInt, SysRes);
+ void (*tool_pre_syscall) (ThreadId, UInt, UWord*, UInt);
+ void (*tool_post_syscall)(ThreadId, UInt, UWord*, UInt, SysRes);
// VG_(needs).sanity_checks
Bool (*tool_cheap_sanity_check)(void);
Modified: trunk/drd/drd_load_store.c
===================================================================
--- trunk/drd/drd_load_store.c 2009-07-01 05:05:38 UTC (rev 10391)
+++ trunk/drd/drd_load_store.c 2009-07-01 08:10:49 UTC (rev 10392)
@@ -450,7 +450,6 @@
IRSB* bb;
IRExpr** argv;
Bool instrument = True;
- Bool bus_locked = False;
/* Set up BB */
bb = emptyIRSB();
@@ -484,16 +483,6 @@
{
case Imbe_Fence:
break; /* not interesting */
- case Imbe_BusLock:
- case Imbe_SnoopedStoreBegin:
- tl_assert(! bus_locked);
- bus_locked = True;
- break;
- case Imbe_BusUnlock:
- case Imbe_SnoopedStoreEnd:
- tl_assert(bus_locked);
- bus_locked = False;
- break;
default:
tl_assert(0);
}
@@ -501,7 +490,8 @@
break;
case Ist_Store:
- if (instrument && ! bus_locked)
+ if (instrument && /* ignore stores resulting from st{d,w}cx. */
+ st->Ist.Store.resSC == IRTemp_INVALID)
{
instrument_store(bb,
st->Ist.Store.addr,
@@ -547,8 +537,7 @@
argv);
addStmtToIRSB(bb, IRStmt_Dirty(di));
}
- if ((mFx == Ifx_Write || mFx == Ifx_Modify)
- && ! bus_locked)
+ if (mFx == Ifx_Write || mFx == Ifx_Modify)
{
di = unsafeIRDirty_0_N(
/*regparms*/2,
@@ -565,14 +554,32 @@
addStmtToIRSB(bb, st);
break;
+ case Ist_CAS:
+ if (instrument)
+ {
+ /* Just treat this as a read of the location. I believe
+ this is equivalent to the previous logic, which
+ observed bus-lock/unlock Ist_MBEs, and ignored all
+ writes within sections bracketed by bus-lock and
+ bus-unlock annotations. */
+ Int dataSize;
+ IRCAS* cas = st->Ist.CAS.details;
+ tl_assert(cas->addr != NULL);
+ tl_assert(cas->dataLo != NULL);
+ dataSize = sizeofIRType(typeOfIRExpr(bb->tyenv, cas->dataLo));
+ if (cas->dataHi != NULL)
+ dataSize *= 2; /* since it's a doubleword-CAS */
+ instrument_load(bb, cas->addr, dataSize);
+ }
+ addStmtToIRSB(bb, st);
+ break;
+
default:
addStmtToIRSB(bb, st);
break;
}
}
- tl_assert(! bus_locked);
-
return bb;
}
Modified: trunk/exp-ptrcheck/h_main.c
===================================================================
--- trunk/exp-ptrcheck/h_main.c 2009-07-01 05:05:38 UTC (rev 10391)
+++ trunk/exp-ptrcheck/h_main.c 2009-07-01 08:10:49 UTC (rev 10392)
@@ -1536,7 +1536,6 @@
if (o == GOF(CTR) && is4) goto exactly1;
if (o == GOF(CIA) && is4) goto none;
if (o == GOF(IP_AT_SYSCALL) && is4) goto none;
- if (o == GOF(RESVN) && is4) goto none;
if (o == GOF(TISTART) && is4) goto none;
if (o == GOF(TILEN) && is4) goto none;
if (o == GOF(REDIR_SP) && is4) goto none;
@@ -1700,7 +1699,6 @@
if (o == GOF(CTR) && is8) goto exactly1;
if (o == GOF(CIA) && is8) goto none;
if (o == GOF(IP_AT_SYSCALL) && is8) goto none;
- if (o == GOF(RESVN) && is8) goto none;
if (o == GOF(TISTART) && is8) goto none;
if (o == GOF(TILEN) && is8) goto none;
if (o == GOF(REDIR_SP) && is8) goto none;
@@ -2115,7 +2113,8 @@
/*--- System calls ---*/
/*--------------------------------------------------------------------*/
-void h_pre_syscall ( ThreadId tid, UInt sysno )
+void h_pre_syscall ( ThreadId tid, UInt sysno,
+ UWord* args, UInt nArgs )
{
/* we don't do anything at the pre-syscall point */
}
@@ -2415,6 +2414,9 @@
# if defined(__NR_shmget)
ADD(1, __NR_shmget);
# endif
+# if defined(__NR_ipc) && defined(VKI_SHMAT)
+ ADD(1, __NR_ipc); /* ppc{32,64}-linux horrors */
+# endif
/* --------------- AIX5 --------------- */
@@ -2473,7 +2475,8 @@
}
-void h_post_syscall ( ThreadId tid, UInt sysno, SysRes res )
+void h_post_syscall ( ThreadId tid, UInt sysno,
+ UWord* args, UInt nArgs, SysRes res )
{
Word i, n;
UWordPair* pair;
@@ -2517,14 +2520,9 @@
/* Deal with the common case */
pair = VG_(indexXA)( post_syscall_table, i );
- if (pair->uw2 == 0) {
- /* the common case */
- VG_(set_syscall_return_shadows)(
- tid, /* retval */ (UWord)NONPTR, 0,
- /* error */ (UWord)NONPTR, 0
- );
- return;
- }
+ if (pair->uw2 == 0)
+ /* the common case */
+ goto res_NONPTR_err_NONPTR;
/* Special handling for all remaining cases */
tl_assert(pair->uw2 == 1);
@@ -2537,24 +2535,15 @@
syscall completes. */
post_reg_write_nonptr_or_unknown( tid, PC_OFF_FS_ZERO,
PC_SZB_FS_ZERO );
- VG_(set_syscall_return_shadows)(
- tid, /* retval */ (UWord)NONPTR, 0,
- /* error */ (UWord)NONPTR, 0
- );
- return;
+ goto res_NONPTR_err_NONPTR;
}
# endif
# if defined(__NR_brk)
// With brk(), result (of kernel syscall, not glibc wrapper) is a heap
// pointer. Make the shadow UNKNOWN.
- if (sysno == __NR_brk) {
- VG_(set_syscall_return_shadows)(
- tid, /* retval */ (UWord)UNKNOWN, 0,
- /* error */ (UWord)NONPTR, 0
- );
- return;
- }
+ if (sysno == __NR_brk)
+ goto res_UNKNOWN_err_NONPTR;
# endif
// With mmap, new_mem_mmap() has already been called and added the
@@ -2573,13 +2562,9 @@
) {
if (sr_isError(res)) {
// mmap() had an error, return value is a small negative integer
- VG_(set_syscall_return_shadows)( tid, /*val*/ (UWord)NONPTR, 0,
- /*err*/ (UWord)NONPTR, 0 );
- if (0) VG_(printf)("ZZZZZZZ mmap res -> NONPTR\n");
+ goto res_NONPTR_err_NONPTR;
} else {
- VG_(set_syscall_return_shadows)( tid, /*val*/ (UWord)UNKNOWN, 0,
- /*err*/ (UWord)NONPTR, 0 );
- if (0) VG_(printf)("ZZZZZZZ mmap res -> UNKNOWN\n");
+ goto res_UNKNOWN_err_NONPTR;
}
return;
}
@@ -2589,24 +2574,40 @@
# if defined(__NR_shmat)
if (sysno == __NR_shmat) {
if (sr_isError(res)) {
- VG_(set_syscall_return_shadows)( tid, /*val*/ (UWord)NONPTR, 0,
- /*err*/ (UWord)NONPTR, 0 );
- if (0) VG_(printf)("ZZZZZZZ shmat res -> NONPTR\n");
+ goto res_NONPTR_err_NONPTR;
} else {
- VG_(set_syscall_return_shadows)( tid, /*val*/ (UWord)UNKNOWN, 0,
- /*err*/ (UWord)NONPTR, 0 );
- if (0) VG_(printf)("ZZZZZZZ shmat res -> UNKNOWN\n");
+ goto res_UNKNOWN_err_NONPTR;
}
- return;
}
# endif
# if defined(__NR_shmget)
- if (sysno == __NR_shmget) {
+ if (sysno == __NR_shmget)
// FIXME: is this correct?
- VG_(set_syscall_return_shadows)( tid, /*val*/ (UWord)UNKNOWN, 0,
- /*err*/ (UWord)NONPTR, 0 );
- return;
+ goto res_UNKNOWN_err_NONPTR;
+# endif
+
+# if defined(__NR_ipc) && defined(VKI_SHMAT)
+ /* perhaps this should be further conditionalised with
+ && (defined(VGP_ppc32_linux) || defined(VGP_ppc64_linux)
+ Note, this just copies the behaviour of __NR_shmget above.
+
+ JRS 2009 June 02: it seems that the return value from
+ sys_ipc(VKI_SHMAT, ...) doesn't have much relationship to the
+ result returned by the originating user-level shmat call. It's
+ different (and much lower) by a large but integral number of
+ pages. I don't have time to chase this right now. Observed on
+ ppc{32,64}-linux. Result appears to be false errors from apps
+ using shmat. Confusion though -- shouldn't be related to the
+ actual numeric values returned by the syscall, though, should
+ it? Confused. Maybe some bad interaction with a
+ nonpointer-or-unknown heuristic? */
+ if (sysno == __NR_ipc) {
+ if (args[0] == VKI_SHMAT) {
+ goto res_UNKNOWN_err_NONPTR;
+ } else {
+ goto res_NONPTR_err_NONPTR;
+ }
}
# endif
@@ -2614,6 +2615,16 @@
post_syscall_table has .w2 == 1, which in turn implies there
should be special-case code for it above. */
tl_assert(0);
+
+ res_NONPTR_err_NONPTR:
+ VG_(set_syscall_return_shadows)( tid, /* retval */ (UWord)NONPTR, 0,
+ /* error */ (UWord)NONPTR, 0 );
+ return;
+
+ res_UNKNOWN_err_NONPTR:
+ VG_(set_syscall_return_shadows)( tid, /* retval */ (UWord)UNKNOWN, 0,
+ /* error */ (UWord)NONPTR, 0 );
+ return;
}
@@ -2916,25 +2927,73 @@
// ------------------ Store handlers ------------------ //
/* On 32 bit targets, we will use:
- check_store1 check_store2 check_store4_P
+ check_store1 check_store2 check_store4_P check_store4C_P
check_store4 (for 32-bit nonpointer stores)
check_store8_ms4B_ls4B (for 64-bit stores)
check_store16_ms4B_4B_4B_ls4B (for xmm/altivec stores)
On 64 bit targets, we will use:
- check_store1 check_store2 check_store4 check_store8_P
+ check_store1 check_store2 check_store4 check_store4C
+ check_store8_P check_store_8C_P
check_store8_all8B (for 64-bit nonpointer stores)
check_store16_ms8B_ls8B (for xmm/altivec stores)
A "_P" handler writes a pointer to memory, and so has an extra
argument -- the pointer's shadow value. That implies that
- check_store4_P is only to be called on a 32 bit host and
- check_store8_P is only to be called on a 64 bit host. For all
+ check_store4{,C}_P is only to be called on a 32 bit host and
+ check_store8{,C}_P is only to be called on a 64 bit host. For all
other cases, and for the misaligned _P cases, the strategy is to
let the store go through, and then snoop around with
nonptr_or_unknown to fix up the shadow values of any affected
words. */
+/* Helpers for store-conditionals. Ugly kludge :-(
+ They all return 1 if the SC was successful and 0 if it failed. */
+static inline UWord do_store_conditional_32( Addr m/*dst*/, UInt t/*val*/ )
+{
+# if defined(VGA_ppc32) || defined(VGA_ppc64)
+ UWord success;
+ /* If this assertion fails, the underlying IR is (semantically) ill-formed
+ as per the IR spec for IRStmt_Store. */
+ tl_assert(VG_IS_4_ALIGNED(m));
+ __asm__ __volatile__(
+ "stwcx. %2,0,%1" "\n\t" /* data,0,addr */
+ "mfcr %0" "\n\t"
+ "srwi %0,%0,29" "\n\t" /* move relevant CR bit to LSB */
+ : /*out*/"=b"(success)
+ : /*in*/ "b"(m), "b"( (UWord)t )
+ : /*trash*/ "memory", "cc"
+ /* Note: srwi is OK even on 64-bit host because the we're
+ after bit 29 (normal numbering) and we mask off all the
+ other junk just below. */
+ );
+ return success & (UWord)1;
+# else
+ tl_assert(0); /* not implemented on other platforms */
+# endif
+}
+
+static inline UWord do_store_conditional_64( Addr m/*dst*/, ULong t/*val*/ )
+{
+# if defined(VGA_ppc64)
+ UWord success;
+ /* If this assertion fails, the underlying IR is (semantically) ill-formed
+ as per the IR spec for IRStmt_Store. */
+ tl_assert(VG_IS_8_ALIGNED(m));
+ __asm__ __volatile__(
+ "stdcx. %2,0,%1" "\n\t" /* data,0,addr */
+ "mfcr %0" "\n\t"
+ "srdi %0,%0,29" "\n\t" /* move relevant CR bit to LSB */
+ : /*out*/"=b"(success)
+ : /*in*/ "b"(m), "b"( (UWord)t )
+ : /*trash*/ "memory", "cc"
+ );
+ return success & (UWord)1;
+# else
+ tl_assert(0); /* not implemented on other platforms */
+# endif
+}
+
/* Apply nonptr_or_unknown to all the words intersecting
[a, a+len). */
static VG_REGPARM(2)
@@ -3066,6 +3125,29 @@
}
}
+// This handles 64 bit store-conditionals on 64 bit targets. It must
+// not be called on 32 bit targets.
+static VG_REGPARM(3)
+UWord check_store8C_P(Addr m, Seg* mptr_vseg, UWord t, Seg* t_vseg)
+{
+ UWord success;
+ tl_assert(sizeof(UWord) == 8); /* DO NOT REMOVE */
+# if SC_SEGS
+ checkSeg(t_vseg);
+ checkSeg(mptr_vseg);
+# endif
+ check_load_or_store(/*is_write*/True, m, 8, mptr_vseg);
+ // Actually *do* the STORE here
+ success = do_store_conditional_64( m, t );
+ if (VG_IS_8_ALIGNED(m)) {
+ set_mem_vseg( m, t_vseg );
+ } else {
+ // straddling two words
+ nonptr_or_unknown_range(m, 8);
+ }
+ return success;
+}
+
// This handles 32 bit stores on 32 bit targets. It must
// not be called on 64 bit targets.
static VG_REGPARM(3)
@@ -3087,6 +3169,29 @@
}
}
+// This handles 32 bit store-conditionals on 32 bit targets. It must
+// not be called on 64 bit targets.
+static VG_REGPARM(3)
+UWord check_store4C_P(Addr m, Seg* mptr_vseg, UWord t, Seg* t_vseg)
+{
+ UWord success;
+ tl_assert(sizeof(UWord) == 4); /* DO NOT REMOVE */
+# if SC_SEGS
+ checkSeg(t_vseg);
+ checkSeg(mptr_vseg);
+# endif
+ check_load_or_store(/*is_write*/True, m, 4, mptr_vseg);
+ // Actually *do* the STORE here
+ success = do_store_conditional_32( m, t );
+ if (VG_IS_4_ALIGNED(m)) {
+ set_mem_vseg( m, t_vseg );
+ } else {
+ // straddling two words
+ nonptr_or_unknown_range(m, 4);
+ }
+ return success;
+}
+
// Used for both 32 bit and 64 bit targets.
static VG_REGPARM(3)
void check_store4(Addr m, Seg* mptr_vseg, UWord t)
@@ -3100,6 +3205,23 @@
nonptr_or_unknown_range(m, 4);
}
+// Used for 32-bit store-conditionals on 64 bit targets only. It must
+// not be called on 32 bit targets.
+static VG_REGPARM(3)
+UWord check_store4C(Addr m, Seg* mptr_vseg, UWord t)
+{
+ UWord success;
+ tl_assert(sizeof(UWord) == 8); /* DO NOT REMOVE */
+# if SC_SEGS
+ checkSeg(mptr_vseg);
+# endif
+ check_load_or_store(/*is_write*/True, m, 4, mptr_vseg);
+ // Actually *do* the STORE here
+ success = do_store_conditional_32( m, t );
+ nonptr_or_unknown_range(m, 4);
+ return success;
+}
+
// Used for both 32 bit and 64 bit targets.
static VG_REGPARM(3)
void check_store2(Addr m, Seg* mptr_vseg, UWord t)
@@ -4084,8 +4206,8 @@
}
}
-/* Generate into 'ane', instrumentation for 'st'. Also copy 'st'
- itself into 'ane' (the caller does not do so). This is somewhat
+/* Generate into 'pce', instrumentation for 'st'. Also copy 'st'
+ itself into 'pce' (the caller does not do so). This is somewhat
complex and relies heavily on the assumption that the incoming IR
is in flat form.
@@ -4243,20 +4365,54 @@
the post-hoc ugly hack of inspecting and "improving" the
shadow data after the store, in the case where it isn't an
aligned word store.
+
+ Only word-sized values are shadowed. If this is a
+ store-conditional, .resSC will denote a non-word-typed
+ temp, and so we don't need to shadow it. Assert about the
+ type, tho. However, since we're not re-emitting the
+ original IRStmt_Store, but rather doing it as part of the
+ helper function, we need to actually do a SC in the
+ helper, and assign the result bit to .resSC. Ugly.
*/
IRExpr* data = st->Ist.Store.data;
IRExpr* addr = st->Ist.Store.addr;
IRType d_ty = typeOfIRExpr(pce->bb->tyenv, data);
IRExpr* addrv = schemeEw_Atom( pce, addr );
+ IRTemp resSC = st->Ist.Store.resSC;
+ if (resSC != IRTemp_INVALID) {
+ tl_assert(typeOfIRTemp(pce->bb->tyenv, resSC) == Ity_I1);
+ /* viz, not something we want to shadow */
+ /* also, throw out all store-conditional cases that
+ we can't handle */
+ if (pce->gWordTy == Ity_I32 && d_ty != Ity_I32)
+ goto unhandled;
+ if (pce->gWordTy == Ity_I64 && d_ty != Ity_I32 && d_ty != Ity_I64)
+ goto unhandled;
+ }
if (pce->gWordTy == Ity_I32) {
/* ------ 32 bit host/guest (cough, cough) ------ */
switch (d_ty) {
/* Integer word case */
case Ity_I32: {
IRExpr* datav = schemeEw_Atom( pce, data );
- gen_dirty_v_WWWW( pce,
- &check_store4_P, "check_store4_P",
- addr, addrv, data, datav );
+ if (resSC == IRTemp_INVALID) {
+ /* "normal" store */
+ gen_dirty_v_WWWW( pce,
+ &check_store4_P, "check_store4_P",
+ addr, addrv, data, datav );
+ } else {
+ /* store-conditional; need to snarf the success bit */
+ IRTemp resSC32
+ = gen_dirty_W_WWWW( pce,
+ &check_store4C_P,
+ "check_store4C_P",
+ addr, addrv, data, datav );
+ /* presumably resSC32 will really be Ity_I32. In
+ any case we'll get jumped by the IR sanity
+ checker if it's not, when it sees the
+ following statement. */
+ assign( 'I', pce, resSC, unop(Iop_32to1, mkexpr(resSC32)) );
+ }
break;
}
/* Integer subword cases */
@@ -4345,17 +4501,39 @@
/* Integer word case */
case Ity_I64: {
IRExpr* datav = schemeEw_Atom( pce, data );
- gen_dirty_v_WWWW( pce,
- &check_store8_P, "check_store8_P",
- addr, addrv, data, datav );
+ if (resSC == IRTemp_INVALID) {
+ /* "normal" store */
+ gen_dirty_v_WWWW( pce,
+ &check_store8_P, "check_store8_P",
+ addr, addrv, data, datav );
+ } else {
+ IRTemp resSC64
+ = gen_dirty_W_WWWW( pce,
+ &check_store8C_P,
+ "check_store8C_P",
+ addr, addrv, data, datav );
+ assign( 'I', pce, resSC, unop(Iop_64to1, mkexpr(resSC64)) );
+ }
break;
}
/* Integer subword cases */
case Ity_I32:
- gen_dirty_v_WWW( pce,
- &check_store4, "check_store4",
- addr, addrv,
- uwiden_to_host_word( pce, data ));
+ if (resSC == IRTemp_INVALID) {
+ /* "normal" store */
+ gen_dirty_v_WWW( pce,
+ &check_store4, "check_store4",
+ addr, addrv,
+ uwiden_to_host_word( pce, data ));
+ } else {
+ /* store-conditional; need to snarf the success bit */
+ IRTemp resSC64
+ = gen_dirty_W_WWW( pce,
+ &check_store4C,
+ "check_store4C",
+ addr, addrv,
+ uwiden_to_host_word( pce, data ));
+ assign( 'I', pce, resSC, unop(Iop_64to1, mkexpr(resSC64)) );
+ }
break;
case Ity_I16:
gen_dirty_v_WWW( pce,
Modified: trunk/exp-ptrcheck/h_main.h
===================================================================
--- trunk/exp-ptrcheck/h_main.h 2009-07-01 05:05:38 UTC (rev 10391)
+++ trunk/exp-ptrcheck/h_main.h 2009-07-01 08:10:49 UTC (rev 10392)
@@ -82,8 +82,10 @@
void h_post_reg_write_clientcall(ThreadId tid, PtrdiffT guest_state_offset,
SizeT size, Addr f );
-void h_pre_syscall ( ThreadId tid, UInt syscallno );
-void h_post_syscall ( ThreadId tid, UInt syscallno, SysRes res );
+void h_pre_syscall ( ThreadId tid, UInt syscallno,
+ UWord* args, UInt nArgs );
+void h_post_syscall ( ThreadId tid, UInt syscallno,
+ UWord* args, UInt nArgs, SysRes res );
/* Note that this also does the sg_ instrumentation. */
IRSB* h_instrument ( VgCallbackClosure* closure,
Modified: trunk/exp-ptrcheck/sg_main.c
===================================================================
--- trunk/exp-ptrcheck/sg_main.c 2009-07-01 05:05:38 UTC (rev 10391)
+++ trunk/exp-ptrcheck/sg_main.c 2009-07-01 08:10:49 UTC (rev 10392)
@@ -2226,6 +2226,33 @@
break;
}
+ case Ist_CAS: {
+ /* We treat it as a read and a write of the location. I
+ think that is the same behaviour as it was before IRCAS
+ was introduced, since prior to that point, the Vex front
+ ends would translate a lock-prefixed instruction into a
+ (normal) read followed by a (normal) write. */
+ if (env->firstRef) {
+ Int dataSize;
+ IRCAS* cas = st->Ist.CAS.details;
+ tl_assert(cas->addr != NULL);
+ tl_assert(cas->dataLo != NULL);
+ dataSize = sizeofIRType(typeOfIRExpr(sbOut->tyenv, cas->dataLo));
+ if (cas->dataHi != NULL)
+ dataSize *= 2; /* since it's a doubleword-CAS */
+ instrument_mem_access(
+ sbOut, cas->addr, dataSize, False/*!isStore*/,
+ sizeofIRType(hWordTy), env->curr_IP, layout
+ );
+ instrument_mem_access(
+ sbOut, cas->addr, dataSize, True/*isStore*/,
+ sizeofIRType(hWordTy), env->curr_IP, layout
+ );
+ env->firstRef = False;
+ }
+ break;
+ }
+
default:
tl_assert(0);
Modified: trunk/helgrind/hg_main.c
===================================================================
--- trunk/helgrind/hg_main.c 2009-07-01 05:05:38 UTC (rev 10391)
+++ trunk/helgrind/hg_main.c 2009-07-01 08:10:49 UTC (rev 10392)
@@ -3603,40 +3603,6 @@
}
-//static void instrument_memory_bus_event ( IRSB* bbOut, IRMBusEvent event )
-//{
-// switch (event) {
-// case Imbe_SnoopedStoreBegin:
-// case Imbe_SnoopedStoreEnd:
-// /* These arise from ppc stwcx. insns. They should perhaps be
-// handled better. */
-// break;
-// case Imbe_Fence:
-// break; /* not interesting */
-// case Imbe_BusLock:
-// case Imbe_BusUnlock:
-// addStmtToIRSB(
-// bbOut,
-// IRStmt_Dirty(
-// unsafeIRDirty_0_N(
-// 0/*regparms*/,
-// event == Imbe_BusLock ? "evh__bus_lock"
-// : "evh__bus_unlock",
-// VG_(fnptr_to_fnentry)(
-// event == Imbe_BusLock ? &evh__bus_lock
-// : &evh__bus_unlock
-// ),
-// mkIRExprVec_0()
-// )
-// )
-// );
-// break;
-// default:
-// tl_assert(0);
-// }
-//}
-
-
static
IRSB* hg_instrument ( VgCallbackClosure* closure,
IRSB* bbIn,
@@ -3644,10 +3610,10 @@
VexGuestExtents* vge,
IRType gWordTy, IRType hWordTy )
{
- Int i;
- IRSB* bbOut;
- Bool x86busLocked = False;
- Bool isSnoopedStore = False;
+ Int i;
+ IRSB* bbOut;
+ Addr64 cia; /* address of current insn */
+ IRStmt* st;
if (gWordTy != hWordTy) {
/* We don't currently support this case. */
@@ -3667,8 +3633,16 @@
i++;
}
+ // Get the first statement, and initial cia from it
+ tl_assert(bbIn->stmts_used > 0);
+ tl_assert(i < bbIn->stmts_used);
+ st = bbIn->stmts[i];
+ tl_assert(Ist_IMark == st->tag);
+ cia = st->Ist.IMark.addr;
+ st = NULL;
+
for (/*use current i*/; i < bbIn->stmts_used; i++) {
- IRStmt* st = bbIn->stmts[i];
+ st = bbIn->stmts[i];
tl_assert(st);
tl_assert(isFlatIRStmt(st));
switch (st->tag) {
@@ -3676,43 +3650,45 @@
case Ist_AbiHint:
case Ist_Put:
case Ist_PutI:
- case Ist_IMark:
case Ist_Exit:
/* None of these can contain any memory references. */
break;
+ case Ist_IMark:
+ /* no mem refs, but note the insn address. */
+ cia = st->Ist.IMark.addr;
+ break;
+
case Ist_MBE:
//instrument_memory_bus_event( bbOut, st->Ist.MBE.event );
switch (st->Ist.MBE.event) {
case Imbe_Fence:
break; /* not interesting */
- /* Imbe_Bus{Lock,Unlock} arise from x86/amd64 LOCK
- prefixed instructions. */
- case Imbe_BusLock:
- tl_assert(x86busLocked == False);
- x86busLocked = True;
- break;
- case Imbe_BusUnlock:
- tl_assert(x86busLocked == True);
- x86busLocked = False;
- break;
- /* Imbe_SnoopedStore{Begin,End} arise from ppc
- stwcx. instructions. */
- case Imbe_SnoopedStoreBegin:
- tl_assert(isSnoopedStore == False);
- isSnoopedStore = True;
- break;
- case Imbe_SnoopedStoreEnd:
- tl_assert(isSnoopedStore == True);
- isSnoopedStore = False;
- break;
default:
goto unhandled;
}
break;
+ case Ist_CAS: {
+ /* Atomic read-modify-write cycle. Just pretend it's a
+ read. */
+ IRCAS* cas = st->Ist.CAS.details;
+ Bool isDCAS = cas->dataHi != NULL;
+ instrument_mem_access(
+ bbOut,
+ cas->addr,
+ (isDCAS ? 2 : 1)
+ * sizeofIRType(typeOfIRExpr(bbIn->tyenv, cas->dataLo)),
+ False/*!isStore*/,
+ sizeofIRType(hWordTy)
+ );
+ break;
+ }
+
case Ist_Store:
- if (!x86busLocked && !isSnoopedStore)
+ /* It seems we pretend that store-conditionals don't
+ exist, viz, just ignore them ... */
+ if (st->Ist.Store.resSC == IRTemp_INVALID) {
instrument_mem_access(
bbOut,
st->Ist.Store.addr,
@@ -3720,9 +3696,12 @@
True/*isStore*/,
sizeofIRType(hWordTy)
);
+ }
break;
case Ist_WrTmp: {
+ /* ... whereas here we don't care whether a load is a
+ vanilla one or a load-linked. */
IRExpr* data = st->Ist.WrTmp.data;
if (data->tag == Iex_Load) {
instrument_mem_access(
@@ -3751,11 +3730,6 @@
sizeofIRType(hWordTy)
);
}
- /* This isn't really correct. Really the
- instrumentation should be only added when
- (!x86busLocked && !isSnoopedStore), just like with
- Ist_Store. Still, I don't think this is
- particularly important. */
if (d->mFx == Ifx_Write || d->mFx == Ifx_Modify) {
instrument_mem_access(
bbOut, d->mAddr, dataSize, True/*isStore*/,
Modified: trunk/helgrind/libhb_core.c
===================================================================
--- trunk/helgrind/libhb_core.c 2009-07-01 05:05:38 UTC (rev 10391)
+++ trunk/helgrind/libhb_core.c 2009-07-01 08:10:49 UTC (rev 10392)
@@ -2393,7 +2393,7 @@
return ord;
}
static inline POrd VtsID__getOrdering ( VtsID vi1, VtsID vi2 ) {
- return vi1 == vi2 ? POrd_EQ : VtsID__getOrdering_WRK(vi1, vi2);
+ return LIKELY(vi1 == vi2) ? POrd_EQ : VtsID__getOrdering_WRK(vi1, vi2);
}
/* compute binary join */
@@ -2424,7 +2424,7 @@
return res;
}
static inline VtsID VtsID__join2 ( VtsID vi1, VtsID vi2 ) {
- return vi1 == vi2 ? vi1 : VtsID__join2_WRK(vi1, vi2);
+ return LIKELY(vi1 == vi2) ? vi1 : VtsID__join2_WRK(vi1, vi2);
}
/* create a singleton VTS, namely [thr:1] */
@@ -3653,7 +3653,7 @@
tl_assert(is_sane_SVal_C(svOld));
}
- if (SVal__isC(svOld)) {
+ if (LIKELY(SVal__isC(svOld))) {
POrd ord;
VtsID tviR = acc_thr->viR;
VtsID tviW = acc_thr->viW;
@@ -3661,7 +3661,7 @@
VtsID wmini = SVal__unC_Wmin(svOld);
ord = VtsID__getOrdering(rmini,tviR);
- if (ord == POrd_EQ || ord == POrd_LT) {
+ if (LIKELY(ord == POrd_EQ || ord == POrd_LT)) {
/* no race */
/* Note: RWLOCK subtlety: use tviW, not tviR */
svNew = SVal__mkC( rmini, VtsID__join2(wmini, tviW) );
@@ -3708,9 +3708,10 @@
if (CHECK_MSM) {
tl_assert(is_sane_SVal_C(svNew));
}
- tl_assert(svNew != SVal_INVALID);
- if (svNew != svOld && HG_(clo_show_conflicts)) {
- if (SVal__isC(svOld) && SVal__isC(svNew)) {
+ if (UNLIKELY(svNew != svOld)) {
+ tl_assert(svNew != SVal_INVALID);
+ if (HG_(clo_show_conflicts)
+ && SVal__isC(svOld) && SVal__isC(svNew)) {
event_map_bind( acc_addr, szB, False/*!isWrite*/, acc_thr );
stats__msm_read_change++;
}
@@ -3734,13 +3735,13 @@
tl_assert(is_sane_SVal_C(svOld));
}
- if (SVal__isC(svOld)) {
+ if (LIKELY(SVal__isC(svOld))) {
POrd ord;
VtsID tviW = acc_thr->viW;
VtsID wmini = SVal__unC_Wmin(svOld);
ord = VtsID__getOrdering(wmini,tviW);
- if (ord == POrd_EQ || ord == POrd_LT) {
+ if (LIKELY(ord == POrd_EQ || ord == POrd_LT)) {
/* no race */
svNew = SVal__mkC( tviW, tviW );
goto out;
@@ -3807,9 +3808,10 @@
if (CHECK_MSM) {
tl_assert(is_sane_SVal_C(svNew));
}
- tl_assert(svNew != SVal_INVALID);
- if (svNew != svOld && HG_(clo_show_conflicts)) {
- if (SVal__isC(svOld) && SVal__isC(svNew)) {
+ if (UNLIKELY(svNew != svOld)) {
+ tl_assert(svNew != SVal_INVALID);
+ if (HG_(clo_show_conflicts)
+ && SVal__isC(svOld) && SVal__isC(svNew)) {
event_map_bind( acc_addr, szB, True/*isWrite*/, acc_thr );
stats__msm_write_change++;
}
@@ -3845,7 +3847,8 @@
}
svOld = cl->svals[cloff];
svNew = msm_read( svOld, thr,a,1 );
- tl_assert(svNew != SVal_INVALID);
+ if (CHECK_ZSM)
+ tl_assert(svNew != SVal_INVALID);
cl->svals[cloff] = svNew;
}
@@ -3868,7 +3871,8 @@
}
svOld = cl->svals[cloff];
svNew = msm_write( svOld, thr,a,1 );
- tl_assert(svNew != SVal_INVALID);
+ if (CHECK_ZSM)
+ tl_assert(svNew != SVal_INVALID);
cl->svals[cloff] = svNew;
}
@@ -3898,7 +3902,8 @@
}
svOld = cl->svals[cloff];
svNew = msm_read( svOld, thr,a,2 );
- tl_assert(svNew != SVal_INVALID);
+ if (CHECK_ZSM)
+ tl_assert(svNew != SVal_INVALID);
cl->svals[cloff] = svNew;
return;
slowcase: /* misaligned, or must go further down the tree */
@@ -3931,7 +3936,8 @@
}
svOld = cl->svals[cloff];
svNew = msm_write( svOld, thr,a,2 );
- tl_assert(svNew != SVal_INVALID);
+ if (CHECK_ZSM)
+ tl_assert(svNew != SVal_INVALID);
cl->svals[cloff] = svNew;
return;
slowcase: /* misaligned, or must go further down the tree */
@@ -3965,7 +3971,8 @@
}
svOld = cl->svals[cloff];
svNew = msm_read( svOld, thr,a,4 );
- tl_assert(svNew != SVal_INVALID);
+ if (CHECK_ZSM)
+ tl_assert(svNew != SVal_INVALID);
cl->svals[cloff] = svNew;
return;
slowcase: /* misaligned, or must go further down the tree */
@@ -3997,7 +4004,8 @@
}
svOld = cl->svals[cloff];
svNew = msm_write( svOld, thr,a,4 );
- tl_assert(svNew != SVal_INVALID);
+ if (CHECK_ZSM)
+ tl_assert(svNew != SVal_INVALID);
cl->svals[cloff] = svNew;
return;
slowcase: /* misaligned, or must go further down the tree */
@@ -4026,7 +4034,8 @@
}
svOld = cl->svals[cloff];
svNew = msm_read( svOld, thr,a,8 );
- tl_assert(svNew != SVal_INVALID);
+ if (CHECK_ZSM)
+ tl_assert(svNew != SVal_INVALID);
cl->svals[cloff] = svNew;
return;
slowcase: /* misaligned, or must go further down the tree */
@@ -4053,7 +4062,8 @@
}
svOld = cl->svals[cloff];
svNew = msm_write( svOld, thr,a,8 );
- tl_assert(svNew != SVal_INVALID);
+ if (CHECK_ZSM)
+ tl_assert(svNew != SVal_INVALID);
cl->svals[cloff] = svNew;
return;
slowcase: /* misaligned, or must go further down the tree */
Modified: trunk/include/pub_tool_tooliface.h
===================================================================
--- trunk/include/pub_tool_tooliface.h 2009-07-01 05:05:38 UTC (rev 10391)
+++ trunk/include/pub_tool_tooliface.h 2009-07-01 08:10:49 UTC (rev 10392)
@@ -386,9 +386,19 @@
/* Tool does stuff before and/or after system calls? */
// Nb: If either of the pre_ functions malloc() something to return, the
// corresponding post_ function had better free() it!
+// Also, the args are the 'original args' -- that is, it may be
+// that the syscall pre-wrapper will modify the args before the
+// syscall happens. So these args are the original, un-modified
+// args. Finally, nArgs merely indicates the length of args[..],
+// it does not indicate how many of those values are actually
+// relevant to the syscall. args[0 .. nArgs-1] is guaranteed
+// to be defined and to contain all the args for this syscall,
+// possibly including some trailing zeroes.
extern void VG_(needs_syscall_wrapper) (
- void (* pre_syscall)(ThreadId tid, UInt syscallno),
- void (*post_syscall)(ThreadId tid, UInt syscallno, SysRes res)
+ void (* pre_syscall)(ThreadId tid, UInt syscallno,
+ UWord* args, UInt nArgs),
+ void (*post_syscall)(ThreadId tid, UInt syscallno,
+ UWord* args, UInt nArgs, SysRes res)
);
/* Are tool-state sanity checks performed? */
Modified: trunk/lackey/lk_main.c
===================================================================
--- trunk/lackey/lk_main.c 2009-07-01 05:05:38 UTC (rev 10391)
+++ trunk/lackey/lk_main.c 2009-07-01 08:10:49 UTC (rev 10392)
@@ -784,6 +784,27 @@
break;
}
+ case Ist_CAS: {
+ /* We treat it as a read and a write of the location. I
+ think that is the same behaviour as it was before IRCAS
+ was introduced, since prior to that point, the Vex
+ front ends would translate a lock-prefixed instruction
+ into a (normal) read followed by a (normal) write. */
+ if (clo_trace_mem) {
+ Int dataSize;
+ IRCAS* cas = st->Ist.CAS.details;
+ tl_assert(cas->addr != NULL);
+ tl_assert(cas->dataLo != NULL);
+ dataSize = sizeofIRType(typeOfIRExpr(tyenv, cas->dataLo));
+ if (cas->dataHi != NULL)
+ dataSize *= 2; /* since it's a doubleword-CAS */
+ addEvent_Dr( sbOut, cas->addr, dataSize );
+ addEvent_Dw( sbOut, cas->addr, dataSize );
+ }
+ addStmtToIRSB( sbOut, st );
+ break;
+ }
+
case Ist_Exit:
if (clo_basic_counts) {
// The condition of a branch was inverted by VEX if a taken
Modified: trunk/massif/ms_main.c
===================================================================
--- trunk/massif/ms_main.c 2009-07-01 05:05:38 UTC (rev 10391)
+++ trunk/massif/ms_main.c 2009-07-01 08:10:49 UTC (rev 10392)
@@ -1899,12 +1899,14 @@
IRTemp t2 = newIRTemp(sbOut->tyenv, Ity_I64);
IRExpr* counter_addr = mkIRExpr_HWord( (HWord)&guest_instrs_executed );
- IRStmt* st1 = IRStmt_WrTmp(t1, IRExpr_Load(END, Ity_I64, counter_addr));
+ IRStmt* st1 = IRStmt_WrTmp(t1, IRExpr_Load(False/*!isLL*/,
+ END, Ity_I64, counter_addr));
IRStmt* st2 =
IRStmt_WrTmp(t2,
IRExpr_Binop(Iop_Add64, IRExpr_RdTmp(t1),
IRExpr_Const(IRConst_U64(n))));
- IRStmt* st3 = IRStmt_Store(END, counter_addr, IRExpr_RdTmp(t2));
+ IRStmt* st3 = IRStmt_Store(END, IRTemp_INVALID/*"not store-conditional"*/,
+ counter_addr, IRExpr_RdTmp(t2));
addStmtToIRSB( sbOut, st1 );
addStmtToIRSB( sbOut, st2 );
Modified: trunk/memcheck/mc_machine.c
===================================================================
--- trunk/memcheck/mc_machine.c 2009-07-01 05:05:38 UTC (rev 10391)
+++ trunk/memcheck/mc_machine.c 2009-07-01 08:10:49 UTC (rev 10392)
@@ -182,7 +182,6 @@
if (o == GOF(CIA) && sz == 8) return -1;
if (o == GOF(IP_AT_SYSCALL) && sz == 8) return -1; /* slot unused */
- if (o == GOF(RESVN) && sz == 8) return -1;
if (o == GOF(FPROUND) && sz == 4) return -1;
if (o == GOF(EMWARN) && sz == 4) return -1;
if (o == GOF(TISTART) && sz == 8) return -1;
@@ -341,7 +340,6 @@
if (o == GOF(CIA) && sz == 4) return -1;
if (o == GOF(IP_AT_SYSCALL) && sz == 4) return -1; /* slot unused */
- if (o == GOF(RESVN) && sz == 4) return -1;
if (o == GOF(FPROUND) && sz == 4) return -1;
if (o == GOF(VRSAVE) && sz == 4) return -1;
if (o == GOF(EMWARN) && sz == 4) return -1;
Modified: trunk/memcheck/mc_translate.c
===================================================================
--- trunk/memcheck/mc_translate.c 2009-07-01 05:05:38 UTC (rev 10391)
+++ trunk/memcheck/mc_translate.c 2009-07-01 08:10:49 UTC (rev 10392)
@@ -126,26 +126,57 @@
/*--- Memcheck running state, and tmp management. ---*/
/*------------------------------------------------------------*/
+/* Carries info about a particular tmp. The tmp's number is not
+ recorded, as this is implied by (equal to) its index in the tmpMap
+ in MCEnv. The tmp's type is also not recorded, as this is present
+ in MCEnv.sb->tyenv.
+
+ When .kind is Orig, .shadowV and .shadowB may give the identities
+ of the temps currently holding the associated definedness (shadowV)
+ and origin (shadowB) values, or these may be IRTemp_INVALID if code
+ to compute such values has not yet been emitted.
+
+ When .kind is VSh or BSh then the tmp is holds a V- or B- value,
+ and so .shadowV and .shadowB must be IRTemp_INVALID, since it is
+ illogical for a shadow tmp itself to be shadowed.
+*/
+typedef
+ enum { Orig=1, VSh=2, BSh=3 }
+ TempKind;
+
+typedef
+ struct {
+ TempKind kind;
+ IRTemp shadowV;
+ IRTemp shadowB;
+ }
+ TempMapEnt;
+
+
/* Carries around state during memcheck instrumentation. */
typedef
struct _MCEnv {
/* MODIFIED: the superblock being constructed. IRStmts are
added. */
- IRSB* bb;
+ IRSB* sb;
Bool trace;
- /* MODIFIED: a table [0 .. #temps_in_original_bb-1] which maps
- original temps to their current their current shadow temp.
- Initially all entries are IRTemp_INVALID. Entries are added
- lazily since many original temps are not used due to
- optimisation prior to instrumentation. Note that floating
- point original tmps are shadowed by integer tmps of the same
- size, and Bit-typed original tmps are shadowed by the type
- Ity_I8. See comment below. */
- IRTemp* tmpMapV; /* V-bit tmp shadows */
- IRTemp* tmpMapB; /* origin tracking tmp shadows */
- Int n_originalTmps; /* for range checking */
+ /* MODIFIED: a table [0 .. #temps_in_sb-1] which gives the
+ current kind and possibly shadow temps for each temp in the
+ IRSB being constructed. Note that it does not contain the
+ type of each tmp. If you want to know the type, look at the
+ relevant entry in sb->tyenv. It follows that at all times
+ during the instrumentation process, the valid indices for
+ tmpMap and sb->tyenv are identical, being 0 .. N-1 where N is
+ total number of Orig, V- and B- temps allocated so far.
+ The reason for this strange split (types in one place, all
+ other info in another) is that we need the types to be
+ attached to sb so as to make it possible to do
+ "typeOfIRExpr(mce->bb->tyenv, ...)" at various places in the
+ instrumentation process. */
+ XArray* /* of TempMapEnt */ tmpMap;
+
/* MODIFIED: indicates whether "bogus" literals have so far been
found. Starts off False, and may change to True. */
Bool bogusLiterals;
@@ -185,17 +216,44 @@
sanity checker should catch all such anomalies, however.
*/
+/* Create a new IRTemp of type 'ty' and kind 'kind', and add it to
+ both the table in mce->sb and to our auxiliary mapping. Note that
+ newTemp may cause mce->tmpMap to resize, hence previous results
+ from VG_(indexXA)(mce->tmpMap) are invalidated. */
+static IRTemp newTemp ( MCEnv* mce, IRType ty, TempKind kind )
+{
+ Word newIx;
+ TempMapEnt ent;
+ IRTemp tmp = newIRTemp(mce->sb->tyenv, ty);
+ ent.kind = kind;
+ ent.shadowV = IRTemp_INVALID;
+ ent.shadowB = IRTemp_INVALID;
+ newIx = VG_(addToXA)( mce->tmpMap, &ent );
+ tl_assert(newIx == (Word)tmp);
+ return tmp;
+}
+
+
/* Find the tmp currently shadowing the given original tmp. If none
so far exists, allocate one. */
static IRTemp findShadowTmpV ( MCEnv* mce, IRTemp orig )
{
- tl_assert(orig < mce->n_originalTmps);
- if (mce->tmpMapV[orig] == IRTemp_INVALID) {
- mce->tmpMapV[orig]
- = newIRTemp(mce->bb->tyenv,
- shadowTypeV(mce->bb->tyenv->types[orig]));
+ TempMapEnt* ent;
+ /* VG_(indexXA) range-checks 'orig', hence no need to check
+ here. */
+ ent = (TempMapEnt*)VG_(indexXA)( mce->tmpMap, (Word)orig );
+ tl_assert(ent->kind == Orig);
+ if (ent->shadowV == IRTemp_INVALID) {
+ IRTemp tmpV
+ = newTemp( mce, shadowTypeV(mce->sb->tyenv->types[orig]), VSh );
+ /* newTemp may cause mce->tmpMap to resize, hence previous results
+ from VG_(indexXA) are invalid. */
+ ent = (TempMapEnt*)VG_(indexXA)( mce->tmpMap, (Word)orig );
+ tl_assert(ent->kind == Orig);
+ tl_assert(ent->shadowV == IRTemp_INVALID);
+ ent->shadowV = tmpV;
}
- return mce->tmpMapV[orig];
+ return ent->shadowV;
}
/* Allocate a new shadow for the given original tmp. This means any
@@ -203,13 +261,27 @@
necessary to give a new value to a shadow once it has been tested
for undefinedness, but unfortunately IR's SSA property disallows
this. Instead we must abandon the old shadow, allocate a new one
- and use that instead. */
+ and use that instead.
+
+ This is the same as findShadowTmpV, except we don't bother to see
+ if a shadow temp already existed -- we simply allocate a new one
+ regardless. */
static void newShadowTmpV ( MCEnv* mce, IRTemp orig )
{
- tl_assert(orig < mce->n_originalTmps);
- mce->tmpMapV[orig]
- = newIRTemp(mce->bb->tyenv,
- shadowTypeV(mce->bb->tyenv->types[orig]));
+ TempMapEnt* ent;
+ /* VG_(indexXA) range-checks 'orig', hence no need to check
+ here. */
+ ent = (TempMapEnt*)VG_(indexXA)( mce->tmpMap, (Word)orig );
+ tl_assert(ent->kind == Orig);
+ if (1) {
+ IRTemp tmpV
+ = newTemp( mce, shadowTypeV(mce->sb->tyenv->types[orig]), VSh );
+ /* newTemp may cause mce->tmpMap to resize, hence previous results
+ from VG_(indexXA) are invalid. */
+ ent = (TempMapEnt*)VG_(indexXA)( mce->tmpMap, (Word)orig );
+ tl_assert(ent->kind == Orig);
+ ent->shadowV = tmpV;
+ }
}
@@ -232,8 +304,10 @@
{
if (a1->tag == Iex_Const)
return True;
- if (a1->tag == Iex_RdTmp && a1->Iex.RdTmp.tmp < mce->n_originalTmps)
- return True;
+ if (a1->tag == Iex_RdTmp) {
+ TempMapEnt* ent = VG_(indexXA)( mce->tmpMap, a1->Iex.RdTmp.tmp );
+ return ent->kind == Orig;
+ }
return False;
}
@@ -243,8 +317,10 @@
{
if (a1->tag == Iex_Const)
return True;
- if (a1->tag == Iex_RdTmp && a1->Iex.RdTmp.tmp >= mce->n_originalTmps)
- return True;
+ if (a1->tag == Iex_RdTmp) {
+ TempMapEnt* ent = VG_(indexXA)( mce->tmpMap, a1->Iex.RdTmp.tmp );
+ ...
[truncated message content] |
|
From: <sv...@va...> - 2009-07-01 08:07:48
|
Author: sewardj Date: 2009-07-01 09:07:29 +0100 (Wed, 01 Jul 2009) New Revision: 1902 Log: Rename 'Makefile' to 'Makefile-gcc' so as to be compatible with recent Valgrind build-system changes. Added: trunk/Makefile-gcc Removed: trunk/Makefile Deleted: trunk/Makefile =================================================================== --- trunk/Makefile 2009-07-01 08:06:34 UTC (rev 1901) +++ trunk/Makefile 2009-07-01 08:07:29 UTC (rev 1902) @@ -1,321 +0,0 @@ - -PUB_HEADERS = pub/libvex_basictypes.h \ - pub/libvex_ir.h \ - pub/libvex.h \ - pub/libvex_trc_values.h \ - pub/libvex_emwarn.h \ - pub/libvex_guest_x86.h \ - pub/libvex_guest_amd64.h \ - pub/libvex_guest_arm.h \ - pub/libvex_guest_ppc32.h \ - pub/libvex_guest_ppc64.h \ - pub/libvex_guest_offsets.h - -PRIV_HEADERS = priv/host-x86/hdefs.h \ - priv/host-amd64/hdefs.h \ - priv/host-arm/hdefs.h \ - priv/host-ppc/hdefs.h \ - priv/host-generic/h_generic_regs.h \ - priv/host-generic/h_generic_simd64.h \ - priv/main/vex_globals.h \ - priv/main/vex_util.h \ - priv/guest-generic/g_generic_x87.h \ - priv/guest-generic/bb_to_IR.h \ - priv/guest-x86/gdefs.h \ - priv/guest-amd64/gdefs.h \ - priv/guest-arm/gdefs.h \ - priv/guest-ppc/gdefs.h \ - priv/ir/irmatch.h \ - priv/ir/iropt.h - -LIB_OBJS = priv/ir/irdefs.o \ - priv/ir/irmatch.o \ - priv/ir/iropt.o \ - priv/main/vex_main.o \ - priv/main/vex_globals.o \ - priv/main/vex_util.o \ - priv/host-x86/hdefs.o \ - priv/host-amd64/hdefs.o \ - priv/host-arm/hdefs.o \ - priv/host-ppc/hdefs.o \ - priv/host-x86/isel.o \ - priv/host-amd64/isel.o \ - priv/host-arm/isel.o \ - priv/host-ppc/isel.o \ - priv/host-generic/h_generic_regs.o \ - priv/host-generic/h_generic_simd64.o \ - priv/host-generic/reg_alloc2.o \ - priv/guest-generic/g_generic_x87.o \ - priv/guest-generic/bb_to_IR.o \ - priv/guest-x86/ghelpers.o \ - priv/guest-amd64/ghelpers.o \ - priv/guest-arm/ghelpers.o \ - priv/guest-ppc/ghelpers.o \ - priv/guest-x86/toIR.o \ - priv/guest-amd64/toIR.o \ - priv/guest-arm/toIR.o \ - priv/guest-ppc/toIR.o - -PUB_INCLUDES = -Ipub - -# Do not add any priv/host-ARCH or priv/guest-ARCH directories to this -# list, as they contain duplicate file names (each host has a hdefs.h, -# for example). -PRIV_INCLUDES = -Ipriv - - -ifndef CC - CC = gcc -endif -ifndef AR - AR = ar -endif - -# Put -g -O2 after any flags we inherit from V. -O2 vs -O -# makes a significant difference, at least with gcc4. -CCFLAGS = -Wall -Wmissing-prototypes -Wshadow \ - -Wpointer-arith -Wbad-function-cast -Wcast-qual \ - -Wcast-align -Wmissing-declarations \ - $(EXTRA_CFLAGS) -g -O2 -fstrict-aliasing - -#CC = icc -#CCFLAGS = -g -Wall -wd981 -wd279 -wd1287 -wd869 -wd111 -wd188 -wd186 -# 981: operands are evaluated in unspecified order -# 279: controlling expression is constant -# 1287: invalid attribute for parameter -# 869: parameter "..." was never referenced -# 111: statement is unreachable -# 188: enumerated type mixed with another type -# (the above are for icc 8.0 -- 8.0.0.55 I think) -# 186: pointless comparison of unsigned integer with zero - -# kludge: stops V biarch builds screwing up at -j 2 or above -# The Right fix is to autoconf/automake-ise vex. -.NOTPARALLEL: - -all: vex - -# Empty, needed for Valgrind -install: - -scratch: clean version all - -vex: libvex.a test_main.o - $(CC) $(CCFLAGS) -o vex test_main.o libvex.a - -libvex.a: $(LIB_OBJS) - rm -f libvex.a - $(AR) crus libvex.a $(LIB_OBJS) - - -# The idea with these TAG-s is to mark the flavour of libvex.a -# most recently built, so if the same target is re-requested, we -# don't rebuild everything, but if a different one is requested -# then we scrub everything and start over. - -libvex-x86-linux.a: TAG-x86-linux libvex.a - mv -f libvex.a libvex-x86-linux.a -TAG-x86-linux: - if [ ! -f TAG-x86-linux ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi - touch TAG-x86-linux - -libvex-amd64-linux.a: TAG-amd64-linux libvex.a - mv -f libvex.a libvex-amd64-linux.a -TAG-amd64-linux: - if [ ! -f TAG-amd64-linux ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi - touch TAG-amd64-linux - -libvex-ppc32-linux.a: TAG-ppc32-linux libvex.a - mv -f libvex.a libvex-ppc32-linux.a -TAG-ppc32-linux: - if [ ! -f TAG-ppc32-linux ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi - touch TAG-ppc32-linux - -libvex-ppc64-linux.a: TAG-ppc64-linux libvex.a - mv -f libvex.a libvex-ppc64-linux.a -TAG-ppc64-linux: - if [ ! -f TAG-ppc64-linux ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi - touch TAG-ppc64-linux - -libvex-ppc32-aix5.a: TAG-ppc32-aix5 libvex.a - mv -f libvex.a libvex-ppc32-aix5.a -TAG-ppc32-aix5: - if [ ! -f TAG-ppc32-aix5 ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi - touch TAG-ppc32-aix5 - -libvex-ppc64-aix5.a: TAG-ppc64-aix5 libvex.a - mv -f libvex.a libvex-ppc64-aix5.a -TAG-ppc64-aix5: - if [ ! -f TAG-ppc64-aix5 ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi - touch TAG-ppc64-aix5 - -libvex-x86-darwin.a: TAG-x86-darwin libvex.a - mv -f libvex.a libvex-x86-darwin.a -TAG-x86-darwin: - if [ ! -f TAG-x86-darwin ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi - touch TAG-x86-darwin - -libvex-amd64-darwin.a: TAG-amd64-darwin libvex.a - mv -f libvex.a libvex-amd64-darwin.a -TAG-amd64-darwin: - if [ ! -f TAG-amd64-darwin ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi - touch TAG-amd64-darwin - - -# This doesn't get rid of priv/main/vex_svnversion.h, because -# that can't be regenerated in the final Valgrind tarball, and -# so if 'make clean' did get rid of it, then in the tarball, -# doing 'make ; make clean ; make' (or distclean) would fail. -clean: - rm -f $(LIB_OBJS) *.a vex test_main.o TAG-* \ - pub/libvex_guest_offsets.h \ - auxprogs/genoffsets.s - -version: - rm -f priv/main/vex_svnversion.h - cat quote.txt >> priv/main/vex_svnversion.h - svnversion -n . >> priv/main/vex_svnversion.h - cat quote.txt >> priv/main/vex_svnversion.h - cat newline.txt >> priv/main/vex_svnversion.h - -minidist: version - rm -f vex--minidist-2005MMDD.tar - tar cf vex--minidist-2005MMDD.tar $(PUB_HEADERS) $(PRIV_HEADERS) \ - priv/main/vex_svnversion.h \ - test_main.c test_main.h \ - Makefile \ - `echo $(LIB_OBJS) | sed "s/\.o/\.c/g"` - @echo - @echo minidist done, size and svnversion follow: - @ls -l vex--minidist-2005MMDD.tar - @cat priv/main/vex_svnversion.h - @echo - -# This is very uggerly. Need to sed out both "xyzzyN" and -# "xyzzy$N" since gcc on different targets emits the constants -# differently -- with a leading $ on x86/amd64 but none on ppc32/64. -pub/libvex_guest_offsets.h: - rm -f auxprogs/genoffsets.s - $(CC) $(CCFLAGS) -O -S -o auxprogs/genoffsets.s \ - auxprogs/genoffsets.c - grep xyzzy auxprogs/genoffsets.s | grep define \ - | sed "s/xyzzy\\$$//g" | sed "s/xyzzy//g" \ - > pub/libvex_guest_offsets.h - rm -f auxprogs/genoffsets.s - - -ALL_HEADERS = $(PUB_HEADERS) $(PRIV_HEADERS) -ALL_INCLUDES = $(PUB_INCLUDES) $(PRIV_INCLUDES) - -test_main.o: $(PUB_HEADERS) test_main.c test_main.h - $(CC) $(CCFLAGS) $(PUB_INCLUDES) -o test_main.o \ - -c test_main.c - -priv/ir/irdefs.o: $(ALL_HEADERS) priv/ir/irdefs.c - $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/ir/irdefs.o \ - -c priv/ir/irdefs.c - -priv/ir/irmatch.o: $(ALL_HEADERS) priv/ir/irmatch.c - $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/ir/irmatch.o \ - -c priv/ir/irmatch.c - -priv/ir/iropt.o: $(ALL_HEADERS) priv/ir/iropt.c - $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/ir/iropt.o \ - -c priv/ir/iropt.c - -priv/main/vex_main.o: $(ALL_HEADERS) priv/main/vex_main.c \ - priv/main/vex_svnversion.h - $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/main/vex_main.o \ - -c priv/main/vex_main.c - -priv/main/vex_globals.o: $(ALL_HEADERS) priv/main/vex_globals.c - $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/main/vex_globals.o \ - -c priv/main/vex_globals.c - -priv/main/vex_util.o: $(ALL_HEADERS) priv/main/vex_util.c - $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/main/vex_util.o \ - -c priv/main/vex_util.c - -priv/host-x86/hdefs.o: $(ALL_HEADERS) priv/host-x86/hdefs.c - $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-x86/hdefs.o \ - -c priv/host-x86/hdefs.c - -priv/host-amd64/hdefs.o: $(ALL_HEADERS) priv/host-amd64/hdefs.c - $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-amd64/hdefs.o \ - -c priv/host-amd64/hdefs.c - -priv/host-arm/hdefs.o: $(ALL_HEADERS) priv/host-arm/hdefs.c - $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-arm/hdefs.o \ - -c priv/host-arm/hdefs.c - -priv/host-ppc/hdefs.o: $(ALL_HEADERS) priv/host-ppc/hdefs.c - $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-ppc/hdefs.o \ - -c priv/host-ppc/hdefs.c - -priv/host-x86/isel.o: $(ALL_HEADERS) priv/host-x86/isel.c - $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-x86/isel.o \ - -c priv/host-x86/isel.c - -priv/host-amd64/isel.o: $(ALL_HEADERS) priv/host-amd64/isel.c - $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-amd64/isel.o \ - -c priv/host-amd64/isel.c - -priv/host-arm/isel.o: $(ALL_HEADERS) priv/host-arm/isel.c - $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-arm/isel.o \ - -c priv/host-arm/isel.c - -priv/host-ppc/isel.o: $(ALL_HEADERS) priv/host-ppc/isel.c - $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-ppc/isel.o \ - -c priv/host-ppc/isel.c - -priv/host-generic/h_generic_regs.o: $(ALL_HEADERS) priv/host-generic/h_generic_regs.c - $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-generic/h_generic_regs.o \ - -c priv/host-generic/h_generic_regs.c - -priv/host-generic/h_generic_simd64.o: $(ALL_HEADERS) priv/host-generic/h_generic_simd64.c - $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-generic/h_generic_simd64.o \ - -c priv/host-generic/h_generic_simd64.c - -priv/host-generic/reg_alloc2.o: $(ALL_HEADERS) priv/host-generic/reg_alloc2.c - $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-generic/reg_alloc2.o \ - -c priv/host-generic/reg_alloc2.c - -priv/guest-x86/toIR.o: $(ALL_HEADERS) priv/guest-x86/toIR.c - $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-x86/toIR.o \ - -c priv/guest-x86/toIR.c - -priv/guest-generic/g_generic_x87.o: $(ALL_HEADERS) priv/guest-generic/g_generic_x87.c - $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-generic/g_generic_x87.o \ - -c priv/guest-generic/g_generic_x87.c - -priv/guest-generic/bb_to_IR.o: $(ALL_HEADERS) priv/guest-generic/bb_to_IR.c - $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-generic/bb_to_IR.o \ - -c priv/guest-generic/bb_to_IR.c - -priv/guest-x86/ghelpers.o: $(ALL_HEADERS) priv/guest-x86/ghelpers.c - $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-x86/ghelpers.o \ - -c priv/guest-x86/ghelpers.c - -priv/guest-amd64/ghelpers.o: $(ALL_HEADERS) priv/guest-amd64/ghelpers.c - $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-amd64/ghelpers.o \ - -c priv/guest-amd64/ghelpers.c - -priv/guest-amd64/toIR.o: $(ALL_HEADERS) priv/guest-amd64/toIR.c - $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-amd64/toIR.o \ - -c priv/guest-amd64/toIR.c - -priv/guest-arm/ghelpers.o: $(ALL_HEADERS) priv/guest-arm/ghelpers.c - $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-arm/ghelpers.o \ - -c priv/guest-arm/ghelpers.c - -priv/guest-arm/toIR.o: $(ALL_HEADERS) priv/guest-arm/toIR.c - $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-arm/toIR.o \ - -c priv/guest-arm/toIR.c - -priv/guest-ppc/ghelpers.o: $(ALL_HEADERS) priv/guest-ppc/ghelpers.c - $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-ppc/ghelpers.o \ - -c priv/guest-ppc/ghelpers.c - -priv/guest-ppc/toIR.o: $(ALL_HEADERS) priv/guest-ppc/toIR.c - $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-ppc/toIR.o \ - -c priv/guest-ppc/toIR.c Copied: trunk/Makefile-gcc (from rev 1900, trunk/Makefile) =================================================================== --- trunk/Makefile-gcc (rev 0) +++ trunk/Makefile-gcc 2009-07-01 08:07:29 UTC (rev 1902) @@ -0,0 +1,321 @@ + +PUB_HEADERS = pub/libvex_basictypes.h \ + pub/libvex_ir.h \ + pub/libvex.h \ + pub/libvex_trc_values.h \ + pub/libvex_emwarn.h \ + pub/libvex_guest_x86.h \ + pub/libvex_guest_amd64.h \ + pub/libvex_guest_arm.h \ + pub/libvex_guest_ppc32.h \ + pub/libvex_guest_ppc64.h \ + pub/libvex_guest_offsets.h + +PRIV_HEADERS = priv/host-x86/hdefs.h \ + priv/host-amd64/hdefs.h \ + priv/host-arm/hdefs.h \ + priv/host-ppc/hdefs.h \ + priv/host-generic/h_generic_regs.h \ + priv/host-generic/h_generic_simd64.h \ + priv/main/vex_globals.h \ + priv/main/vex_util.h \ + priv/guest-generic/g_generic_x87.h \ + priv/guest-generic/bb_to_IR.h \ + priv/guest-x86/gdefs.h \ + priv/guest-amd64/gdefs.h \ + priv/guest-arm/gdefs.h \ + priv/guest-ppc/gdefs.h \ + priv/ir/irmatch.h \ + priv/ir/iropt.h + +LIB_OBJS = priv/ir/irdefs.o \ + priv/ir/irmatch.o \ + priv/ir/iropt.o \ + priv/main/vex_main.o \ + priv/main/vex_globals.o \ + priv/main/vex_util.o \ + priv/host-x86/hdefs.o \ + priv/host-amd64/hdefs.o \ + priv/host-arm/hdefs.o \ + priv/host-ppc/hdefs.o \ + priv/host-x86/isel.o \ + priv/host-amd64/isel.o \ + priv/host-arm/isel.o \ + priv/host-ppc/isel.o \ + priv/host-generic/h_generic_regs.o \ + priv/host-generic/h_generic_simd64.o \ + priv/host-generic/reg_alloc2.o \ + priv/guest-generic/g_generic_x87.o \ + priv/guest-generic/bb_to_IR.o \ + priv/guest-x86/ghelpers.o \ + priv/guest-amd64/ghelpers.o \ + priv/guest-arm/ghelpers.o \ + priv/guest-ppc/ghelpers.o \ + priv/guest-x86/toIR.o \ + priv/guest-amd64/toIR.o \ + priv/guest-arm/toIR.o \ + priv/guest-ppc/toIR.o + +PUB_INCLUDES = -Ipub + +# Do not add any priv/host-ARCH or priv/guest-ARCH directories to this +# list, as they contain duplicate file names (each host has a hdefs.h, +# for example). +PRIV_INCLUDES = -Ipriv + + +ifndef CC + CC = gcc +endif +ifndef AR + AR = ar +endif + +# Put -g -O2 after any flags we inherit from V. -O2 vs -O +# makes a significant difference, at least with gcc4. +CCFLAGS = -Wall -Wmissing-prototypes -Wshadow \ + -Wpointer-arith -Wbad-function-cast -Wcast-qual \ + -Wcast-align -Wmissing-declarations \ + $(EXTRA_CFLAGS) -g -O2 -fstrict-aliasing + +#CC = icc +#CCFLAGS = -g -Wall -wd981 -wd279 -wd1287 -wd869 -wd111 -wd188 -wd186 +# 981: operands are evaluated in unspecified order +# 279: controlling expression is constant +# 1287: invalid attribute for parameter +# 869: parameter "..." was never referenced +# 111: statement is unreachable +# 188: enumerated type mixed with another type +# (the above are for icc 8.0 -- 8.0.0.55 I think) +# 186: pointless comparison of unsigned integer with zero + +# kludge: stops V biarch builds screwing up at -j 2 or above +# The Right fix is to autoconf/automake-ise vex. +.NOTPARALLEL: + +all: vex + +# Empty, needed for Valgrind +install: + +scratch: clean version all + +vex: libvex.a test_main.o + $(CC) $(CCFLAGS) -o vex test_main.o libvex.a + +libvex.a: $(LIB_OBJS) + rm -f libvex.a + $(AR) crus libvex.a $(LIB_OBJS) + + +# The idea with these TAG-s is to mark the flavour of libvex.a +# most recently built, so if the same target is re-requested, we +# don't rebuild everything, but if a different one is requested +# then we scrub everything and start over. + +libvex-x86-linux.a: TAG-x86-linux libvex.a + mv -f libvex.a libvex-x86-linux.a +TAG-x86-linux: + if [ ! -f TAG-x86-linux ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi + touch TAG-x86-linux + +libvex-amd64-linux.a: TAG-amd64-linux libvex.a + mv -f libvex.a libvex-amd64-linux.a +TAG-amd64-linux: + if [ ! -f TAG-amd64-linux ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi + touch TAG-amd64-linux + +libvex-ppc32-linux.a: TAG-ppc32-linux libvex.a + mv -f libvex.a libvex-ppc32-linux.a +TAG-ppc32-linux: + if [ ! -f TAG-ppc32-linux ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi + touch TAG-ppc32-linux + +libvex-ppc64-linux.a: TAG-ppc64-linux libvex.a + mv -f libvex.a libvex-ppc64-linux.a +TAG-ppc64-linux: + if [ ! -f TAG-ppc64-linux ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi + touch TAG-ppc64-linux + +libvex-ppc32-aix5.a: TAG-ppc32-aix5 libvex.a + mv -f libvex.a libvex-ppc32-aix5.a +TAG-ppc32-aix5: + if [ ! -f TAG-ppc32-aix5 ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi + touch TAG-ppc32-aix5 + +libvex-ppc64-aix5.a: TAG-ppc64-aix5 libvex.a + mv -f libvex.a libvex-ppc64-aix5.a +TAG-ppc64-aix5: + if [ ! -f TAG-ppc64-aix5 ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi + touch TAG-ppc64-aix5 + +libvex-x86-darwin.a: TAG-x86-darwin libvex.a + mv -f libvex.a libvex-x86-darwin.a +TAG-x86-darwin: + if [ ! -f TAG-x86-darwin ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi + touch TAG-x86-darwin + +libvex-amd64-darwin.a: TAG-amd64-darwin libvex.a + mv -f libvex.a libvex-amd64-darwin.a +TAG-amd64-darwin: + if [ ! -f TAG-amd64-darwin ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi + touch TAG-amd64-darwin + + +# This doesn't get rid of priv/main/vex_svnversion.h, because +# that can't be regenerated in the final Valgrind tarball, and +# so if 'make clean' did get rid of it, then in the tarball, +# doing 'make ; make clean ; make' (or distclean) would fail. +clean: + rm -f $(LIB_OBJS) *.a vex test_main.o TAG-* \ + pub/libvex_guest_offsets.h \ + auxprogs/genoffsets.s + +version: + rm -f priv/main/vex_svnversion.h + cat quote.txt >> priv/main/vex_svnversion.h + svnversion -n . >> priv/main/vex_svnversion.h + cat quote.txt >> priv/main/vex_svnversion.h + cat newline.txt >> priv/main/vex_svnversion.h + +minidist: version + rm -f vex--minidist-2005MMDD.tar + tar cf vex--minidist-2005MMDD.tar $(PUB_HEADERS) $(PRIV_HEADERS) \ + priv/main/vex_svnversion.h \ + test_main.c test_main.h \ + Makefile \ + `echo $(LIB_OBJS) | sed "s/\.o/\.c/g"` + @echo + @echo minidist done, size and svnversion follow: + @ls -l vex--minidist-2005MMDD.tar + @cat priv/main/vex_svnversion.h + @echo + +# This is very uggerly. Need to sed out both "xyzzyN" and +# "xyzzy$N" since gcc on different targets emits the constants +# differently -- with a leading $ on x86/amd64 but none on ppc32/64. +pub/libvex_guest_offsets.h: + rm -f auxprogs/genoffsets.s + $(CC) $(CCFLAGS) -O -S -o auxprogs/genoffsets.s \ + auxprogs/genoffsets.c + grep xyzzy auxprogs/genoffsets.s | grep define \ + | sed "s/xyzzy\\$$//g" | sed "s/xyzzy//g" \ + > pub/libvex_guest_offsets.h + rm -f auxprogs/genoffsets.s + + +ALL_HEADERS = $(PUB_HEADERS) $(PRIV_HEADERS) +ALL_INCLUDES = $(PUB_INCLUDES) $(PRIV_INCLUDES) + +test_main.o: $(PUB_HEADERS) test_main.c test_main.h + $(CC) $(CCFLAGS) $(PUB_INCLUDES) -o test_main.o \ + -c test_main.c + +priv/ir/irdefs.o: $(ALL_HEADERS) priv/ir/irdefs.c + $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/ir/irdefs.o \ + -c priv/ir/irdefs.c + +priv/ir/irmatch.o: $(ALL_HEADERS) priv/ir/irmatch.c + $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/ir/irmatch.o \ + -c priv/ir/irmatch.c + +priv/ir/iropt.o: $(ALL_HEADERS) priv/ir/iropt.c + $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/ir/iropt.o \ + -c priv/ir/iropt.c + +priv/main/vex_main.o: $(ALL_HEADERS) priv/main/vex_main.c \ + priv/main/vex_svnversion.h + $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/main/vex_main.o \ + -c priv/main/vex_main.c + +priv/main/vex_globals.o: $(ALL_HEADERS) priv/main/vex_globals.c + $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/main/vex_globals.o \ + -c priv/main/vex_globals.c + +priv/main/vex_util.o: $(ALL_HEADERS) priv/main/vex_util.c + $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/main/vex_util.o \ + -c priv/main/vex_util.c + +priv/host-x86/hdefs.o: $(ALL_HEADERS) priv/host-x86/hdefs.c + $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-x86/hdefs.o \ + -c priv/host-x86/hdefs.c + +priv/host-amd64/hdefs.o: $(ALL_HEADERS) priv/host-amd64/hdefs.c + $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-amd64/hdefs.o \ + -c priv/host-amd64/hdefs.c + +priv/host-arm/hdefs.o: $(ALL_HEADERS) priv/host-arm/hdefs.c + $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-arm/hdefs.o \ + -c priv/host-arm/hdefs.c + +priv/host-ppc/hdefs.o: $(ALL_HEADERS) priv/host-ppc/hdefs.c + $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-ppc/hdefs.o \ + -c priv/host-ppc/hdefs.c + +priv/host-x86/isel.o: $(ALL_HEADERS) priv/host-x86/isel.c + $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-x86/isel.o \ + -c priv/host-x86/isel.c + +priv/host-amd64/isel.o: $(ALL_HEADERS) priv/host-amd64/isel.c + $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-amd64/isel.o \ + -c priv/host-amd64/isel.c + +priv/host-arm/isel.o: $(ALL_HEADERS) priv/host-arm/isel.c + $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-arm/isel.o \ + -c priv/host-arm/isel.c + +priv/host-ppc/isel.o: $(ALL_HEADERS) priv/host-ppc/isel.c + $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-ppc/isel.o \ + -c priv/host-ppc/isel.c + +priv/host-generic/h_generic_regs.o: $(ALL_HEADERS) priv/host-generic/h_generic_regs.c + $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-generic/h_generic_regs.o \ + -c priv/host-generic/h_generic_regs.c + +priv/host-generic/h_generic_simd64.o: $(ALL_HEADERS) priv/host-generic/h_generic_simd64.c + $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-generic/h_generic_simd64.o \ + -c priv/host-generic/h_generic_simd64.c + +priv/host-generic/reg_alloc2.o: $(ALL_HEADERS) priv/host-generic/reg_alloc2.c + $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-generic/reg_alloc2.o \ + -c priv/host-generic/reg_alloc2.c + +priv/guest-x86/toIR.o: $(ALL_HEADERS) priv/guest-x86/toIR.c + $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-x86/toIR.o \ + -c priv/guest-x86/toIR.c + +priv/guest-generic/g_generic_x87.o: $(ALL_HEADERS) priv/guest-generic/g_generic_x87.c + $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-generic/g_generic_x87.o \ + -c priv/guest-generic/g_generic_x87.c + +priv/guest-generic/bb_to_IR.o: $(ALL_HEADERS) priv/guest-generic/bb_to_IR.c + $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-generic/bb_to_IR.o \ + -c priv/guest-generic/bb_to_IR.c + +priv/guest-x86/ghelpers.o: $(ALL_HEADERS) priv/guest-x86/ghelpers.c + $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-x86/ghelpers.o \ + -c priv/guest-x86/ghelpers.c + +priv/guest-amd64/ghelpers.o: $(ALL_HEADERS) priv/guest-amd64/ghelpers.c + $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-amd64/ghelpers.o \ + -c priv/guest-amd64/ghelpers.c + +priv/guest-amd64/toIR.o: $(ALL_HEADERS) priv/guest-amd64/toIR.c + $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-amd64/toIR.o \ + -c priv/guest-amd64/toIR.c + +priv/guest-arm/ghelpers.o: $(ALL_HEADERS) priv/guest-arm/ghelpers.c + $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-arm/ghelpers.o \ + -c priv/guest-arm/ghelpers.c + +priv/guest-arm/toIR.o: $(ALL_HEADERS) priv/guest-arm/toIR.c + $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-arm/toIR.o \ + -c priv/guest-arm/toIR.c + +priv/guest-ppc/ghelpers.o: $(ALL_HEADERS) priv/guest-ppc/ghelpers.c + $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-ppc/ghelpers.o \ + -c priv/guest-ppc/ghelpers.c + +priv/guest-ppc/toIR.o: $(ALL_HEADERS) priv/guest-ppc/toIR.c + $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-ppc/toIR.o \ + -c priv/guest-ppc/toIR.c Property changes on: trunk/Makefile-gcc ___________________________________________________________________ Name: svn:mergeinfo + |
Author: sewardj Date: 2009-07-01 09:06:34 +0100 (Wed, 01 Jul 2009) New Revision: 1901 Log: Merge in branches/DCAS: This branch adds proper support for atomic instructions, proper in the sense that the atomicity is preserved through the compilation pipeline, and thus in the instrumented code. The change adds a new IR statement kind, IRStmt_CAS, which represents single- and doubleword compare-and-swap. This is used as the basis for the translation of all LOCK-prefixed instructions on x86 and amd64. The change also extends IRExpr_Load and IRStmt_Store so that load-linked and store-conditional operations can be represented. This facilitates correct translation of l[wd]arx and st[wd]cx. on ppc in the sense that these instructions will now eventually be regenerated at the end of the compilation pipeline. Modified: trunk/priv/guest-amd64/gdefs.h trunk/priv/guest-amd64/ghelpers.c trunk/priv/guest-amd64/toIR.c trunk/priv/guest-arm/toIR.c trunk/priv/guest-ppc/ghelpers.c trunk/priv/guest-ppc/toIR.c trunk/priv/guest-x86/toIR.c trunk/priv/host-amd64/hdefs.c trunk/priv/host-amd64/hdefs.h trunk/priv/host-amd64/isel.c trunk/priv/host-arm/isel.c trunk/priv/host-ppc/hdefs.c trunk/priv/host-ppc/hdefs.h trunk/priv/host-ppc/isel.c trunk/priv/host-x86/hdefs.c trunk/priv/host-x86/hdefs.h trunk/priv/host-x86/isel.c trunk/priv/ir/irdefs.c trunk/priv/ir/irmatch.c trunk/priv/ir/iropt.c trunk/priv/main/vex_main.c trunk/pub/libvex.h trunk/pub/libvex_guest_ppc32.h trunk/pub/libvex_guest_ppc64.h trunk/pub/libvex_ir.h trunk/pub/libvex_trc_values.h [... diff too large to include ...] |
|
From: Bart V. A. <bar...@gm...> - 2009-07-01 07:47:56
|
Nightly build on georgia-tech-cellbuzz-native ( cellbuzz, ppc64, Fedora 7, native ) Started at 2009-07-01 02:13:15 EDT Ended at 2009-07-01 03:47:24 EDT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 420 tests, 40 stderr failures, 13 stdout failures, 0 post failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cases-full (stderr) memcheck/tests/leak-cases-summary (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stderr) none/tests/empty-exe (stderr) none/tests/linux/mremap (stderr) none/tests/linux/mremap2 (stdout) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-vmx (stdout) none/tests/ppc32/round (stdout) none/tests/ppc32/test_gx (stdout) none/tests/ppc64/jm-fp (stdout) none/tests/ppc64/jm-vmx (stdout) none/tests/ppc64/round (stdout) none/tests/shell (stdout) none/tests/shell (stderr) none/tests/shell_valid1 (stderr) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) none/tests/shell_zerolength (stderr) helgrind/tests/hg05_race2 (stderr) exp-ptrcheck/tests/bad_percentify (stdout) exp-ptrcheck/tests/bad_percentify (stderr) exp-ptrcheck/tests/base (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/fp (stderr) exp-ptrcheck/tests/globalerr (stderr) exp-ptrcheck/tests/hackedbz2 (stdout) exp-ptrcheck/tests/hackedbz2 (stderr) exp-ptrcheck/tests/hp_bounds (stderr) exp-ptrcheck/tests/hp_dangle (stderr) exp-ptrcheck/tests/justify (stderr) exp-ptrcheck/tests/partial_bad (stderr) exp-ptrcheck/tests/partial_good (stderr) exp-ptrcheck/tests/preen_invars (stdout) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) exp-ptrcheck/tests/realloc (stderr) exp-ptrcheck/tests/stackerr (stderr) exp-ptrcheck/tests/strcpy (stderr) exp-ptrcheck/tests/supp (stderr) exp-ptrcheck/tests/tricky (stderr) exp-ptrcheck/tests/unaligned (stderr) exp-ptrcheck/tests/zero (stderr) |
|
From: <sv...@va...> - 2009-07-01 05:06:32
|
Author: njn
Date: 2009-07-01 06:05:38 +0100 (Wed, 01 Jul 2009)
New Revision: 10391
Log:
Add a comment.
Modified:
trunk/massif/ms_main.c
Modified: trunk/massif/ms_main.c
===================================================================
--- trunk/massif/ms_main.c 2009-07-01 04:50:41 UTC (rev 10390)
+++ trunk/massif/ms_main.c 2009-07-01 05:05:38 UTC (rev 10391)
@@ -303,6 +303,16 @@
// always anyway, because even if they're overloaded, it would be a
// prodigiously stupid overloading that caused them to not allocate
// memory.
+ //
+ // XXX: because we don't look at the first stack entry (unless it's a
+ // custom allocation) there's not much point to having all these alloc
+ // functions here -- they should never appear anywhere (I think?) other
+ // than the top stack entry. The only exceptions are those that in
+ // vg_replace_malloc.c are partly or fully implemented in terms of another
+ // alloc function: realloc (which uses malloc); valloc,
+ // malloc_zone_valloc, posix_memalign and memalign_common (which use
+ // memalign).
+ //
DO("malloc" );
DO("__builtin_new" );
DO("operator new(unsigned)" );
|
|
From: <sv...@va...> - 2009-07-01 04:51:48
|
Author: njn
Date: 2009-07-01 05:50:41 +0100 (Wed, 01 Jul 2009)
New Revision: 10390
Log:
Remove the --all option from vg_perf. It's useless now that there are
tool-specific tests in massif/perf/ and memcheck/perf/.
Modified:
trunk/perf/vg_perf.in
Modified: trunk/perf/vg_perf.in
===================================================================
--- trunk/perf/vg_perf.in 2009-07-01 02:44:12 UTC (rev 10389)
+++ trunk/perf/vg_perf.in 2009-07-01 04:50:41 UTC (rev 10390)
@@ -29,11 +29,6 @@
#----------------------------------------------------------------------------
# usage: see usage message.
#
-# The easiest way is to run all tests in valgrind/ with (assuming you installed
-# in $PREFIX):
-#
-# perl perf/vg_perf --all
-#
# You can specify individual files to test, or whole directories, or both.
# Directories are traversed recursively, except for ones named, for example,
# CVS/ or docs/.
@@ -61,7 +56,6 @@
options for the user, with defaults in [ ], are:
-h --help show this message
- --all run all tests under this directory
--reps=<n> number of repeats for each program [1]
--tools=<t1,t2,t3> tools to run [Nulgrind and Memcheck]
--vg Valgrind(s) to measure (can be specified multiple
@@ -131,14 +125,11 @@
sub process_command_line()
{
- my $alldirs = 0;
my @fs;
for my $arg (@ARGV) {
if ($arg =~ /^-/) {
- if ($arg =~ /^--all$/) {
- $alldirs = 1;
- } elsif ($arg =~ /^--reps=(\d+)$/) {
+ if ($arg =~ /^--reps=(\d+)$/) {
$n_reps = $1;
if ($n_reps < 1) { die "bad --reps value: $n_reps\n"; }
} elsif ($arg =~ /^--vg=(.+)$/) {
@@ -159,13 +150,6 @@
add_vgdir($tests_dir);
}
- if ($alldirs) {
- @fs = ();
- foreach my $f (glob "*") {
- push(@fs, $f) if (-d $f);
- }
- }
-
(0 != @fs) or die "No test files or directories specified\n";
return @fs;
|
|
From: Nicholas N. <n.n...@gm...> - 2009-07-01 03:14:27
|
On Tue, Jun 30, 2009 at 10:19 PM, Julian Seward<js...@ac...> wrote: > > I'd like to merge branches/DCAS to trunk in the next day or so. You don't have any additional tests in the Valgrind patch -- it seems like you probably should... preferably ones that failed previously but now pass. Once it's committed, can you please close https://bugs.kde.org/show_bug.cgi?id=197793? Also, could you look at these, which might now be closeable: https://bugs.kde.org/show_bug.cgi?id=85756 https://bugs.kde.org/show_bug.cgi?id=142103 https://bugs.kde.org/show_bug.cgi?id=195662 Thanks! Nick |
|
From: Tom H. <th...@cy...> - 2009-07-01 02:47:31
|
Nightly build on lloyd ( x86_64, Fedora 7 ) Started at 2009-07-01 03:05:05 BST Ended at 2009-07-01 03:47:05 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 492 tests, 0 stderr failures, 0 stdout failures, 0 post failures == |
|
From: Tom H. <th...@cy...> - 2009-07-01 02:45:55
|
Nightly build on vauxhall ( x86_64, Fedora 10 ) Started at 2009-07-01 03:20:04 BST Ended at 2009-07-01 03:45:43 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 501 tests, 0 stderr failures, 0 stdout failures, 0 post failures == |
|
From: <sv...@va...> - 2009-07-01 02:44:24
|
Author: njn
Date: 2009-07-01 03:44:12 +0100 (Wed, 01 Jul 2009)
New Revision: 10389
Log:
Add some more functions to the default --alloc-fns list. Had to tweak how
verbose output is printed so that the tests would be ok, now that different
platforms have different alloc-fns lists.
Modified:
trunk/massif/ms_main.c
trunk/massif/tests/culling1.stderr.exp
trunk/massif/tests/culling2.stderr.exp
trunk/massif/tests/deep-B.stderr.exp
trunk/massif/tests/deep-C.stderr.exp
trunk/massif/tests/filter_stderr
trunk/massif/tests/peak2.stderr.exp
trunk/massif/tests/realloc.stderr.exp
Modified: trunk/massif/ms_main.c
===================================================================
--- trunk/massif/ms_main.c 2009-07-01 02:39:26 UTC (rev 10388)
+++ trunk/massif/ms_main.c 2009-07-01 02:44:12 UTC (rev 10389)
@@ -298,7 +298,7 @@
VG_(free), sizeof(Char*));
#define DO(x) { Char* s = x; VG_(addToXA)(alloc_fns, &s); }
- // Ordered according to (presumed) frequency.
+ // Ordered roughly according to (presumed) frequency.
// Nb: The C++ "operator new*" ones are overloadable. We include them
// always anyway, because even if they're overloaded, it would be a
// prodigiously stupid overloading that caused them to not allocate
@@ -313,10 +313,24 @@
DO("calloc" );
DO("realloc" );
DO("memalign" );
+ DO("posix_memalign" );
+ DO("valloc" );
DO("operator new(unsigned, std::nothrow_t const&)" );
DO("operator new[](unsigned, std::nothrow_t const&)" );
DO("operator new(unsigned long, std::nothrow_t const&)" );
DO("operator new[](unsigned long, std::nothrow_t const&)");
+#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
+ DO("malloc_common" );
+ DO("calloc_common" );
+ DO("realloc_common" );
+ DO("memalign_common" );
+#elif defined(VGO_darwin)
+ DO("malloc_zone_malloc" );
+ DO("malloc_zone_calloc" );
+ DO("malloc_zone_realloc" );
+ DO("malloc_zone_memalign" );
+ DO("malloc_zone_valloc" );
+#endif
}
static void init_ignore_fns(void)
@@ -2251,7 +2265,7 @@
VERB(1, "alloc-fns:");
for (i = 0; i < VG_(sizeXA)(alloc_fns); i++) {
Char** fn_ptr = VG_(indexXA)(alloc_fns, i);
- VERB(1, " %d: %s", i, *fn_ptr);
+ VERB(1, " %s", *fn_ptr);
}
VERB(1, "ignore-fns:");
Modified: trunk/massif/tests/culling1.stderr.exp
===================================================================
--- trunk/massif/tests/culling1.stderr.exp 2009-07-01 02:39:26 UTC (rev 10388)
+++ trunk/massif/tests/culling1.stderr.exp 2009-07-01 02:44:12 UTC (rev 10389)
@@ -1,18 +1,20 @@
Massif: alloc-fns:
-Massif: 0: malloc
-Massif: 1: __builtin_new
-Massif: 2: operator new(unsigned)
-Massif: 3: operator new(unsigned long)
-Massif: 4: __builtin_vec_new
-Massif: 5: operator new[](unsigned)
-Massif: 6: operator new[](unsigned long)
-Massif: 7: calloc
-Massif: 8: realloc
-Massif: 9: memalign
-Massif: 10: operator new(unsigned, std::nothrow_t const&)
-Massif: 11: operator new[](unsigned, std::nothrow_t const&)
-Massif: 12: operator new(unsigned long, std::nothrow_t const&)
-Massif: 13: operator new[](unsigned long, std::nothrow_t const&)
+Massif: malloc
+Massif: __builtin_new
+Massif: operator new(unsigned)
+Massif: operator new(unsigned long)
+Massif: __builtin_vec_new
+Massif: operator new[](unsigned)
+Massif: operator new[](unsigned long)
+Massif: calloc
+Massif: realloc
+Massif: memalign
+Massif: posix_memalign
+Massif: valloc
+Massif: operator new(unsigned, std::nothrow_t const&)
+Massif: operator new[](unsigned, std::nothrow_t const&)
+Massif: operator new(unsigned long, std::nothrow_t const&)
+Massif: operator new[](unsigned long, std::nothrow_t const&)
Massif: ignore-fns:
Massif: 0: __part_load_locale
Massif: 1: __time_load_locale
Modified: trunk/massif/tests/culling2.stderr.exp
===================================================================
--- trunk/massif/tests/culling2.stderr.exp 2009-07-01 02:39:26 UTC (rev 10388)
+++ trunk/massif/tests/culling2.stderr.exp 2009-07-01 02:44:12 UTC (rev 10389)
@@ -1,18 +1,20 @@
Massif: alloc-fns:
-Massif: 0: malloc
-Massif: 1: __builtin_new
-Massif: 2: operator new(unsigned)
-Massif: 3: operator new(unsigned long)
-Massif: 4: __builtin_vec_new
-Massif: 5: operator new[](unsigned)
-Massif: 6: operator new[](unsigned long)
-Massif: 7: calloc
-Massif: 8: realloc
-Massif: 9: memalign
-Massif: 10: operator new(unsigned, std::nothrow_t const&)
-Massif: 11: operator new[](unsigned, std::nothrow_t const&)
-Massif: 12: operator new(unsigned long, std::nothrow_t const&)
-Massif: 13: operator new[](unsigned long, std::nothrow_t const&)
+Massif: malloc
+Massif: __builtin_new
+Massif: operator new(unsigned)
+Massif: operator new(unsigned long)
+Massif: __builtin_vec_new
+Massif: operator new[](unsigned)
+Massif: operator new[](unsigned long)
+Massif: calloc
+Massif: realloc
+Massif: memalign
+Massif: posix_memalign
+Massif: valloc
+Massif: operator new(unsigned, std::nothrow_t const&)
+Massif: operator new[](unsigned, std::nothrow_t const&)
+Massif: operator new(unsigned long, std::nothrow_t const&)
+Massif: operator new[](unsigned long, std::nothrow_t const&)
Massif: ignore-fns:
Massif: 0: __part_load_locale
Massif: 1: __time_load_locale
Modified: trunk/massif/tests/deep-B.stderr.exp
===================================================================
--- trunk/massif/tests/deep-B.stderr.exp 2009-07-01 02:39:26 UTC (rev 10388)
+++ trunk/massif/tests/deep-B.stderr.exp 2009-07-01 02:44:12 UTC (rev 10389)
@@ -1,25 +1,27 @@
Massif: alloc-fns:
-Massif: 0: malloc
-Massif: 1: __builtin_new
-Massif: 2: operator new(unsigned)
-Massif: 3: operator new(unsigned long)
-Massif: 4: __builtin_vec_new
-Massif: 5: operator new[](unsigned)
-Massif: 6: operator new[](unsigned long)
-Massif: 7: calloc
-Massif: 8: realloc
-Massif: 9: memalign
-Massif: 10: operator new(unsigned, std::nothrow_t const&)
-Massif: 11: operator new[](unsigned, std::nothrow_t const&)
-Massif: 12: operator new(unsigned long, std::nothrow_t const&)
-Massif: 13: operator new[](unsigned long, std::nothrow_t const&)
-Massif: 14: a6
-Massif: 15: a7
-Massif: 16: a8
-Massif: 17: a9
-Massif: 18: a10
-Massif: 19: a11
-Massif: 20: a12
+Massif: malloc
+Massif: __builtin_new
+Massif: operator new(unsigned)
+Massif: operator new(unsigned long)
+Massif: __builtin_vec_new
+Massif: operator new[](unsigned)
+Massif: operator new[](unsigned long)
+Massif: calloc
+Massif: realloc
+Massif: memalign
+Massif: posix_memalign
+Massif: valloc
+Massif: operator new(unsigned, std::nothrow_t const&)
+Massif: operator new[](unsigned, std::nothrow_t const&)
+Massif: operator new(unsigned long, std::nothrow_t const&)
+Massif: operator new[](unsigned long, std::nothrow_t const&)
+Massif: a6
+Massif: a7
+Massif: a8
+Massif: a9
+Massif: a10
+Massif: a11
+Massif: a12
Massif: ignore-fns:
Massif: 0: __part_load_locale
Massif: 1: __time_load_locale
Modified: trunk/massif/tests/deep-C.stderr.exp
===================================================================
--- trunk/massif/tests/deep-C.stderr.exp 2009-07-01 02:39:26 UTC (rev 10388)
+++ trunk/massif/tests/deep-C.stderr.exp 2009-07-01 02:44:12 UTC (rev 10389)
@@ -1,28 +1,30 @@
Massif: alloc-fns:
-Massif: 0: malloc
-Massif: 1: __builtin_new
-Massif: 2: operator new(unsigned)
-Massif: 3: operator new(unsigned long)
-Massif: 4: __builtin_vec_new
-Massif: 5: operator new[](unsigned)
-Massif: 6: operator new[](unsigned long)
-Massif: 7: calloc
-Massif: 8: realloc
-Massif: 9: memalign
-Massif: 10: operator new(unsigned, std::nothrow_t const&)
-Massif: 11: operator new[](unsigned, std::nothrow_t const&)
-Massif: 12: operator new(unsigned long, std::nothrow_t const&)
-Massif: 13: operator new[](unsigned long, std::nothrow_t const&)
-Massif: 14: a3
-Massif: 15: a4
-Massif: 16: a5
-Massif: 17: a6
-Massif: 18: a7
-Massif: 19: a8
-Massif: 20: a9
-Massif: 21: a10
-Massif: 22: a11
-Massif: 23: a12
+Massif: malloc
+Massif: __builtin_new
+Massif: operator new(unsigned)
+Massif: operator new(unsigned long)
+Massif: __builtin_vec_new
+Massif: operator new[](unsigned)
+Massif: operator new[](unsigned long)
+Massif: calloc
+Massif: realloc
+Massif: memalign
+Massif: posix_memalign
+Massif: valloc
+Massif: operator new(unsigned, std::nothrow_t const&)
+Massif: operator new[](unsigned, std::nothrow_t const&)
+Massif: operator new(unsigned long, std::nothrow_t const&)
+Massif: operator new[](unsigned long, std::nothrow_t const&)
+Massif: a3
+Massif: a4
+Massif: a5
+Massif: a6
+Massif: a7
+Massif: a8
+Massif: a9
+Massif: a10
+Massif: a11
+Massif: a12
Massif: ignore-fns:
Massif: 0: __part_load_locale
Massif: 1: __time_load_locale
Modified: trunk/massif/tests/filter_stderr
===================================================================
--- trunk/massif/tests/filter_stderr 2009-07-01 02:39:26 UTC (rev 10388)
+++ trunk/massif/tests/filter_stderr 2009-07-01 02:44:12 UTC (rev 10389)
@@ -5,5 +5,12 @@
$dir/../../tests/filter_stderr_basic |
# Remove "Massif, ..." line and the following copyright line.
-sed "/^Massif, a heap profiler./ , /./ d"
+sed "/^Massif, a heap profiler./ , /./ d" |
+# Remove AIX-only alloc-fns
+perl -n -e 'print if !/^Massif: (malloc|calloc|realloc|memalign)_common$/' |
+
+# Remove Darwin-only alloc-fns
+perl -n -e 'print if !/^Massif: malloc_zone_(malloc|calloc|realloc|memalign|valloc)$/'
+
+
Modified: trunk/massif/tests/peak2.stderr.exp
===================================================================
--- trunk/massif/tests/peak2.stderr.exp 2009-07-01 02:39:26 UTC (rev 10388)
+++ trunk/massif/tests/peak2.stderr.exp 2009-07-01 02:44:12 UTC (rev 10389)
@@ -1,18 +1,20 @@
Massif: alloc-fns:
-Massif: 0: malloc
-Massif: 1: __builtin_new
-Massif: 2: operator new(unsigned)
-Massif: 3: operator new(unsigned long)
-Massif: 4: __builtin_vec_new
-Massif: 5: operator new[](unsigned)
-Massif: 6: operator new[](unsigned long)
-Massif: 7: calloc
-Massif: 8: realloc
-Massif: 9: memalign
-Massif: 10: operator new(unsigned, std::nothrow_t const&)
-Massif: 11: operator new[](unsigned, std::nothrow_t const&)
-Massif: 12: operator new(unsigned long, std::nothrow_t const&)
-Massif: 13: operator new[](unsigned long, std::nothrow_t const&)
+Massif: malloc
+Massif: __builtin_new
+Massif: operator new(unsigned)
+Massif: operator new(unsigned long)
+Massif: __builtin_vec_new
+Massif: operator new[](unsigned)
+Massif: operator new[](unsigned long)
+Massif: calloc
+Massif: realloc
+Massif: memalign
+Massif: posix_memalign
+Massif: valloc
+Massif: operator new(unsigned, std::nothrow_t const&)
+Massif: operator new[](unsigned, std::nothrow_t const&)
+Massif: operator new(unsigned long, std::nothrow_t const&)
+Massif: operator new[](unsigned long, std::nothrow_t const&)
Massif: ignore-fns:
Massif: 0: __part_load_locale
Massif: 1: __time_load_locale
Modified: trunk/massif/tests/realloc.stderr.exp
===================================================================
--- trunk/massif/tests/realloc.stderr.exp 2009-07-01 02:39:26 UTC (rev 10388)
+++ trunk/massif/tests/realloc.stderr.exp 2009-07-01 02:44:12 UTC (rev 10389)
@@ -1,18 +1,20 @@
Massif: alloc-fns:
-Massif: 0: malloc
-Massif: 1: __builtin_new
-Massif: 2: operator new(unsigned)
-Massif: 3: operator new(unsigned long)
-Massif: 4: __builtin_vec_new
-Massif: 5: operator new[](unsigned)
-Massif: 6: operator new[](unsigned long)
-Massif: 7: calloc
-Massif: 8: realloc
-Massif: 9: memalign
-Massif: 10: operator new(unsigned, std::nothrow_t const&)
-Massif: 11: operator new[](unsigned, std::nothrow_t const&)
-Massif: 12: operator new(unsigned long, std::nothrow_t const&)
-Massif: 13: operator new[](unsigned long, std::nothrow_t const&)
+Massif: malloc
+Massif: __builtin_new
+Massif: operator new(unsigned)
+Massif: operator new(unsigned long)
+Massif: __builtin_vec_new
+Massif: operator new[](unsigned)
+Massif: operator new[](unsigned long)
+Massif: calloc
+Massif: realloc
+Massif: memalign
+Massif: posix_memalign
+Massif: valloc
+Massif: operator new(unsigned, std::nothrow_t const&)
+Massif: operator new[](unsigned, std::nothrow_t const&)
+Massif: operator new(unsigned long, std::nothrow_t const&)
+Massif: operator new[](unsigned long, std::nothrow_t const&)
Massif: ignore-fns:
Massif: 0: __part_load_locale
Massif: 1: __time_load_locale
|
|
From: <sv...@va...> - 2009-07-01 02:39:47
|
Author: njn
Date: 2009-07-01 03:39:26 +0100 (Wed, 01 Jul 2009)
New Revision: 10388
Log:
Just whitespace and comment changes.
Modified:
trunk/coregrind/launcher-darwin.c
trunk/coregrind/m_main.c
Modified: trunk/coregrind/launcher-darwin.c
===================================================================
--- trunk/coregrind/launcher-darwin.c 2009-06-30 06:06:14 UTC (rev 10387)
+++ trunk/coregrind/launcher-darwin.c 2009-07-01 02:39:26 UTC (rev 10388)
@@ -50,8 +50,7 @@
#include <mach-o/loader.h>
#include "pub_core_debuglog.h"
-#include "pub_core_vki.h" // Avoids warnings from
- // pub_core_libcfile.h
+#include "pub_core_vki.h" // Avoids warnings from pub_core_libcfile.h
#include "pub_core_libcproc.h" // For VALGRIND_LIB, VALGRIND_LAUNCHER
#include "pub_core_ume.h"
@@ -60,11 +59,11 @@
const char *apple_name; // e.g. x86_64
const char *valgrind_name; // e.g. amd64
} valid_archs[] = {
- { CPU_TYPE_X86, "i386", "x86" },
- { CPU_TYPE_X86_64, "x86_64", "amd64" },
- { CPU_TYPE_ARM, "arm", "arm" },
- { CPU_TYPE_POWERPC, "ppc", "ppc32" },
- { CPU_TYPE_POWERPC64, "ppc64", "ppc64" },
+ { CPU_TYPE_X86, "i386", "x86" },
+ { CPU_TYPE_X86_64, "x86_64", "amd64" },
+ { CPU_TYPE_ARM, "arm", "arm" },
+ { CPU_TYPE_POWERPC, "ppc", "ppc32" },
+ { CPU_TYPE_POWERPC64, "ppc64", "ppc64" },
};
static int valid_archs_count = sizeof(valid_archs)/sizeof(valid_archs[0]);
@@ -139,7 +138,9 @@
}
/* Examine the client and work out which arch it is for */
-static const char *select_arch(const char *clientname, cpu_type_t default_cputype, const char *default_arch)
+static const char *select_arch(
+ const char *clientname, cpu_type_t default_cputype,
+ const char *default_arch)
{
uint8_t buf[4096];
ssize_t bytes;
Modified: trunk/coregrind/m_main.c
===================================================================
--- trunk/coregrind/m_main.c 2009-06-30 06:06:14 UTC (rev 10387)
+++ trunk/coregrind/m_main.c 2009-07-01 02:39:26 UTC (rev 10388)
@@ -1253,6 +1253,29 @@
// (oversized pagezero or stack)
// p: none
//--------------------------------------------------------------
+ // DDD: comments from Greg Parker why these address-space-filling segments
+ // are necessary:
+ //
+ // The memory maps are there to make sure that Valgrind's copies of libc
+ // and dyld load in a non-default location, so that the inferior's own
+ // libc and dyld do load in the default locations. (The kernel performs
+ // the work of loading several things as described by the executable's
+ // load commands, including the executable itself, dyld, the main
+ // thread's stack, and the page-zero segment.) There might be a way to
+ // fine-tune it so the maps are smaller but still do the job.
+ //
+ // The post-launch mmap behavior can be cleaned up - looks like we don't
+ // unmap as much as we should - which would improve post-launch
+ // performance.
+ //
+ // Hmm, there might be an extra-clever way to give Valgrind a custom
+ // MH_DYLINKER that performs the "bootloader" work of loading dyld in an
+ // acceptable place and then unloading itself. Then no mmaps would be
+ // needed. I'll have to think about that one.
+ //
+ // [I can't work out where the address-space-filling segments are
+ // created in the first place. --njn]
+ //
#if defined(VGO_darwin)
# if VG_WORDSIZE == 4
VG_(do_syscall2)(__NR_munmap, 0x00000000, 0xf0000000);
|
|
From: Tom H. <th...@cy...> - 2009-07-01 02:33:04
|
Nightly build on mg ( x86_64, Fedora 9 ) Started at 2009-07-01 03:10:04 BST Ended at 2009-07-01 03:28:25 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 == 498 tests, 0 stderr failures, 1 stdout failure, 0 post failures == none/tests/linux/mremap2 (stdout) |