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
(16) |
2
(7) |
3
(9) |
4
(12) |
5
(20) |
|
6
(24) |
7
(10) |
8
(7) |
9
(17) |
10
(9) |
11
(7) |
12
(8) |
|
13
(12) |
14
(17) |
15
(15) |
16
(15) |
17
(21) |
18
(9) |
19
(17) |
|
20
(16) |
21
(12) |
22
(18) |
23
(8) |
24
(2) |
25
(17) |
26
(23) |
|
27
(30) |
28
(19) |
29
(14) |
30
(11) |
|
|
|
|
From: Julian S. <js...@ac...> - 2008-04-09 20:09:41
|
> Using ... the gcc -nostartfiles or -nostdlib options, is > not recommended. Their use may result in undesired behavior, since > the constructor/destructor routines will not be executed (unless special > measures are taken). > > Is it correct that preloaded Valgrind shared objects are linked with > -nostdlib ? I put that in there in an attempt to minimise the dependencies on other shared libraries. Earlier in the life of the project there was much hassle caused by shared library dependencies, and ruthlessly removing dynamic linking as much as possible helped a lot. So I try to avoid shared library dependencies as much as possible now. What is the reason for wanting a change in link flags on these shared objects? J |
|
From: Julian S. <js...@ac...> - 2008-04-09 20:02:02
|
> I tried the patch below, but unfortunately it causes > helgrind/tests/hg05_race2 and exp-drd/tests/hg05_race2 to fail. Is the > patch below a correct implementation of the ABI specs ? The ABI merely says that the stack ends when fp == 0. So I would have put "if (fp == 0) break;" at the start of the unwind loop. I'm sorry to be slow on this. I'll try to look at it again early next week. J |
|
From: <sv...@va...> - 2008-04-09 17:44:31
|
Author: bart Date: 2008-04-09 18:44:28 +0100 (Wed, 09 Apr 2008) New Revision: 7863 Log: Added yet another output variant. Added: trunk/exp-drd/tests/rwlock_race.stderr.exp2 Modified: trunk/exp-drd/tests/Makefile.am Modified: trunk/exp-drd/tests/Makefile.am =================================================================== --- trunk/exp-drd/tests/Makefile.am 2008-04-09 16:21:34 UTC (rev 7862) +++ trunk/exp-drd/tests/Makefile.am 2008-04-09 17:44:28 UTC (rev 7863) @@ -75,6 +75,7 @@ recursive_mutex.stdout.exp \ recursive_mutex.vgtest \ rwlock_race.stderr.exp \ + rwlock_race.stderr.exp2 \ rwlock_race.vgtest \ sem_as_mutex.stderr.exp \ sem_as_mutex.vgtest \ Added: trunk/exp-drd/tests/rwlock_race.stderr.exp2 =================================================================== --- trunk/exp-drd/tests/rwlock_race.stderr.exp2 (rev 0) +++ trunk/exp-drd/tests/rwlock_race.stderr.exp2 2008-04-09 17:44:28 UTC (rev 7863) @@ -0,0 +1,28 @@ + +Thread 3: +Conflicting load by thread 3/3 at 0x........ size 4 + at 0x........: thread (rwlock_race.c:?) + by 0x........: vg_thread_wrapper (drd_pthread_intercepts.c:?) + by 0x........: (within libpthread-?.?.so) + by 0x........: clone (in /...libc...) +Location 0x........ is 0 bytes inside local var "s_racy" +declared at rwlock_race.c:17, in frame #? of thread 3 +Other segment start (thread 0/2) + (thread finished, call stack no longer available) +Other segment end (thread 0/2) + (thread finished, call stack no longer available) + +Conflicting store by thread 3/3 at 0x........ size 4 + at 0x........: thread (rwlock_race.c:?) + by 0x........: vg_thread_wrapper (drd_pthread_intercepts.c:?) + by 0x........: (within libpthread-?.?.so) + by 0x........: clone (in /...libc...) +Location 0x........ is 0 bytes inside local var "s_racy" +declared at rwlock_race.c:17, in frame #? of thread 3 +Other segment start (thread 0/2) + (thread finished, call stack no longer available) +Other segment end (thread 0/2) + (thread finished, call stack no longer available) +Result: 2 + +ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0) |
|
From: Bart V. A. <bar...@gm...> - 2008-04-09 17:42:59
|
On Sun, Apr 6, 2008 at 9:32 AM, Tom Hughes <to...@co...> wrote: > In message <e2e...@ma...> > > The comments in coregrind/m_replacemalloc/vg_replace_malloc.c suggest > > that the init() function in that file is called just after the shared > > library this file is linked with has been loaded. This is not correct: > > __attribute__((constructor)) only makes sense in object files that are > > linked into an executable, not in object files that are linked into a > > shared library. See also the gcc manual about this attribute > > (http://gcc.gnu.org/onlinedocs/gcc-4.3.0/gcc/Function-Attributes.html#Function-Attributes). > > That description is incorrect, or at least misleading. > > It never actually says that constructors don't work in shared > objects (they do) it just implies that by saying that they are > run before main is entered. Hello Tom, What is your opinion about the patch below ? The option -nostdlib is replaced by -nodefaultlibs. The effect of this change is that constructors now work in shared objects. The only disadvantage I know of is that this will break compilation with gcc 2.95 -- -nodefaultlibs is only supported in gcc 3.0 and later. Bart. Index: Makefile.flags.am =================================================================== --- Makefile.flags.am (revision 7862) +++ Makefile.flags.am (working copy) @@ -64,8 +64,8 @@ # Baseline link flags for making dynamic shared objects. # -PRELOAD_LDFLAGS_COMMON_LINUX = -nostdlib -shared -Wl,-z,interpose,-z,initfirst -PRELOAD_LDFLAGS_COMMON_AIX5 = -nostdlib -shared -Wl,-G -Wl,-bnogc +PRELOAD_LDFLAGS_COMMON_LINUX = -nodefaultlibs -shared -Wl,-z,interpose,-z,initfirst +PRELOAD_LDFLAGS_COMMON_AIX5 = -nodefaultlibs -shared -Wl,-G -Wl,-bnogc PRELOAD_LDFLAGS_X86_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ PRELOAD_LDFLAGS_AMD64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ PRELOAD_LDFLAGS_PPC32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ Index: exp-drd/drd_pthread_intercepts.c =================================================================== --- exp-drd/drd_pthread_intercepts.c (revision 7862) +++ exp-drd/drd_pthread_intercepts.c (working copy) @@ -83,7 +83,7 @@ /* Function declarations. */ -void _init(void); +static void init(void) __attribute__((constructor)); static void check_threading_library(void); static void vg_set_main_thread_state(void); @@ -94,7 +94,7 @@ * after dlopen() has loaded the shared library. This function must not * be declared static. */ -void _init(void) +static void init(void) { check_threading_library(); vg_set_main_thread_state(); |
|
From: <sv...@va...> - 2008-04-09 16:21:47
|
Author: bart
Date: 2008-04-09 17:21:34 +0100 (Wed, 09 Apr 2008)
New Revision: 7862
Log:
Only read debug information from regular files, and not from device nodes. Do not complain on files for which we do not have read access.
Modified:
trunk/coregrind/m_debuginfo/debuginfo.c
Modified: trunk/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- trunk/coregrind/m_debuginfo/debuginfo.c 2008-04-09 01:06:38 UTC (rev 7861)
+++ trunk/coregrind/m_debuginfo/debuginfo.c 2008-04-09 16:21:34 UTC (rev 7862)
@@ -491,6 +491,8 @@
Int nread;
HChar buf1k[1024];
Bool debug = False;
+ SysRes statres;
+ struct vki_stat statbuf;
/* In short, figure out if this mapping is of interest to us, and
if so, try to guess what ld.so is doing and when/if we should
@@ -520,44 +522,29 @@
if (debug)
VG_(printf)("di_notify_mmap-2: %s\n", filename);
- /* XXXX begin KLUDGE */
- /* Skip filenames in /dev/. Don't even bother to try opening them.
- Why?
-
- Suppose the client opens and then mmaps the file specified by
- 'filename' and puts some kind of lock on it, so nobody else can
- open it. If we now try to open it to peer at the ELF header,
- the system can hang, because the VG_(open) call blocks.
- Precisely this happed when running Amarok, which opened and then
- mmap'd /dev/snd/pcmC0D0c.
-
- A clean(er) solution is to open the file with VKI_O_NONBLOCK, so
- that if it is locked, we simply fail immediately and don't hang
- the whole system. But "man 2 open" gives only a sketchy
- description of the resulting file semantics. So for the
- meantime, just skip files in /dev/ as (1) they are likely to be
- subject to wierd-ass locking stuff, and (2) they won't contain
- useful debug info anyway.
-
- But that's a kludge; in principle the same problem could occur
- with *any* file.
- */
- if (0 == VG_(strncmp)(filename, "/dev/", 5)) {
- if (debug)
- VG_(printf)("di_notify_mmap-2: skipping %s\n", filename);
+ /* Only try to read debug information from regular files. */
+ statres = VG_(stat)(filename, &statbuf);
+ /* If the assert below ever fails, replace the VG_(stat)() call above */
+ /* by a VG_(lstat)() call. */
+ vg_assert(statres.isError || ! VKI_S_ISLNK(statbuf.st_mode));
+ if (statres.isError || ! VKI_S_ISREG(statbuf.st_mode))
+ {
return;
}
- /* XXXX end KLUDGE */
- /* Peer at the first few bytes of the file, to see if it is an ELF
- object file. */
+
+ /* Peer at the first few bytes of the file, to see if it is an ELF */
+ /* object file. Ignore the file if we do not have read permission. */
VG_(memset)(buf1k, 0, sizeof(buf1k));
fd = VG_(open)( filename, VKI_O_RDONLY, 0 );
if (fd.isError) {
DebugInfo fake_di;
- VG_(memset)(&fake_di, 0, sizeof(fake_di));
- fake_di.filename = filename;
- ML_(symerr)(&fake_di, True, "can't open file to inspect ELF header");
+ if (fd.err != VKI_EACCES)
+ {
+ VG_(memset)(&fake_di, 0, sizeof(fake_di));
+ fake_di.filename = filename;
+ ML_(symerr)(&fake_di, True, "can't open file to inspect ELF header");
+ }
return;
}
nread = VG_(read)( fd.res, buf1k, sizeof(buf1k) );
|
|
From: Tom H. <th...@cy...> - 2008-04-09 03:17:10
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-04-09 03:15:06 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 330 tests, 76 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-pool-0 (stderr) memcheck/tests/leak-pool-1 (stderr) memcheck/tests/leak-pool-2 (stderr) memcheck/tests/leak-pool-3 (stderr) memcheck/tests/leak-pool-4 (stderr) memcheck/tests/leak-pool-5 (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/lsframe1 (stderr) memcheck/tests/lsframe2 (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/noisy_child (stderr) memcheck/tests/partial_load_dflt (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/bug152022 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/xor-undef-x86 (stderr) memcheck/tests/xml1 (stderr) massif/tests/alloc-fns-A (post) massif/tests/alloc-fns-B (post) massif/tests/basic (post) massif/tests/basic2 (post) massif/tests/big-alloc (post) massif/tests/culling1 (stderr) massif/tests/culling2 (stderr) massif/tests/custom_alloc (post) massif/tests/deep-A (post) massif/tests/deep-B (stderr) massif/tests/deep-B (post) massif/tests/deep-C (stderr) massif/tests/deep-C (post) massif/tests/deep-D (post) massif/tests/ignoring (post) massif/tests/insig (post) massif/tests/long-names (post) massif/tests/long-time (post) massif/tests/new-cpp (post) massif/tests/null (post) massif/tests/one (post) massif/tests/overloaded-new (post) massif/tests/peak (post) massif/tests/peak2 (stderr) massif/tests/peak2 (post) massif/tests/realloc (stderr) massif/tests/realloc (post) massif/tests/thresholds_0_0 (post) massif/tests/thresholds_0_10 (post) massif/tests/thresholds_10_0 (post) massif/tests/thresholds_10_10 (post) massif/tests/thresholds_5_0 (post) massif/tests/thresholds_5_10 (post) massif/tests/zero1 (post) massif/tests/zero2 (post) none/tests/blockfault (stderr) none/tests/faultstatus (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/shell (stderr) none/tests/shell_valid1 (stderr) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/hg06_readshared (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc02_simple_tls (stderr) helgrind/tests/tc03_re_excl (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) helgrind/tests/tc24_nonzero_sem (stderr) |
|
From: Tom H. <th...@cy...> - 2008-04-09 03:05:46
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-04-09 03:15:07 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 326 tests, 76 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-pool-0 (stderr) memcheck/tests/leak-pool-1 (stderr) memcheck/tests/leak-pool-2 (stderr) memcheck/tests/leak-pool-3 (stderr) memcheck/tests/leak-pool-4 (stderr) memcheck/tests/leak-pool-5 (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/lsframe1 (stderr) memcheck/tests/lsframe2 (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/noisy_child (stderr) memcheck/tests/partial_load_dflt (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/bug152022 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/xor-undef-x86 (stderr) memcheck/tests/xml1 (stderr) massif/tests/alloc-fns-A (post) massif/tests/alloc-fns-B (post) massif/tests/basic (post) massif/tests/basic2 (post) massif/tests/big-alloc (post) massif/tests/culling1 (stderr) massif/tests/culling2 (stderr) massif/tests/custom_alloc (post) massif/tests/deep-A (post) massif/tests/deep-B (stderr) massif/tests/deep-B (post) massif/tests/deep-C (stderr) massif/tests/deep-C (post) massif/tests/deep-D (post) massif/tests/ignoring (post) massif/tests/insig (post) massif/tests/long-names (post) massif/tests/long-time (post) massif/tests/new-cpp (post) massif/tests/null (post) massif/tests/one (post) massif/tests/overloaded-new (post) massif/tests/peak (post) massif/tests/peak2 (stderr) massif/tests/peak2 (post) massif/tests/realloc (stderr) massif/tests/realloc (post) massif/tests/thresholds_0_0 (post) massif/tests/thresholds_0_10 (post) massif/tests/thresholds_10_0 (post) massif/tests/thresholds_10_10 (post) massif/tests/thresholds_5_0 (post) massif/tests/thresholds_5_10 (post) massif/tests/zero1 (post) massif/tests/zero2 (post) none/tests/blockfault (stderr) none/tests/faultstatus (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/shell (stderr) none/tests/shell_valid1 (stderr) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/hg06_readshared (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc02_simple_tls (stderr) helgrind/tests/tc03_re_excl (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) helgrind/tests/tc24_nonzero_sem (stderr) |
|
From: Tom H. <th...@cy...> - 2008-04-09 02:55:20
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-04-09 03:20:07 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 419 tests, 9 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/faultstatus (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/tc08_hbl2 (stdout) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 419 tests, 9 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/faultstatus (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Apr 9 03:37:27 2008 --- new.short Wed Apr 9 03:55:18 2008 *************** *** 8,10 **** ! == 419 tests, 9 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 419 tests, 9 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) *************** *** 19,20 **** --- 19,21 ---- helgrind/tests/tc22_exit_w_lock (stderr) + exp-drd/tests/tc08_hbl2 (stdout) |
|
From: Tom H. <th...@cy...> - 2008-04-09 02:54:15
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-04-09 03:05:04 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 == 413 tests, 6 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/faultstatus (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-04-09 02:40:33
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-04-09 03:25:08 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 417 tests, 8 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/faultstatus (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-04-09 02:34:52
|
Nightly build on dellow ( x86_64, Fedora 8 ) started at 2008-04-09 03:10:05 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 413 tests, 10 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/faultstatus (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/rwlock_race (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 413 tests, 9 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/faultstatus (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/pth_cvsimple (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Apr 9 03:22:30 2008 --- new.short Wed Apr 9 03:34:56 2008 *************** *** 8,10 **** ! == 413 tests, 9 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 413 tests, 10 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) *************** *** 16,18 **** none/tests/mremap2 (stdout) - none/tests/pth_cvsimple (stdout) helgrind/tests/tc18_semabuse (stderr) --- 16,17 ---- *************** *** 21,22 **** --- 20,22 ---- helgrind/tests/tc22_exit_w_lock (stderr) + exp-drd/tests/rwlock_race (stderr) |
|
From: Tom H. <th...@cy...> - 2008-04-09 02:21:37
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-04-09 03:00:04 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 == 419 tests, 31 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/amd64/insn_ssse3 (stdout) none/tests/amd64/insn_ssse3 (stderr) none/tests/amd64/ssse3_misaligned (stderr) none/tests/blockfault (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/x86/insn_ssse3 (stdout) none/tests/x86/insn_ssse3 (stderr) none/tests/x86/ssse3_misaligned (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) |
|
From: <sv...@va...> - 2008-04-09 01:06:33
|
Author: sewardj
Date: 2008-04-09 02:06:38 +0100 (Wed, 09 Apr 2008)
New Revision: 7861
Log:
Second-shadow support for ppc32-linux and ppc64-linux.
Modified:
branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_scheduler/scheduler.c
branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_sigframe/sigframe-ppc32-linux.c
branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_sigframe/sigframe-ppc64-linux.c
branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_syswrap/syswrap-ppc32-linux.c
branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_syswrap/syswrap-ppc64-linux.c
Modified: branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_scheduler/scheduler.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_scheduler/scheduler.c 2008-04-09 01:05:29 UTC (rev 7860)
+++ branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_scheduler/scheduler.c 2008-04-09 01:06:38 UTC (rev 7861)
@@ -570,7 +570,8 @@
/* ppc guest_state vector regs must be 16 byte aligned for
loads/stores */
vg_assert(VG_IS_16_ALIGNED(& tst->arch.vex.guest_VR0));
- vg_assert(VG_IS_16_ALIGNED(& tst->arch.vex_shadow.guest_VR0));
+ vg_assert(VG_IS_16_ALIGNED(& tst->arch.vex_shadow1.guest_VR0));
+ vg_assert(VG_IS_16_ALIGNED(& tst->arch.vex_shadow2.guest_VR0));
# endif
}
Modified: branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_sigframe/sigframe-ppc32-linux.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_sigframe/sigframe-ppc32-linux.c 2008-04-09 01:05:29 UTC (rev 7860)
+++ branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_sigframe/sigframe-ppc32-linux.c 2008-04-09 01:06:38 UTC (rev 7861)
@@ -94,7 +94,8 @@
struct vg_sig_private {
UInt magicPI;
UInt sigNo_private;
- VexGuestPPC32State shadow;
+ VexGuestPPC32State vex_shadow1;
+ VexGuestPPC32State vex_shadow2;
};
/* Structure put on stack for signal handlers with SA_SIGINFO clear. */
@@ -504,8 +505,10 @@
*/
static Bool extend ( ThreadState *tst, Addr addr, SizeT size )
{
- ThreadId tid = tst->tid;
- NSegment const *stackseg = NULL;
+ UInt otag;
+ ExeContext* here;
+ ThreadId tid = tst->tid;
+ NSegment const* stackseg = NULL;
if (VG_(extend_stack)(addr, tst->client_stack_szB)) {
stackseg = VG_(am_find_nsegment)(addr);
@@ -535,8 +538,13 @@
/* For tracking memory events, indicate the entire frame has been
allocated. */
+ here = VG_(record_ExeContext)(tid, 0/*first_ip_delta*/);
+ vg_assert(here);
+ otag = VG_(get_ExeContext_uniq)(here);
+ vg_assert(otag > 0);
+
VG_TRACK( new_mem_stack_signal, addr - VG_STACK_REDZONE_SZB,
- size + VG_STACK_REDZONE_SZB );
+ size + VG_STACK_REDZONE_SZB, otag );
return True;
}
@@ -761,7 +769,8 @@
priv->magicPI = 0x31415927;
priv->sigNo_private = sigNo;
- priv->shadow = tst->arch.vex_shadow;
+ priv->vex_shadow1 = tst->arch.vex_shadow1;
+ priv->vex_shadow2 = tst->arch.vex_shadow2;
SET_SIGNAL_GPR(tid, 1, sp);
SET_SIGNAL_GPR(tid, 3, sigNo);
@@ -931,7 +940,8 @@
tst->arch.vex.guest_CTR = mc->mc_gregs[VKI_PT_CTR];
LibVEX_GuestPPC32_put_XER( mc->mc_gregs[VKI_PT_XER], &tst->arch.vex );
- tst->arch.vex_shadow = priv->shadow;
+ tst->arch.vex_shadow1 = priv->vex_shadow1;
+ tst->arch.vex_shadow2 = priv->vex_shadow2;
VG_TRACK(die_mem_stack_signal, sp, frame_size);
Modified: branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_sigframe/sigframe-ppc64-linux.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_sigframe/sigframe-ppc64-linux.c 2008-04-09 01:05:29 UTC (rev 7860)
+++ branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_sigframe/sigframe-ppc64-linux.c 2008-04-09 01:06:38 UTC (rev 7861)
@@ -97,7 +97,8 @@
struct vg_sig_private {
UInt magicPI;
UInt sigNo_private;
- VexGuestPPC64State shadow;
+ VexGuestPPC64State vex_shadow1;
+ VexGuestPPC64State vex_shadow2;
};
/* Structure put on stack for all signal handlers. */
@@ -133,8 +134,10 @@
*/
static Bool extend ( ThreadState *tst, Addr addr, SizeT size )
{
- ThreadId tid = tst->tid;
- NSegment const *stackseg = NULL;
+ UInt otag;
+ ExeContext* here;
+ ThreadId tid = tst->tid;
+ NSegment const* stackseg = NULL;
if (VG_(extend_stack)(addr, tst->client_stack_szB)) {
stackseg = VG_(am_find_nsegment)(addr);
@@ -164,8 +167,13 @@
/* For tracking memory events, indicate the entire frame has been
allocated. */
+ here = VG_(record_ExeContext)(tid, 0/*first_ip_delta*/);
+ vg_assert(here);
+ otag = VG_(get_ExeContext_uniq)(here);
+ vg_assert(otag > 0);
+
VG_TRACK( new_mem_stack_signal, addr - VG_STACK_REDZONE_SZB,
- size + VG_STACK_REDZONE_SZB );
+ size + VG_STACK_REDZONE_SZB, otag );
return True;
}
@@ -300,7 +308,8 @@
priv = &frame->priv;
priv->magicPI = 0x31415927;
priv->sigNo_private = sigNo;
- priv->shadow = tst->arch.vex_shadow;
+ priv->vex_shadow1 = tst->arch.vex_shadow1;
+ priv->vex_shadow2 = tst->arch.vex_shadow2;
if (0)
VG_(printf)("pushed signal frame; %R1 now = %p, "
@@ -364,7 +373,8 @@
LibVEX_GuestPPC64_put_XER( frame->uc.uc_mcontext.gp_regs[VKI_PT_XER],
&tst->arch.vex );
- tst->arch.vex_shadow = priv->shadow;
+ tst->arch.vex_shadow1 = priv->vex_shadow1;
+ tst->arch.vex_shadow2 = priv->vex_shadow2;
VG_TRACK(die_mem_stack_signal, sp, frame_size);
Modified: branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_syswrap/syswrap-ppc32-linux.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_syswrap/syswrap-ppc32-linux.c 2008-04-09 01:05:29 UTC (rev 7860)
+++ branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_syswrap/syswrap-ppc32-linux.c 2008-04-09 01:06:38 UTC (rev 7861)
@@ -375,7 +375,8 @@
{
/* We inherit our parent's guest state. */
child->vex = parent->vex;
- child->vex_shadow = parent->vex_shadow;
+ child->vex_shadow1 = parent->vex_shadow1;
+ child->vex_shadow2 = parent->vex_shadow2;
}
Modified: branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_syswrap/syswrap-ppc64-linux.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_syswrap/syswrap-ppc64-linux.c 2008-04-09 01:05:29 UTC (rev 7860)
+++ branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_syswrap/syswrap-ppc64-linux.c 2008-04-09 01:06:38 UTC (rev 7861)
@@ -405,7 +405,8 @@
{
/* We inherit our parent's guest state. */
child->vex = parent->vex;
- child->vex_shadow = parent->vex_shadow;
+ child->vex_shadow1 = parent->vex_shadow1;
+ child->vex_shadow2 = parent->vex_shadow2;
}
|
|
From: <sv...@va...> - 2008-04-09 01:05:50
|
Author: sewardj
Date: 2008-04-09 02:05:29 +0100 (Wed, 09 Apr 2008)
New Revision: 7860
Log:
Memcheck-side support for origin tracking on 32-bit PowerPC.
Modified:
branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_translate.c
Modified: branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_translate.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_translate.c 2008-04-07 22:34:07 UTC (rev 7859)
+++ branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_translate.c 2008-04-09 01:05:29 UTC (rev 7860)
@@ -3793,6 +3793,7 @@
#include "libvex_guest_x86.h"
#include "libvex_guest_amd64.h"
+#include "libvex_guest_ppc32.h"
static IRType get_reg_array_equiv_int_type ( IRRegArray* arr )
{
@@ -3837,13 +3838,167 @@
static Int get_shadow_offset ( Int offset, Int szB )
{
-#if defined(VGA_amd64)
+#if defined(VGA_ppc32)
+#define GOF(_fieldname) (offsetof(VexGuestPPC32State,guest_##_fieldname))
+#define SZB(_fieldname) (sizeof(((VexGuestPPC32State*)0)->guest_##_fieldname))
+ Int o = offset;
+ Int sz = szB;
+ tl_assert(sz > 0);
+
+ // FIXME: this assumes the host is big endian. Assert for it.
+ if (o == GOF(GPR0) && sz == 4) return o;
+ if (o == GOF(GPR1) && sz == 4) return o;
+ if (o == GOF(GPR2) && sz == 4) return o;
+ if (o == GOF(GPR3) && sz == 4) return o;
+ if (o == GOF(GPR4) && sz == 4) return o;
+ if (o == GOF(GPR5) && sz == 4) return o;
+ if (o == GOF(GPR6) && sz == 4) return o;
+ if (o == GOF(GPR7) && sz == 4) return o;
+ if (o == GOF(GPR8) && sz == 4) return o;
+ if (o == GOF(GPR9) && sz == 4) return o;
+ if (o == GOF(GPR10) && sz == 4) return o;
+ if (o == GOF(GPR11) && sz == 4) return o;
+ if (o == GOF(GPR12) && sz == 4) return o;
+ if (o == GOF(GPR13) && sz == 4) return o;
+ if (o == GOF(GPR14) && sz == 4) return o;
+ if (o == GOF(GPR15) && sz == 4) return o;
+ if (o == GOF(GPR16) && sz == 4) return o;
+ if (o == GOF(GPR17) && sz == 4) return o;
+ if (o == GOF(GPR18) && sz == 4) return o;
+ if (o == GOF(GPR19) && sz == 4) return o;
+ if (o == GOF(GPR20) && sz == 4) return o;
+ if (o == GOF(GPR21) && sz == 4) return o;
+ if (o == GOF(GPR22) && sz == 4) return o;
+ if (o == GOF(GPR23) && sz == 4) return o;
+ if (o == GOF(GPR24) && sz == 4) return o;
+ if (o == GOF(GPR25) && sz == 4) return o;
+ if (o == GOF(GPR26) && sz == 4) return o;
+ if (o == GOF(GPR27) && sz == 4) return o;
+ if (o == GOF(GPR28) && sz == 4) return o;
+ if (o == GOF(GPR29) && sz == 4) return o;
+ if (o == GOF(GPR30) && sz == 4) return o;
+ if (o == GOF(GPR31) && sz == 4) return o;
+
+ if (o == GOF(LR) && sz == 4) return o;
+ if (o == GOF(CTR) && sz == 4) return o;
+
+ if (o == GOF(CIA) && sz == 4) return -1;
+ if (o == GOF(CIA_AT_SC) && sz == 4) return -1;
+ if (o == GOF(RESVN) && sz == 4) return -1;
+ if (o == GOF(FPROUND) && sz == 4) return -1;
+ if (o == GOF(EMWARN) && sz == 4) return -1;
+ if (o == GOF(TISTART) && sz == 4) return -1;
+ if (o == GOF(TILEN) && sz == 4) return -1;
+ if (o == GOF(VSCR) && sz == 4) return -1;
+
+ tl_assert(SZB(FPR0) == 8);
+ if (o == GOF(FPR0) && sz == 8) return o;
+ if (o == GOF(FPR1) && sz == 8) return o;
+ if (o == GOF(FPR2) && sz == 8) return o;
+ if (o == GOF(FPR3) && sz == 8) return o;
+ if (o == GOF(FPR4) && sz == 8) return o;
+ if (o == GOF(FPR5) && sz == 8) return o;
+ if (o == GOF(FPR6) && sz == 8) return o;
+ if (o == GOF(FPR7) && sz == 8) return o;
+ if (o == GOF(FPR8) && sz == 8) return o;
+ if (o == GOF(FPR9) && sz == 8) return o;
+ if (o == GOF(FPR10) && sz == 8) return o;
+ if (o == GOF(FPR11) && sz == 8) return o;
+ if (o == GOF(FPR12) && sz == 8) return o;
+ if (o == GOF(FPR13) && sz == 8) return o;
+ if (o == GOF(FPR14) && sz == 8) return o;
+ if (o == GOF(FPR15) && sz == 8) return o;
+ if (o == GOF(FPR16) && sz == 8) return o;
+ if (o == GOF(FPR17) && sz == 8) return o;
+ if (o == GOF(FPR18) && sz == 8) return o;
+ if (o == GOF(FPR19) && sz == 8) return o;
+ if (o == GOF(FPR20) && sz == 8) return o;
+ if (o == GOF(FPR21) && sz == 8) return o;
+ if (o == GOF(FPR22) && sz == 8) return o;
+ if (o == GOF(FPR23) && sz == 8) return o;
+ if (o == GOF(FPR24) && sz == 8) return o;
+ if (o == GOF(FPR25) && sz == 8) return o;
+ if (o == GOF(FPR26) && sz == 8) return o;
+ if (o == GOF(FPR27) && sz == 8) return o;
+ if (o == GOF(FPR28) && sz == 8) return o;
+ if (o == GOF(FPR29) && sz == 8) return o;
+ if (o == GOF(FPR30) && sz == 8) return o;
+ if (o == GOF(FPR31) && sz == 8) return o;
+
+ /* For the various byte sized XER/CR pieces, use offset 8
+ in VR0 .. VR31. */
+ tl_assert(SZB(VR0) == 16);
+ if (o == GOF(XER_SO) && sz == 1) return 8 +GOF(VR0);
+ if (o == GOF(XER_OV) && sz == 1) return 8 +GOF(VR1);
+ if (o == GOF(XER_CA) && sz == 1) return 8 +GOF(VR2);
+ if (o == GOF(XER_BC) && sz == 1) return 8 +GOF(VR3);
+
+ if (o == GOF(CR0_321) && sz == 1) return 8 +GOF(VR4);
+ if (o == GOF(CR0_0) && sz == 1) return 8 +GOF(VR5);
+ if (o == GOF(CR1_321) && sz == 1) return 8 +GOF(VR6);
+ if (o == GOF(CR1_0) && sz == 1) return 8 +GOF(VR7);
+ if (o == GOF(CR2_321) && sz == 1) return 8 +GOF(VR8);
+ if (o == GOF(CR2_0) && sz == 1) return 8 +GOF(VR9);
+ if (o == GOF(CR3_321) && sz == 1) return 8 +GOF(VR10);
+ if (o == GOF(CR3_0) && sz == 1) return 8 +GOF(VR11);
+ if (o == GOF(CR4_321) && sz == 1) return 8 +GOF(VR12);
+ if (o == GOF(CR4_0) && sz == 1) return 8 +GOF(VR13);
+ if (o == GOF(CR5_321) && sz == 1) return 8 +GOF(VR14);
+ if (o == GOF(CR5_0) && sz == 1) return 8 +GOF(VR15);
+ if (o == GOF(CR6_321) && sz == 1) return 8 +GOF(VR16);
+ if (o == GOF(CR6_0) && sz == 1) return 8 +GOF(VR17);
+ if (o == GOF(CR7_321) && sz == 1) return 8 +GOF(VR18);
+ if (o == GOF(CR7_0) && sz == 1) return 8 +GOF(VR19);
+
+ /* Vector Hreegisters .. use offset 0 in VR0 .. VR31. */
+ if (o >= GOF(VR0) && o+sz <= GOF(VR0) +SZB(VR0)) return 0+ GOF(VR0);
+ if (o >= GOF(VR1) && o+sz <= GOF(VR1) +SZB(VR1)) return 0+ GOF(VR1);
+ if (o >= GOF(VR2) && o+sz <= GOF(VR2) +SZB(VR2)) return 0+ GOF(VR2);
+ if (o >= GOF(VR3) && o+sz <= GOF(VR3) +SZB(VR3)) return 0+ GOF(VR3);
+ if (o >= GOF(VR4) && o+sz <= GOF(VR4) +SZB(VR4)) return 0+ GOF(VR4);
+ if (o >= GOF(VR5) && o+sz <= GOF(VR5) +SZB(VR5)) return 0+ GOF(VR5);
+ if (o >= GOF(VR6) && o+sz <= GOF(VR6) +SZB(VR6)) return 0+ GOF(VR6);
+ if (o >= GOF(VR7) && o+sz <= GOF(VR7) +SZB(VR7)) return 0+ GOF(VR7);
+ if (o >= GOF(VR8) && o+sz <= GOF(VR8) +SZB(VR8)) return 0+ GOF(VR8);
+ if (o >= GOF(VR9) && o+sz <= GOF(VR9) +SZB(VR9)) return 0+ GOF(VR9);
+ if (o >= GOF(VR10) && o+sz <= GOF(VR10)+SZB(VR10)) return 0+ GOF(VR10);
+ if (o >= GOF(VR11) && o+sz <= GOF(VR11)+SZB(VR11)) return 0+ GOF(VR11);
+ if (o >= GOF(VR12) && o+sz <= GOF(VR12)+SZB(VR12)) return 0+ GOF(VR12);
+ if (o >= GOF(VR13) && o+sz <= GOF(VR13)+SZB(VR13)) return 0+ GOF(VR13);
+ if (o >= GOF(VR14) && o+sz <= GOF(VR14)+SZB(VR14)) return 0+ GOF(VR14);
+ if (o >= GOF(VR15) && o+sz <= GOF(VR15)+SZB(VR15)) return 0+ GOF(VR15);
+ if (o >= GOF(VR16) && o+sz <= GOF(VR16)+SZB(VR16)) return 0+ GOF(VR16);
+ if (o >= GOF(VR17) && o+sz <= GOF(VR17)+SZB(VR17)) return 0+ GOF(VR17);
+ if (o >= GOF(VR18) && o+sz <= GOF(VR18)+SZB(VR18)) return 0+ GOF(VR18);
+ if (o >= GOF(VR19) && o+sz <= GOF(VR19)+SZB(VR19)) return 0+ GOF(VR19);
+ if (o >= GOF(VR20) && o+sz <= GOF(VR20)+SZB(VR20)) return 0+ GOF(VR20);
+ if (o >= GOF(VR21) && o+sz <= GOF(VR21)+SZB(VR21)) return 0+ GOF(VR21);
+ if (o >= GOF(VR22) && o+sz <= GOF(VR22)+SZB(VR22)) return 0+ GOF(VR22);
+ if (o >= GOF(VR23) && o+sz <= GOF(VR23)+SZB(VR23)) return 0+ GOF(VR23);
+ if (o >= GOF(VR24) && o+sz <= GOF(VR24)+SZB(VR24)) return 0+ GOF(VR24);
+ if (o >= GOF(VR25) && o+sz <= GOF(VR25)+SZB(VR25)) return 0+ GOF(VR25);
+ if (o >= GOF(VR26) && o+sz <= GOF(VR26)+SZB(VR26)) return 0+ GOF(VR26);
+ if (o >= GOF(VR27) && o+sz <= GOF(VR27)+SZB(VR27)) return 0+ GOF(VR27);
+ if (o >= GOF(VR28) && o+sz <= GOF(VR28)+SZB(VR28)) return 0+ GOF(VR28);
+ if (o >= GOF(VR29) && o+sz <= GOF(VR29)+SZB(VR29)) return 0+ GOF(VR29);
+ if (o >= GOF(VR30) && o+sz <= GOF(VR30)+SZB(VR30)) return 0+ GOF(VR30);
+ if (o >= GOF(VR31) && o+sz <= GOF(VR31)+SZB(VR31)) return 0+ GOF(VR31);
+
+ VG_(printf)("get_shadow_offset(ppc32)(off=%d,sz=%d)\n", offset,szB);
+ tl_assert(0);
+#undef GOF
+#undef SZB
+
+
+#elif defined(VGA_amd64)
+
#define GOF(_fieldname) (offsetof(VexGuestAMD64State,guest_##_fieldname))
#define SZB(_fieldname) (sizeof(((VexGuestAMD64State*)0)->guest_##_fieldname))
Int o = offset;
Int sz = szB;
Bool is1248 = sz == 8 || sz == 4 || sz == 2 || sz == 1;
+ tl_assert(sz > 0);
// FIXME: this assumes the host is little endian. Assert for it.
if (o == GOF(RAX) && is1248) return o;
@@ -3949,6 +4104,7 @@
Int o = offset;
Int sz = szB;
Bool is124 = sz == 4 || sz == 2 || sz == 1;
+ tl_assert(sz > 0);
if (o == GOF(EAX) && is124) return o;
if (o == GOF(ECX) && is124) return o;
@@ -4215,7 +4371,6 @@
}
case Iex_Load: {
Int dszB;
- tl_assert(e->Iex.Load.end == Iend_LE);
dszB = sizeofIRType(e->Iex.Load.ty);
/* assert that the B value for the address is already
available (somewhere) */
@@ -4229,6 +4384,14 @@
IRAtom* b3 = schemeE( mce, e->Iex.Mux0X.exprX );
return gen_maxU32( mce, b1, gen_maxU32( mce, b2, b3 ));
}
+ case Iex_Qop: {
+ IRAtom* b1 = schemeE( mce, e->Iex.Qop.arg1 );
+ IRAtom* b2 = schemeE( mce, e->Iex.Qop.arg2 );
+ IRAtom* b3 = schemeE( mce, e->Iex.Qop.arg3 );
+ IRAtom* b4 = schemeE( mce, e->Iex.Qop.arg4 );
+ return gen_maxU32( mce, gen_maxU32( mce, b1, b2 ),
+ gen_maxU32( mce, b3, b4 ) );
+ }
case Iex_Triop: {
IRAtom* b1 = schemeE( mce, e->Iex.Triop.arg1 );
IRAtom* b2 = schemeE( mce, e->Iex.Triop.arg2 );
@@ -4472,7 +4635,6 @@
case Ist_Store: {
Int dszB;
IRAtom* dataB;
- tl_assert(st->Ist.Store.end == Iend_LE);
/* assert that the B value for the address is already
available (somewhere) */
tl_assert(isIRAtom(st->Ist.Store.addr));
|
|
From: <sv...@va...> - 2008-04-09 01:03:11
|
Author: sewardj
Date: 2008-04-09 02:03:14 +0100 (Wed, 09 Apr 2008)
New Revision: 1823
Log:
* 32-bit PowerPC: handle Max32U. Believed to be good also for 64-bit
PowerPC, although untested.
* 32-bit PowerPC: handle Left64. This should be merged to 3.3.X & trunk
since the lack of it causes even standard (non-origin-tracking) Memcheck
to assert on some obscure Altivec instructions.
Modified:
branches/OTRACK_BY_INSTRUMENTATION/priv/host-ppc/hdefs.h
branches/OTRACK_BY_INSTRUMENTATION/priv/host-ppc/isel.c
Modified: branches/OTRACK_BY_INSTRUMENTATION/priv/host-ppc/hdefs.h
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/priv/host-ppc/hdefs.h 2008-04-09 00:59:48 UTC (rev 1822)
+++ branches/OTRACK_BY_INSTRUMENTATION/priv/host-ppc/hdefs.h 2008-04-09 01:03:14 UTC (rev 1823)
@@ -288,7 +288,7 @@
PPCRI;
extern PPCRI* PPCRI_Imm ( ULong );
-extern PPCRI* PPCRI_Reg ( HReg );
+extern PPCRI* PPCRI_Reg( HReg );
extern void ppPPCRI ( PPCRI* );
Modified: branches/OTRACK_BY_INSTRUMENTATION/priv/host-ppc/isel.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/priv/host-ppc/isel.c 2008-04-09 00:59:48 UTC (rev 1822)
+++ branches/OTRACK_BY_INSTRUMENTATION/priv/host-ppc/isel.c 2008-04-09 01:03:14 UTC (rev 1823)
@@ -1367,6 +1367,18 @@
return dst;
}
+ if (e->Iex.Binop.op == Iop_Max32U) {
+ HReg r1 = iselWordExpr_R(env, e->Iex.Binop.arg1);
+ HReg r2 = iselWordExpr_R(env, e->Iex.Binop.arg2);
+ HReg rdst = newVRegI(env);
+ PPCCondCode cc = mk_PPCCondCode( Pct_TRUE, Pcf_7LT );
+ addInstr(env, mk_iMOVds_RR(rdst, r1));
+ addInstr(env, PPCInstr_Cmp(False/*unsigned*/, True/*32bit cmp*/,
+ 7/*cr*/, rdst, PPCRH_Reg(r2)));
+ addInstr(env, PPCInstr_CMov(cc, rdst, PPCRI_Reg(r2)));
+ return rdst;
+ }
+
if (e->Iex.Binop.op == Iop_32HLto64) {
HReg r_Hi = iselWordExpr_R(env, e->Iex.Binop.arg1);
HReg r_Lo = iselWordExpr_R(env, e->Iex.Binop.arg2);
@@ -1908,7 +1920,7 @@
addInstr(env, mk_iMOVds_RR(r_dst,rX));
addInstr(env, PPCInstr_Alu(Palu_AND, r_tmp,
r_cond, PPCRH_Imm(False,0xFF)));
- addInstr(env, PPCInstr_Cmp(False/*unsined*/, True/*32bit cmp*/,
+ addInstr(env, PPCInstr_Cmp(False/*unsigned*/, True/*32bit cmp*/,
7/*cr*/, r_tmp, PPCRH_Imm(False,0)));
addInstr(env, PPCInstr_CMov(cc,r_dst,r0));
return r_dst;
@@ -2672,7 +2684,7 @@
return;
}
- /* Add64/Sub64 */
+ /* Add64 */
case Iop_Add64: {
HReg xLo, xHi, yLo, yHi;
HReg tLo = newVRegI(env);
@@ -2751,6 +2763,28 @@
return;
}
+ /* Left64 */
+ case Iop_Left64: {
+ HReg argHi, argLo;
+ HReg zero32 = newVRegI(env);
+ HReg resHi = newVRegI(env);
+ HReg resLo = newVRegI(env);
+ iselInt64Expr(&argHi, &argLo, env, e->Iex.Unop.arg);
+ vassert(env->mode64 == False);
+ addInstr(env, PPCInstr_LI(zero32, 0, env->mode64));
+ /* resHi:resLo = - argHi:argLo */
+ addInstr(env, PPCInstr_AddSubC( False/*sub*/, True/*set carry*/,
+ resLo, zero32, argLo ));
+ addInstr(env, PPCInstr_AddSubC( False/*sub*/, False/*read carry*/,
+ resHi, zero32, argHi ));
+ /* resHi:resLo |= srcHi:srcLo */
+ addInstr(env, PPCInstr_Alu(Palu_OR, resLo, resLo, PPCRH_Reg(argLo)));
+ addInstr(env, PPCInstr_Alu(Palu_OR, resHi, resHi, PPCRH_Reg(argHi)));
+ *rHi = resHi;
+ *rLo = resLo;
+ return;
+ }
+
/* 32Sto64(e) */
case Iop_32Sto64: {
HReg tHi = newVRegI(env);
|
|
From: <sv...@va...> - 2008-04-09 00:59:46
|
Author: sewardj
Date: 2008-04-09 01:59:48 +0100 (Wed, 09 Apr 2008)
New Revision: 1822
Log:
Fold Max32U(t,t) to t.
Modified:
branches/OTRACK_BY_INSTRUMENTATION/priv/ir/iropt.c
Modified: branches/OTRACK_BY_INSTRUMENTATION/priv/ir/iropt.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/priv/ir/iropt.c 2008-04-07 22:30:28 UTC (rev 1821)
+++ branches/OTRACK_BY_INSTRUMENTATION/priv/ir/iropt.c 2008-04-09 00:59:48 UTC (rev 1822)
@@ -1528,6 +1528,7 @@
/* Or8/16/32/64(t,t) ==> t, for some IRTemp t */
/* And8/16/32/64(t,t) ==> t, for some IRTemp t */
+ /* Max32U(t,t) ==> t, for some IRTemp t */
if ( (e->Iex.Binop.op == Iop_And64
|| e->Iex.Binop.op == Iop_And32
|| e->Iex.Binop.op == Iop_And16
@@ -1535,7 +1536,8 @@
|| e->Iex.Binop.op == Iop_Or64
|| e->Iex.Binop.op == Iop_Or32
|| e->Iex.Binop.op == Iop_Or16
- || e->Iex.Binop.op == Iop_Or8)
+ || e->Iex.Binop.op == Iop_Or8
+ || e->Iex.Binop.op == Iop_Max32U)
&& sameIRTemps(e->Iex.Binop.arg1, e->Iex.Binop.arg2)) {
e2 = e->Iex.Binop.arg1;
}
|
|
From: Julian S. <js...@ac...> - 2008-04-09 00:52:17
|
Hello all, Valkyrie is a Qt3-based GUI for the Valgrind's Memcheck tool. It works with Valgrind versions 3.0.0 through 3.2.3 (unfortunately not the current 3.3.0 release) and is available at http://www.valgrind.org/downloads/valkyrie-1.2.0.tar.bz2. Valkyrie development has, unfortunately, stalled, due to time constraints. This state of affairs does not look likely to change in the near-to-medium future. I have been contacted by a few developers who are interested in pushing things along. If you are a developer and are interested in working on Valkyrie, there is a Valkyrie mailing list you can subscribe to: https://lists.sourceforge.net/lists/listinfo/valgrind-valkyrie-dev. The current To-do list looks like this: - Make Valkyrie work with the current (3.3.X) version of Valgrind. This should be easy: in 3.3.0, Valgrind's "--log-file-exactly=" option was renamed to "--log-file=", and so Valkyrie's option should be renamed accordingly. - The path for the Help contents files are hard-coded to /usr/doc. Documentation is therefore not visible unless the Helpviewer is pointed to the right files. Also, there is no way to set paths. - The path on where to save the output to is also hard-coded to /home/<acct>/.valkyrie/logs. - Valkyrie sometimes fails to run valgrind on a binary, and gives an error message: Process exited with return value 1. This is likely to simply be the client program return value. If, however, you suspect Valgrind itself may have crashed, please 'Save Log' and examine for details. BUT "Save Log" is currently disabled. - On exit, the Valkyrie prompts to save the output or not. When "Save" is clicked, a file dialog opens. Sometimes save fails, and then the user has to discard the output. - Support for Massif and Cachegrind seems to be wanted by quite a few users. - Porting to QT4 is a must. |