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
(9) |
2
(19) |
|
3
(5) |
4
(20) |
5
(5) |
6
(9) |
7
(6) |
8
(8) |
9
(5) |
|
10
(5) |
11
(5) |
12
(7) |
13
(7) |
14
(6) |
15
(5) |
16
(5) |
|
17
(5) |
18
(7) |
19
(21) |
20
(9) |
21
(6) |
22
(8) |
23
(6) |
|
24
(9) |
25
(9) |
26
(8) |
27
(19) |
28
(15) |
29
(8) |
30
(5) |
|
31
(6) |
|
|
|
|
|
|
|
From: <sv...@va...> - 2008-08-02 06:53:59
|
Author: sewardj Date: 2008-08-02 07:54:07 +0100 (Sat, 02 Aug 2008) New Revision: 8494 Log: Delete files which should not have been committed in the first place. Removed: branches/PTRCHECK/exp-ptrcheck/tests/arith.stderr.diff branches/PTRCHECK/exp-ptrcheck/tests/ccc.stderr.diff branches/PTRCHECK/exp-ptrcheck/tests/mm.stderr.diff branches/PTRCHECK/exp-ptrcheck/tests/or.stderr.diff branches/PTRCHECK/exp-ptrcheck/tests/partial_good.stderr.diff branches/PTRCHECK/exp-ptrcheck/tests/strlen_bad.stderr.diff branches/PTRCHECK/exp-ptrcheck/tests/syscall.stderr.diff Deleted: branches/PTRCHECK/exp-ptrcheck/tests/arith.stderr.diff =================================================================== --- branches/PTRCHECK/exp-ptrcheck/tests/arith.stderr.diff 2008-08-02 06:44:24 UTC (rev 8493) +++ branches/PTRCHECK/exp-ptrcheck/tests/arith.stderr.diff 2008-08-02 06:54:07 UTC (rev 8494) @@ -1,91 +0,0 @@ -2c2 -< Invalid ADD ---- -> Invalid arguments to Add32/Add64 -4,6c4 -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Both args derived from address 0x........ of 40-byte block alloc'd ---- -> Both args derived from address 0x........ of 40-byte block alloc'd -9,10d6 -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -12c8 -< Invalid AND ---- -> Invalid arguments to And32/And64 -14,16c10 -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< First arg derived from address 0x........ of 40-byte block alloc'd ---- -> First arg derived from address 0x........ of 40-byte block alloc'd -19,21c13 -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Second arg derived from address 0x........ of 40-byte block alloc'd ---- -> Second arg derived from address 0x........ of 40-byte block alloc'd -24,25d15 -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -27,69c17 -< Invalid IDIV -< at 0x........: main (arith.c:27) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Both args derived from address 0x........ of 40-byte block alloc'd -< at 0x........: malloc (vg_replace_malloc.c:...) -< by 0x........: main (arith.c:9) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< -< Invalid IDIV -< at 0x........: main (arith.c:28) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< First arg not a pointer -< Second arg derived from address 0x........ of 40-byte block alloc'd -< at 0x........: malloc (vg_replace_malloc.c:...) -< by 0x........: main (arith.c:9) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< -< Invalid DIV -< at 0x........: main (arith.c:31) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Both args derived from address 0x........ of 40-byte block alloc'd -< at 0x........: malloc (vg_replace_malloc.c:...) -< by 0x........: main (arith.c:9) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< -< Invalid DIV -< at 0x........: main (arith.c:32) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< First arg not a pointer -< Second arg derived from address 0x........ of 40-byte block alloc'd -< at 0x........: malloc (vg_replace_malloc.c:...) -< by 0x........: main (arith.c:9) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< -< Invalid IMUL ---- -> Invalid arguments to Mul32/Mul64 -71,73c19 -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Both args derived from address 0x........ of 40-byte block alloc'd ---- -> Both args derived from address 0x........ of 40-byte block alloc'd -76,77d21 -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -79c23 -< ERROR SUMMARY: 7 errors from 7 contexts (suppressed: 0 from 0) ---- -> ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0) Deleted: branches/PTRCHECK/exp-ptrcheck/tests/ccc.stderr.diff =================================================================== --- branches/PTRCHECK/exp-ptrcheck/tests/ccc.stderr.diff 2008-08-02 06:44:24 UTC (rev 8493) +++ branches/PTRCHECK/exp-ptrcheck/tests/ccc.stderr.diff 2008-08-02 06:54:07 UTC (rev 8494) @@ -1,91 +0,0 @@ -3,20c3,6 -< at 0x........: main (ccc.cpp:20) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Address 0x........ is 4 bytes before the accessing pointer's -< legitimate range, the 4-byte block alloc'd -< at 0x........: malloc (vg_replace_malloc.c:...) -< by 0x........: main (ccc.cpp:8) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< -< Invalid read of size 4 -< at 0x........: main (ccc.cpp:21) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Address 0x........ is 4 bytes before the accessing pointer's -< legitimate range, the 4-byte block alloc'd -< at 0x........: __builtin_new (vg_replace_malloc.c:...) -< by 0x........: operator new(unsigned) (vg_replace_malloc.c:...) ---- -> at 0x........: main (ccc.cpp:16) -> Address 0x........ is 4 bytes before the accessing pointer's -> legitimate range, a block of size 4 alloc'd -> at 0x........: operator new(unsigned) (vg_replace_malloc.c:...) -22d7 -< by 0x........: __libc_start_main (...libc...) -25,33c10,14 -< at 0x........: main (ccc.cpp:22) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Address 0x........ is 4 bytes before the accessing pointer's -< legitimate range, the 40-byte block alloc'd -< at 0x........: __builtin_vec_new (vg_replace_malloc.c:...) -< by 0x........: operator new[](unsigned) (vg_replace_malloc.c:...) -< by 0x........: main (ccc.cpp:10) -< by 0x........: __libc_start_main (...libc...) ---- -> at 0x........: main (ccc.cpp:16) -> Address 0x........ is 4 bytes before the accessing pointer's -> legitimate range, a block of size 4 alloc'd -> at 0x........: malloc (vg_replace_malloc.c:...) -> by 0x........: main (ccc.cpp:8) -36,40c17,19 -< at 0x........: main (ccc.cpp:23) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Address 0x........ is 4 bytes before the accessing pointer's -< legitimate range, the 4-byte block alloc'd ---- -> at 0x........: main (ccc.cpp:16) -> Address 0x........ is 4 bytes before the accessing pointer's -> legitimate range, a block of size 4 alloc'd -43,44d21 -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -47,51c24,26 -< at 0x........: main (ccc.cpp:24) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Address 0x........ is 4 bytes before the accessing pointer's -< legitimate range, the 4-byte block alloc'd ---- -> at 0x........: main (ccc.cpp:16) -> Address 0x........ is 4 bytes before the accessing pointer's -> legitimate range, a block of size 4 alloc'd -54,55d28 -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -58,62c31,40 -< at 0x........: main (ccc.cpp:25) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Address 0x........ is 4 bytes before the accessing pointer's -< legitimate range, the 4-byte block alloc'd ---- -> at 0x........: main (ccc.cpp:16) -> Address 0x........ is 4 bytes before the accessing pointer's -> legitimate range, a block of size 40 alloc'd -> at 0x........: operator new[](unsigned) (vg_replace_malloc.c:...) -> by 0x........: main (ccc.cpp:10) -> -> Invalid read of size 4 -> at 0x........: main (ccc.cpp:16) -> Address 0x........ is 4 bytes before the accessing pointer's -> legitimate range, a block of size 4 alloc'd -64c42 -< by 0x........: __posix_memalign (vg_replace_malloc.c:...) ---- -> by 0x........: posix_memalign (vg_replace_malloc.c:...) -66d43 -< by 0x........: __libc_start_main (...libc...) Deleted: branches/PTRCHECK/exp-ptrcheck/tests/mm.stderr.diff =================================================================== --- branches/PTRCHECK/exp-ptrcheck/tests/mm.stderr.diff 2008-08-02 06:44:24 UTC (rev 8493) +++ branches/PTRCHECK/exp-ptrcheck/tests/mm.stderr.diff 2008-08-02 06:54:07 UTC (rev 8494) @@ -1,106 +0,0 @@ -2,10c2,3 -< Invalid read of size 1 -< at 0x........: main (mm.c:47) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Address 0x........ is 1 bytes before the accessing pointer's -< legitimate range, the 4096-byte block mmap'd -< at 0x........: __mmap (in /...libc...) -< Warning: invalid file descriptor -1 in syscall write() -< Warning: invalid file descriptor -1 in syscall write() ---- -> mm: mm.c:34: main: Assertion `((void *)0) == res2' failed. -> syscallno == 270 -12,15c5,9 -< Syscall param write(buf) is non-contiguous -< at 0x........: __libc_write (...libc...) -< by 0x........: main (mm.c:49) -< by 0x........: __libc_start_main (...libc...) ---- -> exp-ptrcheck: the 'impossible' happened: -> unhandled syscall -> at 0x........: report_and_quit (m_libcassert.c:140) -> by 0x........: panic (m_libcassert.c:215) -> by 0x........: vgPlain_tool_panic (m_libcassert.c:230) -17,23d10 -< First byte is not within a known block -< Last byte (0x........) is 3 bytes within a 4096-byte block mmap'd -< at 0x........: __mmap (in /...libc...) -< -< Invalid read of size 1 -< at 0x........: main (mm.c:53) -< by 0x........: __libc_start_main (...libc...) -25,28c12,13 -< Address 0x........ is 0 bytes inside the accessing pointer's -< once-legitimate range, the 4096-byte block munmap'd -< at 0x........: __munmap (in /...libc...) -< by 0x........: __libc_start_main (...libc...) ---- -> by 0x........: vgPlain_fixup_guest_state_after_syscall_interrupted (syswrap-main.c:1353) -> by 0x........: async_signalhandler (m_signals.c:1627) -30,33c15,22 -< -< Doubly-invalid read of size 1 -< at 0x........: main (mm.c:54) -< by 0x........: __libc_start_main (...libc...) ---- -> by 0x........: myvprintf_int64 (m_debuglog.c:596) -> by 0x........: ??? -> by 0x........: ??? -> by 0x........: ??? -> by 0x........: ??? -> by 0x........: ??? -> by 0x........: ??? -> by 0x........: ??? -35,40c24,27 -< Address 0x........ is 1 bytes before the accessing pointer's -< once-legitimate range, the 4096-byte block munmap'd -< at 0x........: __munmap (in /...libc...) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Warning: invalid file descriptor -1 in syscall write() ---- -> by 0x........: ??? -> by 0x........: ??? -> by 0x........: ??? -> by 0x........: ??? -42,51c29,30 -< Syscall param write(buf) contains unaddressable byte(s) -< at 0x........: __libc_write (...libc...) -< by 0x........: main (mm.c:55) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Address 0x........ is 0 bytes within a 4096-byte block munmap'd -< at 0x........: __munmap (in /...libc...) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Warning: invalid file descriptor -1 in syscall write() ---- -> sched status: -> running_tid=1 -53,56c32,33 -< Syscall param write(buf) is non-contiguous -< at 0x........: __libc_write (...libc...) -< by 0x........: main (mm.c:56) -< by 0x........: __libc_start_main (...libc...) ---- -> Thread 1: status = VgTs_Runnable -> at 0x........: raise (in /...libc...) -58,61d34 -< First byte is not within a known block -< Last byte (0x........) is 3 bytes within a 4096-byte block munmap'd -< at 0x........: __munmap (in /...libc...) -< by 0x........: __libc_start_main (...libc...) -62a36,45 -> by 0x........: main (mm.c:34) -> -> -> Note: see also the FAQ.txt in the source distribution. -> It contains workarounds to several common problems. -> -> If that doesn't help, please report this bug to: nj...@va... -> -> In the bug report, send all the above text, the valgrind -> version, and what Linux distro you are using. Thanks. -64d46 -< ERROR SUMMARY: 6 errors from 6 contexts (suppressed: 0 from 0) Deleted: branches/PTRCHECK/exp-ptrcheck/tests/or.stderr.diff =================================================================== --- branches/PTRCHECK/exp-ptrcheck/tests/or.stderr.diff 2008-08-02 06:44:24 UTC (rev 8493) +++ branches/PTRCHECK/exp-ptrcheck/tests/or.stderr.diff 2008-08-02 06:54:07 UTC (rev 8494) @@ -1,23 +0,0 @@ -29,34d28 -< -< Invalid OR -< at 0x........: main (or.c:20) -< Both args derived from address 0x........ of 40-byte block alloc'd -< at 0x........: malloc (vg_replace_malloc.c:...) -< by 0x........: main (arith_include2.c:22) -36,39d29 -< -< Invalid read of size 4 -< at 0x........: main (or.c:20) -< Address 0x........ is not derived from any known block -44c34,37 -< Address 0x........ is not derived from any known block ---- -> Address 0x........ is 4 bytes before the accessing pointer's -> legitimate range, a block of size 40 alloc'd -> at 0x........: malloc (vg_replace_malloc.c:...) -> by 0x........: main (arith_include2.c:22) -91c84 -< ERROR SUMMARY: 10 errors from 10 contexts (suppressed: 0 from 0) ---- -> ERROR SUMMARY: 8 errors from 8 contexts (suppressed: 0 from 0) Deleted: branches/PTRCHECK/exp-ptrcheck/tests/partial_good.stderr.diff =================================================================== --- branches/PTRCHECK/exp-ptrcheck/tests/partial_good.stderr.diff 2008-08-02 06:44:24 UTC (rev 8493) +++ branches/PTRCHECK/exp-ptrcheck/tests/partial_good.stderr.diff 2008-08-02 06:54:07 UTC (rev 8494) @@ -1,105 +0,0 @@ -1,101c1,2 -< -< Invalid read of size 4 -< at 0x........: main (partial.c:22) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Address 0x........ is 1 bytes inside the accessing pointer's -< legitimate range, the 4-byte block alloc'd -< at 0x........: malloc (vg_replace_malloc.c:...) -< by 0x........: main (partial.c:7) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< -< Invalid read of size 4 -< at 0x........: main (partial.c:23) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Address 0x........ is 2 bytes inside the accessing pointer's -< legitimate range, the 5-byte block alloc'd -< at 0x........: malloc (vg_replace_malloc.c:...) -< by 0x........: main (partial.c:8) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< -< Invalid read of size 4 -< at 0x........: main (partial.c:24) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Address 0x........ is 3 bytes inside the accessing pointer's -< legitimate range, the 6-byte block alloc'd -< at 0x........: malloc (vg_replace_malloc.c:...) -< by 0x........: main (partial.c:9) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< -< Invalid read of size 4 -< at 0x........: main (partial.c:34) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Address 0x........ is 1 bytes before the accessing pointer's -< legitimate range, the 3-byte block alloc'd -< at 0x........: malloc (vg_replace_malloc.c:...) -< by 0x........: main (partial.c:6) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< -< Invalid read of size 4 -< at 0x........: main (partial.c:36) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Address 0x........ is 1 bytes inside the accessing pointer's -< legitimate range, the 3-byte block alloc'd -< at 0x........: malloc (vg_replace_malloc.c:...) -< by 0x........: main (partial.c:6) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< -< Invalid read of size 4 -< at 0x........: main (partial.c:37) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Address 0x........ is 2 bytes inside the accessing pointer's -< legitimate range, the 3-byte block alloc'd -< at 0x........: malloc (vg_replace_malloc.c:...) -< by 0x........: main (partial.c:6) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< -< Invalid read of size 4 -< at 0x........: main (partial.c:38) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Address 0x........ is 0 bytes after the accessing pointer's -< legitimate range, the 3-byte block alloc'd -< at 0x........: malloc (vg_replace_malloc.c:...) -< by 0x........: main (partial.c:6) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< -< Invalid read of size 1 -< at 0x........: main (partial.c:44) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Address 0x........ is 0 bytes after the accessing pointer's -< legitimate range, the 0-byte block alloc'd -< at 0x........: malloc (vg_replace_malloc.c:...) -< by 0x........: main (partial.c:9) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< -< Invalid read of size 2 -< at 0x........: main (partial.c:45) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Address 0x........ is 0 bytes inside the accessing pointer's -< legitimate range, the 1-byte block alloc'd -< at 0x........: malloc (vg_replace_malloc.c:...) -< by 0x........: main (partial.c:10) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< -< ERROR SUMMARY: 9 errors from 9 contexts (suppressed: 0 from 0) ---- -> valgrind: Bad option '--partial-loads-ok=yes'; aborting. -> valgrind: Use --help for more information. Deleted: branches/PTRCHECK/exp-ptrcheck/tests/strlen_bad.stderr.diff =================================================================== --- branches/PTRCHECK/exp-ptrcheck/tests/strlen_bad.stderr.diff 2008-08-02 06:44:24 UTC (rev 8493) +++ branches/PTRCHECK/exp-ptrcheck/tests/strlen_bad.stderr.diff 2008-08-02 06:54:07 UTC (rev 8494) @@ -1,50 +0,0 @@ -1,46c1,2 -< -< Invalid read of size 4 -< at 0x........: strlen (in /...libc...) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Address 0x........ is 12 bytes inside the accessing pointer's -< legitimate range, the 13-byte block alloc'd -< at 0x........: malloc (vg_replace_malloc.c:...) -< by 0x........: __strdup (in /...libc...) -< by 0x........: main (strlen.c:14) -< by 0x........: __libc_start_main (...libc...) -< -< Invalid read of size 4 -< at 0x........: strchr (in /...libc...) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Address 0x........ is 12 bytes inside the accessing pointer's -< legitimate range, the 13-byte block alloc'd -< at 0x........: malloc (vg_replace_malloc.c:...) -< by 0x........: __strdup (in /...libc...) -< by 0x........: main (strlen.c:14) -< by 0x........: __libc_start_main (...libc...) -< -< Invalid read of size 4 -< at 0x........: strrchr (in /...libc...) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Address 0x........ is 12 bytes inside the accessing pointer's -< legitimate range, the 13-byte block alloc'd -< at 0x........: malloc (vg_replace_malloc.c:...) -< by 0x........: __strdup (in /...libc...) -< by 0x........: main (strlen.c:14) -< by 0x........: __libc_start_main (...libc...) -< -< Invalid read of size 4 -< at 0x........: strrchr (in /...libc...) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Address 0x........ is 12 bytes inside the accessing pointer's -< legitimate range, the 13-byte block alloc'd -< at 0x........: malloc (vg_replace_malloc.c:...) -< by 0x........: __strdup (in /...libc...) -< by 0x........: main (strlen.c:14) -< by 0x........: __libc_start_main (...libc...) -< -< ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 0 from 0) ---- -> valgrind: Bad option '--partial-loads-ok=no'; aborting. -> valgrind: Use --help for more information. Deleted: branches/PTRCHECK/exp-ptrcheck/tests/syscall.stderr.diff =================================================================== --- branches/PTRCHECK/exp-ptrcheck/tests/syscall.stderr.diff 2008-08-02 06:44:24 UTC (rev 8493) +++ branches/PTRCHECK/exp-ptrcheck/tests/syscall.stderr.diff 2008-08-02 06:54:07 UTC (rev 8494) @@ -1,113 +0,0 @@ -1,109c1,2 -< -< Warning: invalid file descriptor -1 in syscall write() -< Syscall param write(buf) is non-contiguous -< at 0x........: __libc_write (...libc...) -< by 0x........: main (syscall.c:32) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< First byte (0x........) is 3 bytes within a 6-byte block alloc'd -< at 0x........: malloc (vg_replace_malloc.c:...) -< by 0x........: main (syscall.c:20) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Last byte is not within a known block -< Warning: invalid file descriptor -1 in syscall write() -< -< Syscall param write(buf) is non-contiguous -< at 0x........: __libc_write (...libc...) -< by 0x........: main (syscall.c:33) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< First byte is not within a known block -< Last byte (0x........) is 3 bytes within a 6-byte block alloc'd -< at 0x........: malloc (vg_replace_malloc.c:...) -< by 0x........: main (syscall.c:20) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Warning: invalid file descriptor -1 in syscall write() -< -< Syscall param write(buf) is non-contiguous -< at 0x........: __libc_write (...libc...) -< by 0x........: main (syscall.c:34) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< First byte (0x........) is 1 bytes within a 6-byte block alloc'd -< at 0x........: malloc (vg_replace_malloc.c:...) -< by 0x........: main (syscall.c:20) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Last byte (0x........) is 0 bytes within a 6-byte block alloc'd -< at 0x........: malloc (vg_replace_malloc.c:...) -< by 0x........: main (syscall.c:20) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< -< Syscall param open(pathname) is non-contiguous -< at 0x........: __libc_open (...libc...) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< First byte (0x........) is 3 bytes within a 6-byte block alloc'd -< at 0x........: malloc (vg_replace_malloc.c:...) -< by 0x........: main (syscall.c:20) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Last byte is not within a known block -< -< Syscall param getitimer(timer) is non-contiguous -< at 0x........: __getitimer (in /...libc...) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< First byte (0x........) is 0 bytes within a 15-byte block alloc'd -< at 0x........: malloc (vg_replace_malloc.c:...) -< by 0x........: main (syscall.c:21) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Last byte is not within a known block -< Warning: invalid file descriptor -1 in syscall write() -< -< Syscall param write(buf) contains unaddressable byte(s) -< at 0x........: __libc_write (...libc...) -< by 0x........: main (syscall.c:41) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Address 0x........ is 0 bytes within a 6-byte block free'd -< at 0x........: free (vg_replace_malloc.c:...) -< by 0x........: main (syscall.c:40) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Warning: invalid file descriptor -1 in syscall write() -< -< Syscall param write(buf) is non-contiguous -< at 0x........: __libc_write (...libc...) -< by 0x........: main (syscall.c:42) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< First byte (0x........) is 3 bytes within a 6-byte block free'd -< at 0x........: free (vg_replace_malloc.c:...) -< by 0x........: main (syscall.c:40) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Last byte is not within a known block -< Warning: invalid file descriptor -1 in syscall write() -< -< Syscall param write(buf) is non-contiguous -< at 0x........: __libc_write (...libc...) -< by 0x........: main (syscall.c:43) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< First byte (0x........) is 1 bytes within a 6-byte block free'd -< at 0x........: free (vg_replace_malloc.c:...) -< by 0x........: main (syscall.c:40) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< Last byte (0x........) is 0 bytes within a 6-byte block alloc'd -< at 0x........: malloc (vg_replace_malloc.c:...) -< by 0x........: main (syscall.c:20) -< by 0x........: __libc_start_main (...libc...) -< by 0x........: ... -< -< ERROR SUMMARY: 8 errors from 8 contexts (suppressed: 0 from 0) ---- -> valgrind: Bad option '--sloppy-malloc=no'; aborting. -> valgrind: Use --help for more information. |
|
From: <sv...@va...> - 2008-08-02 06:44:17
|
Author: sewardj
Date: 2008-08-02 07:44:24 +0100 (Sat, 02 Aug 2008)
New Revision: 8493
Log:
* remove various parts of old UCode-based code
* tidy up syscall handling a bit
* fix bug in which some store handlers didn't actually check
validity of the store address
Modified:
branches/PTRCHECK/exp-ptrcheck/pc_main.c
Modified: branches/PTRCHECK/exp-ptrcheck/pc_main.c
===================================================================
--- branches/PTRCHECK/exp-ptrcheck/pc_main.c 2008-08-02 06:41:04 UTC (rev 8492)
+++ branches/PTRCHECK/exp-ptrcheck/pc_main.c 2008-08-02 06:44:24 UTC (rev 8493)
@@ -36,6 +36,8 @@
// FIXME: should we shadow %RIP? Maybe not.
+// FIXME: shadows of temporaries created in preamble, a la memcheck?
+
// FIXME: result of add_new_segment is always ignored
// FIXME: the mechanism involving last_seg_added is really ugly.
@@ -54,6 +56,9 @@
// startup, or quit (to do with nonptr_or_unknown, also sync 1M
// magic value with PIE default load address in m_ume.c.
+// FIXME: consider whether we could paint memory acquired from
+// sys_read etc as NONPTR rather than UNKNOWN.
+
// XXX: recycle freed segments
//--------------------------------------------------------------
@@ -752,18 +757,6 @@
return (UNKNOWN != seg && BOTTOM != seg && NONPTR != seg);
}
-//zz static Char* pc_name_UOpcode(Int opc)
-//zz {
-//zz if (opc >= 0) return VG_(name_UOpcode)(True, opc);
-//zz
-//zz else if (-opc == VGOFF_(helper_mul_32_64)) return "MUL";
-//zz else if (-opc == VGOFF_(helper_imul_32_64)) return "IMUL";
-//zz else if (-opc == VGOFF_(helper_div_64_32)) return "DIV";
-//zz else if (-opc == VGOFF_(helper_idiv_64_32)) return "IDIV";
-//zz
-//zz else VG_(skin_panic)("pc_name_UOpcode");
-//zz }
-
static void pp_Error ( Error* err )
{
switch (VG_(get_error_kind)(err)) {
@@ -2124,7 +2117,6 @@
|| f == (Addr)pc_replace_memalign
|| f == (Addr)pc_replace_realloc)
{
- // if (f == (Addr)pc_replace_realloc)return;
// We remembered the last added segment; make sure it's the right one.
/* What's going on: at this point, the scheduler has just called
'f' -- one of our malloc replacement functions -- and it has
@@ -2247,58 +2239,6 @@
{
switch (syscallno) {
- /* For the most part, syscalls don't return pointers. So set
- the return shadow to unknown. */
- case __NR_access:
- case __NR_clock_gettime:
- case __NR_close:
-# if defined(__NR_connect)
- case __NR_connect:
-# endif
- case __NR_exit_group:
- case __NR_getcwd:
- case __NR_getrlimit:
- case __NR_fadvise64:
- case __NR_fcntl:
- case __NR_fstat:
- case __NR_futex:
-# if defined(__NR_fstat64)
- case __NR_fstat64:
-# endif
- case __NR_getdents64: // something to do with teeth?
- case __NR_getxattr:
- case __NR_ioctl: // ioctl -- assuming no pointers returned
- case __NR_lstat:
- case __NR_mprotect:
- case __NR_munmap: // die_mem_munmap already called, segment removed
- case __NR_open:
- case __NR_read:
- case __NR_set_robust_list:
-# if defined(__NR_set_thread_area)
- case __NR_set_thread_area:
-# endif
- case __NR_set_tid_address:
-# if defined(__NR_socket)
- case __NR_socket:
-# endif
-# if defined(__NR_socketcall)
- case __NR_socketcall: /* the nasty x86-linux socket multiplexor */
-# endif
- case __NR_rt_sigaction:
- case __NR_rt_sigprocmask:
- case __NR_stat:
-# if defined(__NR_stat64)
- case __NR_stat64:
-# endif
-# if defined(__NR_ugetrlimit)
- case __NR_ugetrlimit:
-# endif
- case __NR_uname:
- case __NR_write:
- //VG_(set_syscall_return_shadows)( tid, (UWord)UNKNOWN, 0 );
- VG_(set_syscall_return_shadows)( tid, (UWord)NONPTR, 0 );
- break;
-
/* These ones definitely don't return pointers. They're not
particularly grammatical, either. */
# if defined(__NR__llseek)
@@ -2310,35 +2250,48 @@
# if defined(__NR_accept)
case __NR_accept:
# endif
+ case __NR_access:
# if defined(__NR_bind)
case __NR_bind:
# endif
case __NR_chdir:
case __NR_chmod:
case __NR_clock_getres:
+ case __NR_clock_gettime:
case __NR_clone:
+ case __NR_close:
+# if defined(__NR_connect)
+ case __NR_connect:
+# endif
case __NR_dup:
case __NR_dup2:
case __NR_exit: /* hmm, why are we still alive? */
+ case __NR_exit_group:
+ case __NR_fadvise64:
case __NR_fchmod:
case __NR_fchown:
# if defined(__NR_fchown32)
case __NR_fchown32:
# endif
+ case __NR_fcntl:
# if defined(__NR_fcntl64)
case __NR_fcntl64:
# endif
case __NR_fdatasync:
- case __NR_fstatfs:
-# if defined(__NR_statfs64)
- case __NR_statfs64:
+ case __NR_fstat:
+# if defined(__NR_fstat64)
+ case __NR_fstat64:
# endif
+ case __NR_fstatfs:
case __NR_fsync:
case __NR_ftruncate:
# if defined(__NR_ftruncate64)
case __NR_ftruncate64:
# endif
- case __NR_getdents:
+ case __NR_futex:
+ case __NR_getcwd:
+ case __NR_getdents: // something to do with teeth?
+ case __NR_getdents64:
case __NR_getegid:
# if defined(__NR_getegid32)
case __NR_getegid32:
@@ -2351,9 +2304,11 @@
# if defined(__NR_getgid32)
case __NR_getgid32:
# endif
+ case __NR_getitimer:
case __NR_getppid:
case __NR_getresgid:
case __NR_getresuid:
+ case __NR_getrlimit:
# if defined(__NR_getsockname)
case __NR_getsockname:
# endif
@@ -2365,21 +2320,28 @@
# if defined(__NR_getuid32)
case __NR_getuid32:
# endif
+ case __NR_getxattr:
case __NR_inotify_init:
+ case __NR_ioctl: // ioctl -- assuming no pointers returned
case __NR_kill:
case __NR_link:
# if defined(__NR_listen)
case __NR_listen:
# endif
case __NR_lseek:
+ case __NR_lstat:
# if defined(__NR_lstat64)
case __NR_lstat64:
# endif
case __NR_madvise:
case __NR_mkdir:
+ case __NR_mprotect:
+ case __NR_munmap: // die_mem_munmap already called, segment removed
+ case __NR_open:
case __NR_pipe:
case __NR_poll:
case __NR_pwrite64:
+ case __NR_read:
case __NR_readlink:
case __NR_readv:
# if defined(__NR_recvfrom)
@@ -2400,6 +2362,11 @@
# if defined(__NR_sendto)
case __NR_sendto:
# endif
+ case __NR_set_robust_list:
+# if defined(__NR_set_thread_area)
+ case __NR_set_thread_area:
+# endif
+ case __NR_set_tid_address:
case __NR_setitimer:
case __NR_setrlimit:
# if defined(__NR_setsockopt)
@@ -2411,9 +2378,24 @@
# if defined(__NR_shutdown)
case __NR_shutdown:
# endif
+# if defined(__NR_socket)
+ case __NR_socket:
+# endif
+# if defined(__NR_socketcall)
+ case __NR_socketcall: /* the nasty x86-linux socket multiplexor */
+# endif
+# if defined(__NR_statfs64)
+ case __NR_statfs64:
+# endif
+ case __NR_rt_sigaction:
+ case __NR_rt_sigprocmask:
# if defined(__NR_sigreturn)
case __NR_sigreturn: /* not sure if we should see this or not */
# endif
+# if defined(__NR_stat64)
+ case __NR_stat64:
+# endif
+ case __NR_stat:
case __NR_statfs:
case __NR_symlink:
case __NR_sysinfo:
@@ -2423,13 +2405,18 @@
# if defined(__NR_truncate64)
case __NR_truncate64:
# endif
+# if defined(__NR_ugetrlimit)
+ case __NR_ugetrlimit:
+# endif
case __NR_umask:
+ case __NR_uname:
case __NR_unlink:
case __NR_utime:
# if defined(__NR_waitpid)
case __NR_waitpid:
# endif
case __NR_wait4:
+ case __NR_write:
case __NR_writev:
VG_(set_syscall_return_shadows)( tid, (UWord)NONPTR, 0 );
break;
@@ -2838,6 +2825,10 @@
UWord ms8B, UWord ls8B)
{
tl_assert(sizeof(UWord) == 8); /* DO NOT REMOVE */
+# if SC_SEGS
+ checkSeg(mptr_vseg);
+# endif
+ check_load_or_store(/*is_write*/True, m, 16, mptr_vseg);
// Actually *do* the STORE here
if (host_is_little_endian()) {
// FIXME: aren't we really concerned whether the guest
@@ -2860,6 +2851,10 @@
UWord w1, UWord ls4B)
{
tl_assert(sizeof(UWord) == 4); /* DO NOT REMOVE */
+# if SC_SEGS
+ checkSeg(mptr_vseg);
+# endif
+ check_load_or_store(/*is_write*/True, m, 16, mptr_vseg);
// Actually *do* the STORE here
if (host_is_little_endian()) {
// FIXME: aren't we really concerned whether the guest
@@ -2885,6 +2880,10 @@
UWord ms4B, UWord ls4B)
{
tl_assert(sizeof(UWord) == 4); /* DO NOT REMOVE */
+# if SC_SEGS
+ checkSeg(mptr_vseg);
+# endif
+ check_load_or_store(/*is_write*/True, m, 8, mptr_vseg);
// Actually *do* the STORE here
if (host_is_little_endian()) {
// FIXME: aren't we really concerned whether the guest
@@ -2904,6 +2903,10 @@
void check_store8_all8B(Addr m, Seg mptr_vseg, UWord all8B)
{
tl_assert(sizeof(UWord) == 8); /* DO NOT REMOVE */
+# if SC_SEGS
+ checkSeg(mptr_vseg);
+# endif
+ check_load_or_store(/*is_write*/True, m, 8, mptr_vseg);
// Actually *do* the STORE here
*(ULong*)m = all8B;
nonptr_or_unknown_range(m, 8);
@@ -3020,11 +3023,11 @@
// -------------
static Seg do_addW_result(Seg seg1, Seg seg2, UWord result, HChar* opname)
{
+ Seg out;
# if SC_SEGS
checkSeg(seg1);
checkSeg(seg2);
# endif
- Seg out;
BINOP(
return BOTTOM,
out = NONPTR, out = UNKNOWN, out = seg2,
@@ -3057,11 +3060,11 @@
// -------------
static VG_REGPARM(3) Seg do_subW(Seg seg1, Seg seg2, UWord result)
{
+ Seg out;
# if SC_SEGS
checkSeg(seg1);
checkSeg(seg2);
# endif
- Seg out;
// Nb: when returning BOTTOM, don't let it go through the range-check;
// a segment linking offset can easily look like a nonptr.
BINOP(
@@ -3081,41 +3084,6 @@
return ( looks_like_a_pointer(result) ? out : NONPTR );
}
-//zz // -------------
-//zz // +-.| n ? p (Nb: not very certain about these ones)
-//zz // -------------
-//zz // n | n ? e
-//zz // ? | ? ? e
-//zz // p | p e e
-//zz // -------------
-//zz static __inline__
-//zz Seg do_adcsbb4(Seg seg1, Seg seg2, Opcode opc)
-//zz {
-//zz Seg out;
-//zz
-//zz VGP_PUSHCC(VgpDoAdcSbb);
-//zz BINOP(
-//zz VGP_POPCC(VgpDoAdcSbb); return BOTTOM,
-//zz out = NONPTR, out = UNKNOWN, BINERROR(opc),
-//zz out = UNKNOWN, out = UNKNOWN, BINERROR(opc),
-//zz out = seg1, BINERROR(opc), BINERROR(opc)
-//zz );
-//zz VGP_POPCC(VgpDoAdcSbb);
-//zz return ( looks_like_a_pointer(do_op___result) ? out : NONPTR );
-//zz }
-//zz
-//zz static __attribute__((regparm(2)))
-//zz Seg do_adc4(Seg seg1, Seg seg2)
-//zz {
-//zz return do_adcsbb4(seg1, seg2, ADC);
-//zz }
-//zz
-//zz static __attribute__((regparm(2)))
-//zz Seg do_sbb4(Seg seg1, Seg seg2)
-//zz {
-//zz return do_adcsbb4(seg1, seg2, SBB);
-//zz }
-
// -------------
// & | n ? p
// -------------
@@ -3180,80 +3148,6 @@
return out;
}
-//zz // -------------
-//zz // L1 | n ? p
-//zz // -------------
-//zz // n | n ? p
-//zz // ? | ? ? p
-//zz // -------------
-//zz static Seg do_lea(Bool k_looks_like_a_ptr, Seg seg1)
-//zz {
-//zz Seg out;
-//zz
-//zz if (BOTTOM == seg1) return BOTTOM;
-//zz
-//zz if (k_looks_like_a_ptr && NONPTR == seg1)
-//zz out = UNKNOWN; // ?(n)
-//zz else
-//zz out = seg1; // n(n), n(?), n(p), ?(?), ?(p)
-//zz
-//zz return ( looks_like_a_pointer(do_op___result) ? out : NONPTR );
-//zz }
-//zz
-//zz static __attribute__((regparm(1)))
-//zz Seg do_lea1_unknown(Seg seg1)
-//zz {
-//zz Seg out;
-//zz
-//zz VGP_PUSHCC(VgpDoLea1);
-//zz out = do_lea( /*k_looks_like_a_ptr*/True, seg1 );
-//zz VGP_POPCC (VgpDoLea1);
-//zz return out;
-//zz }
-//zz
-//zz static UInt do_lea2___k;
-//zz
-//zz static __attribute__((regparm(2)))
-//zz Seg do_lea2_1(Seg seg1, Seg seg2)
-//zz {
-//zz Seg out;
-//zz
-//zz // a) Combine seg1 and seg2 as for ADD, giving a result.
-//zz // b) Combine that result with k as for LEA1.
-//zz VGP_PUSHCC(VgpDoLea2);
-//zz out = do_lea( looks_like_a_pointer(do_lea2___k),
-//zz do_add4_result(seg1, seg2, LEA2) );
-//zz VGP_POPCC (VgpDoLea2);
-//zz return out;
-//zz }
-//zz
-//zz static __attribute__((regparm(2)))
-//zz Seg do_lea2_n(Seg seg1, Seg seg2)
-//zz {
-//zz VGP_PUSHCC(VgpDoLea2);
-//zz VGP_POPCC (VgpDoLea2);
-//zz
-//zz if (is_known_segment(seg2)) {
-//zz // Could do with AsmError
-//zz VG_(message)(Vg_UserMsg,
-//zz "\nScaling known pointer by value > 1 in lea instruction");
-//zz }
-//zz return do_lea(looks_like_a_pointer(do_lea2___k), seg1);
-//zz }
-//zz
-//zz // -------------
-//zz // - | n ? p
-//zz // -------------
-//zz // | n n n
-//zz // -------------
-//zz static __attribute__((regparm(2)))
-//zz Seg do_neg4(Seg seg1, UInt result)
-//zz {
-//zz if (BOTTOM == seg1) return BOTTOM;
-//zz
-//zz return NONPTR;
-//zz }
-
// -------------
// ~ | n ? p
// -------------
@@ -3283,66 +3177,10 @@
}
-//zz static __attribute__((regparm(2)))
-//zz void check_imul4(Seg seg1, Seg seg2)
-//zz {
-//zz if (is_known_segment(seg1) && is_known_segment(seg2))
-//zz record_arith_error(0xA5, 0xA5, seg1, seg2, -VGOFF_(helper_imul_32_64));
-//zz }
-//zz
-//zz // seg1 / seg2: div_64_32 can take a pointer for its 2nd arg (seg1).
-//zz static __attribute__((regparm(2)))
-//zz void check_div4(Seg seg1, Seg seg2)
-//zz {
-//zz if (is_known_segment(seg2))
-//zz record_arith_error(0xA5, 0xA5, seg1, seg2, -VGOFF_(helper_div_64_32));
-//zz }
-//zz
-//zz // seg1 / seg2: idiv_64_32 can take a pointer for its 2nd or 3rd arg
-//zz // (because the 3rd arg, ie. the high-word, will be derived from the
-//zz // low-word with a 'sar' in order to get the sign-bit correct). But we only
-//zz // check the lo-word.
-//zz static __attribute__((regparm(2)))
-//zz void check_idiv4(Seg seg1, Seg seg2)
-//zz {
-//zz if (is_known_segment(seg2))
-//zz record_arith_error(0xA5, 0xA5, seg1, seg2, -VGOFF_(helper_idiv_64_32));
-//zz }
-//zz
-//zz
-//zz /*--------------------------------------------------------------------*/
-//zz /*--- Instrumentation ---*/
-//zz /*--------------------------------------------------------------------*/
-//zz
-//zz static void set_nonptr_or_unknown(UCodeBlock* cb, UInt t)
-//zz {
-//zz sk_assert(0 == t % 2); // check number is even, ie. a normal tempreg
-//zz VG_(ccall_R_R)(cb, (Addr)nonptr_or_unknown,
-//zz t, // t (reg)
-//zz SHADOW(t), // t.vseg (reg)(retval)
-//zz 1);
-//zz }
-//zz
-//zz static void set_shadowreg(UCodeBlock* cb, UInt q, Seg seg)
-//zz {
-//zz sk_assert(1 == q % 2); // check number is odd, ie. a shadow tempreg
-//zz VG_(lit_to_reg)(cb, (UInt)seg, q);
-//zz }
-//zz
-//zz static void set_nonptr(UCodeBlock* cb, UInt q)
-//zz {
-//zz set_shadowreg(cb, q, NONPTR);
-//zz }
-//zz
-//zz __attribute__((unused))
-//zz static void record_binary_arith_args(UCodeBlock* cb, UInt arg1, UInt arg2)
-//zz {
-//zz VG_(reg_to_globvar)(cb, arg1, &actual_arg1);
-//zz VG_(reg_to_globvar)(cb, arg2, &actual_arg2);
-//zz }
+/*--------------------------------------------------------------------*/
+/*--- Instrumentation ---*/
+/*--------------------------------------------------------------------*/
-
-
/* Carries around state during Ptrcheck instrumentation. */
typedef
struct {
@@ -4659,575 +4497,6 @@
ppIRStmt(st);
tl_assert(0);
}
-//zz static UInt bb = 0;
-//zz
-//zz UCodeBlock* cb;
-//zz Int i;
-//zz UInstr* u;
-//zz Addr helper;
-//zz UInt callm_shadow_arg4v[3];
-//zz UInt callm_arg4c = -1;
-//zz
-//zz cb = VG_(setup_UCodeBlock)(cb_in);
-//zz
-//zz // Print BB number upon execution
-//zz if (0)
-//zz VG_(ccall_L_0)(cb, (Addr)print_BB_entry, bb++, 1);
-//zz
-//zz
-//zz for (i = 0; i < VG_(get_num_instrs)(cb_in); i++) {
-//zz u = VG_(get_instr)(cb_in, i);
-//zz
-//zz //-- Start main switch -------------------------------------------
-//zz switch (u->opcode) {
-//zz
-//zz case NOP:
-//zz break;
-//zz
-//zz case LOCK:
-//zz case INCEIP:
-//zz VG_(copy_UInstr)(cb, u);
-//zz break;
-//zz
-//zz //--- Value movers -----------------------------------------------
-//zz case MOV:
-//zz // a) Do MOV
-//zz VG_(copy_UInstr)(cb, u);
-//zz if (4 == u->size) {
-//zz if (Literal == u->tag1) {
-//zz // MOVL l, t2
-//zz // b) t2.vseg = NONPTR/UNKNOWN
-//zz set_shadowreg(cb, SHADOW(u->val2), nonptr_or_unknown(u->lit32));
-//zz } else {
-//zz // MOVL t1, t2 (only occurs if --optimise=no)
-//zz // b) t2.vseg = t1.vseg
-//zz uInstr2(cb, MOV, 4, TempReg, SHADOW(u->val1),
-//zz TempReg, SHADOW(u->val2));
-//zz }
-//zz } else {
-//zz // MOV[WB] l, t2
-//zz // b) t2.vseg = NONPTR
-//zz sk_assert(Literal == u->tag1);
-//zz set_nonptr(cb, SHADOW(u->val2));
-//zz }
-//zz break;
-//zz
-//zz case CMOV:
-//zz // CMOV t1, t2
-//zz // a) t2.vseg = t1.vseg, if condition holds
-//zz // b) Do CMOV
-//zz sk_assert(4 == u->size);
-//zz uInstr2(cb, CMOV, 4, TempReg, SHADOW(u->val1),
-//zz TempReg, SHADOW(u->val2));
-//zz uCond(cb, u->cond);
-//zz uFlagsRWU(cb, u->flags_r, u->flags_w, FlagsEmpty);
-//zz VG_(copy_UInstr)(cb, u);
-//zz break;
-//zz
-//zz case GET:
-//zz // a) Do GET
-//zz VG_(copy_UInstr)(cb, u);
-//zz if (4 == u->size) {
-//zz // GETL r, t2
-//zz // b) t2.vseg = r.vseg
-//zz uInstr2(cb, GETV, 4, ArchReg, u->val1, TempReg, SHADOW(u->val2));
-//zz } else {
-//zz // GET[WB] r, t2
-//zz // b) t2.vseg = NONPTR
-//zz set_nonptr(cb, SHADOW(u->val2));
-//zz }
-//zz break;
-//zz
-//zz case PUT: {
-//zz // a) Do PUT
-//zz VG_(copy_UInstr)(cb, u);
-//zz if (4 == u->size) {
-//zz // PUTL t1, r
-//zz // b) r.vseg = t1.vseg
-//zz uInstr2(cb, PUTV, 4, TempReg, SHADOW(u->val1), ArchReg, u->val2);
-//zz } else {
-//zz // PUT[WB] t1, r
-//zz // b) r.vseg = NONPTR/UNKNOWN
-//zz // (GET the result of the PUT[WB], look at the resulting
-//zz // word, PUTV the shadow result. Ugh.)
-//zz UInt t_res = newTemp(cb);
-//zz uInstr2(cb, GET, 4, ArchReg, u->val2, TempReg, t_res);
-//zz set_nonptr_or_unknown(cb, t_res);
-//zz uInstr2(cb, PUTV, 4, TempReg, SHADOW(t_res), ArchReg, u->val2);
-//zz }
-//zz break;
-//zz }
-//zz
-//zz case GETF:
-//zz // GETF t1
-//zz // a) t1.vseg = NONPTR
-//zz // b) Do GETF
-//zz set_nonptr(cb, SHADOW(u->val1));
-//zz VG_(copy_UInstr)(cb, u);
-//zz break;
-//zz
-//zz case PUTF:
-//zz // PUTF t1
-//zz // a) Do PUTF
-//zz VG_(copy_UInstr)(cb, u);
-//zz break;
-//zz
-//zz case LOAD:
-//zz // LD[LWB] m, t
-//zz if (4 == u->size) helper = (Addr)check_load4;
-//zz else if (2 == u->size) helper = (Addr)check_load2;
-//zz else if (1 == u->size) helper = (Addr)check_load1;
-//zz else VG_(skin_panic)("bad LOAD size");
-//zz
-//zz // a) Check segments match (in helper)
-//zz // b) t.vseg = m.vseg (helper returns m.vseg)
-//zz // c) Do LOAD (must come after segment check!)
-//zz VG_(ccall_RR_R)(cb, helper,
-//zz u->val1, // m (reg)
-//zz SHADOW(u->val1), // m_ptr.vseg (reg)
-//zz SHADOW(u->val2), // t.vseg (retval)(reg)
-//zz 2);
-//zz VG_(copy_UInstr)(cb, u);
-//zz break;
-//zz
-//zz case STORE:
-//zz if (4 == u->size) {
-//zz // Put t.vseg in globvar-arg
-//zz VG_(reg_to_globvar)(cb, SHADOW(u->val1),
-//zz (UInt*) & check_store4___t_vseg);
-//zz helper = (Addr)check_store4;
-//zz }
-//zz else if (1 == u->size) helper = (Addr)check_store1;
-//zz else if (2 == u->size) helper = (Addr)check_store2;
-//zz else VG_(skin_panic)("bad size for STORE");
-//zz
-//zz // a) Check segments match
-//zz // b) Do STORE (after segment check; done by helper)
-//zz //
-//zz // STL t, m
-//zz // c) if aligned(m), m.vseg = t.vseg
-//zz // else vseg of both words touched set to UNKNOWN
-//zz //
-//zz // ST[WB] t, m
-//zz // c) if non-straddling(m), m.vseg = NONPTR/UNKNOWN
-//zz // else vseg of both words touched set to UNKNOWN
-//zz VG_(ccall_RRR_0)(cb, helper,
-//zz u->val2, // m (reg)
-//zz SHADOW(u->val2), // m_ptr.vseg (reg)
-//zz u->val1, // t (reg)
-//zz 3);
-//zz break;
-//zz
-//zz //--- Binary arithmetic ------------------------------------------
-//zz case ADD: helper = (Addr)do_add4; goto do_add_sub;
-//zz case ADC: helper = (Addr)do_adc4; goto do_add_sub;
-//zz case SUB: helper = (Addr)do_sub4; goto do_add_sub;
-//zz case SBB: helper = (Addr)do_sbb4; goto do_add_sub;
-//zz do_add_sub:
-//zz // a) Do OP (and record result in globvar)
-//zz //record_binary_arith_args(cb, u->val2, t1);
-//zz
-//zz VG_(copy_UInstr)(cb, u);
-//zz if (4 == u->size) {
-//zz UInt t1;
-//zz if (Literal == u->tag1) {
-//zz // OPL l, t2
-//zz Seg segL = nonptr_or_unknown(u->lit32);
-//zz t1 = newTemp(cb);
-//zz VG_(lit_to_reg)(cb, u->lit32, t1);
-//zz VG_(lit_to_reg)(cb, (UInt)segL, SHADOW(t1));
-//zz } else if (ArchReg == u->tag1) {
-//zz // OPL r, t2
-//zz t1 = newTemp(cb);
-//zz uInstr2(cb, GET, 4, ArchReg, u->val1, TempReg, t1);
-//zz uInstr2(cb, GETV, 4, ArchReg, u->val1, TempReg, SHADOW(t1));
-//zz } else {
-//zz // OPL t1, t2
-//zz sk_assert(TempReg == u->tag1);
-//zz t1 = u->val1;
-//zz }
-//zz
-//zz // Put result in globvar-arg
-//zz VG_(reg_to_globvar)(cb, u->val2, &do_op___result);
-//zz // b) Check args (if necessary; ok to do after the OP itself)
-//zz // c) Update t.vseg
-//zz VG_(ccall_RR_R)(cb, helper,
-//zz SHADOW(u->val2), // t2.vseg (reg)
-//zz SHADOW(t1), // t1.vseg (reg)
-//zz SHADOW(u->val2), // t2.vseg (reg)(retval)
-//zz 2);
-//zz } else {
-//zz // OP[WB] x, t2
-//zz // b) t2.vseg = UKNOWN
-//zz set_nonptr_or_unknown(cb, u->val2);
-//zz }
-//zz break;
-//zz
-//zz case AND:
-//zz // a) Do AND
-//zz VG_(copy_UInstr)(cb, u);
-//zz if (4 == u->size) {
-//zz // ANDL t1, t2
-//zz // Find difference between t1 and t2 (to determine if they're equal)
-//zz // put in globvar-arg
-//zz UInt t_equal = newTemp(cb);
-//zz uInstr2(cb, MOV, 4, TempReg, u->val2, TempReg, t_equal);
-//zz uInstr2(cb, SUB, 4, TempReg, u->val1, TempReg, t_equal);
-//zz VG_(reg_to_globvar)(cb, t_equal, &do_and4___args_diff);
-//zz // Put result in globvar-arg
-//zz VG_(reg_to_globvar)(cb, u->val2, &do_op___result);
-//zz // b) Update t2.vseg
-//zz VG_(ccall_RR_R)(cb, (Addr)do_and4,
-//zz SHADOW(u->val1), // t1.vseg (reg)
-//zz SHADOW(u->val2), // t2.vseg (reg)
-//zz SHADOW(u->val2), // t2.vseg (reg)(retval)
-//zz 2);
-//zz } else {
-//zz // AND[WB] t1, t2
-//zz // b) t2.vseg = NONPTR/UNKNOWN
-//zz set_nonptr_or_unknown(cb, u->val2);
-//zz }
-//zz break;
-//zz
-//zz case OR:
-//zz // a) Do OR
-//zz VG_(copy_UInstr)(cb, u);
-//zz if (4 == u->size) {
-//zz // ORL t1, t2
-//zz // Put result in globvar-arg
-//zz VG_(reg_to_globvar)(cb, u->val2, &do_op___result);
-//zz // b) Update t2.vseg
-//zz VG_(ccall_RR_R)(cb, (Addr)do_or4,
-//zz SHADOW(u->val1), // t1.vseg (reg)
-//zz SHADOW(u->val2), // t2.vseg (reg)
-//zz SHADOW(u->val2), // t2.vseg (reg)(retval)
-//zz 2);
-//zz } else {
-//zz // OR[WB] t1, t2
-//zz // b) t2.vseg = NONPTR/UNKNOWN
-//zz set_nonptr_or_unknown(cb, u->val2);
-//zz }
-//zz break;
-//zz
-//zz // With XOR, the result is likely to be a nonptr, but could
-//zz // occasionally not be due to weird things like xor'ing a pointer with
-//zz // zero, or using the xor trick for swapping two variables. So,
-//zz // simplest thing is to just look at the range.
-//zz case XOR:
-//zz // XOR[LWB] x, t2
-//zz // a) Do XOR
-//zz // b) t2.vseg = NONPTR/UNKNOWN
-//zz VG_(copy_UInstr)(cb, u);
-//zz set_nonptr_or_unknown(cb, u->val2);
-//zz break;
-//zz
-//zz // Nb: t1 is always 1-byte, and thus never a pointer.
-//zz case SHL: case SHR: case SAR:
-//zz case ROL: case ROR:
-//zz // SHROT x, t2
-//zz // a) Do SHROT
-//zz // b) t2.vseg = NONPTR/UNKNOWN
-//zz VG_(copy_UInstr)(cb, u);
-//zz set_nonptr_or_unknown(cb, u->val2);
-//zz break;
-//zz
-//zz // LEA2 t1,t2,t3: t3 = lit32 + t1 + (t2 * extra4b)
-//zz // Used for pointer computations, and for normal arithmetic (eg.
-//zz // "lea (%r1,%r1,4),%r2" multiplies by 5).
-//zz case LEA2:
-//zz sk_assert(4 == u->size);
-//zz // a) Do LEA2
-//zz VG_(copy_UInstr)(cb, u);
-//zz if (1 == u->extra4b) {
-//zz // t3 = lit32 + t1 + (t2*1) (t2 can be pointer)
-//zz helper = (Addr)do_lea2_1;
-//zz } else {
-//zz // t3 = lit32 + t1 + (t2*n) (t2 cannot be pointer)
-//zz helper = (Addr)do_lea2_n;
-//zz }
-//zz // Put k in globvar-arg
-//zz VG_(lit_to_globvar)(cb, u->lit32, &do_lea2___k);
-//zz // Put result in globvar-arg
-//zz VG_(reg_to_globvar)(cb, u->val3, &do_op___result);
-//zz // b) Check args
-//zz // c) Update t3.vseg
-//zz VG_(ccall_RR_R)(cb, helper,
-//zz SHADOW(u->val1), // t1.vseg (reg)
-//zz SHADOW(u->val2), // t2.vseg (reg)
-//zz SHADOW(u->val3), // t3.vseg (reg)(retval)
-//zz 2);
-//zz break;
-//zz
-//zz //--- Unary arithmetic -------------------------------------------
-//zz case NEG: helper = (Addr)do_neg4; goto do_neg_not;
-//zz case NOT: helper = (Addr)do_not4; goto do_neg_not;
-//zz do_neg_not:
-//zz // a) Do NEG/NOT
-//zz VG_(copy_UInstr)(cb, u);
-//zz if (4 == u->size) {
-//zz // NEGL/NOTL t1
-//zz // b) Check args (NEG only)
-//zz // c) Update t1.vseg
-//zz VG_(ccall_RR_R)(cb, helper,
-//zz SHADOW(u->val1), // t1.vseg (reg)
-//zz u->val2, // t2 (reg)
-//zz SHADOW(u->val1), // t1.vseg (reg)(retval)
-//zz 2);
-//zz } else {
-//zz // NEG[WB]/NOT[WB] t1
-//zz // b) Update t1.vseg
-//zz set_nonptr_or_unknown(cb, u->val2);
-//zz }
-//zz break;
-//zz
-//zz case INC:
-//zz case DEC:
-//zz // INC[LWB]/DEC[LWB] t1
-//zz // a) Do INC/DEC
-//zz // b) t1.vseg unchanged (do nothing)
-//zz VG_(copy_UInstr)(cb, u);
-//zz break;
-//zz
-//zz case LEA1:
-//zz sk_assert(4 == u->size);
-//zz // LEA1 k(t1), t2
-//zz // b) Do LEA1
-//zz VG_(copy_UInstr)(cb, u);
-//zz if ( ! looks_like_a_pointer(u->lit32) ) {
-//zz // a) simple, 99.9% case: k is a known nonptr, t2.vseg = t1.vseg
-//zz uInstr2(cb, MOV, 4, TempReg, SHADOW(u->val1),
-//zz TempReg, SHADOW(u->val2));
-//zz } else {
-//zz // Put result in globvar-arg (not strictly necessary, because we
-//zz // have a spare CCALL slot, but do it for consistency)
-//zz VG_(reg_to_globvar)(cb, u->val2, &do_op___result);
-//zz // a) complicated, 0.1% case: k could be a pointer
-//zz VG_(ccall_R_R)(cb, (Addr)do_lea1_unknown,
-//zz SHADOW(u->val1), // t1.vseg (reg)
-//zz SHADOW(u->val2), // t2.vseg (reg)(retval)
-//zz 1);
-//zz }
-//zz break;
-//zz
-//zz //--- End of arithmetic ------------------------------------------
-//zz
-//zz case WIDEN:
-//zz // WIDEN t1
-//zz // a) Do WIDEN
-//zz VG_(copy_UInstr)(cb, u);
-//zz break;
-//zz
-//zz case CC2VAL:
-//zz // CC2VAL t1
-//zz // a) t1.vseg = NONPTR
-//zz // b) Do CC2VAL
-//zz set_nonptr(cb, SHADOW(u->val1));
-//zz VG_(copy_UInstr)(cb, u);
-//zz break;
-//zz
-//zz case BSWAP:
-//zz // BSWAP t1
-//zz // a) t1.vseg = UNKNOWN
-//zz // b) Do BSWAP
-//zz set_nonptr_or_unknown(cb, u->val1);
-//zz VG_(copy_UInstr)(cb, u);
-//zz break;
-//zz
-//zz case JIFZ:
-//zz case JMP:
-//zz VG_(copy_UInstr)(cb, u);
-//zz break;
-//zz
-//zz //--- CALLM and related ------------------------------------------
-//zz // Basic form of CALLMs, as regexp:
-//zz // CALLM_S (GET? PUSH)* CALLM (POP PUT? | CLEAR)* CALLM_E
-//zz //
-//zz // How we're doing things:
-//zz // - PUSH: Args will be popped/cleared, so no need to set the shadows.
-//zz // Check input depending on the callee.
-//zz // - CALLM: Do nothing, already checked inputs on PUSH.
-//zz // - POP: Depending on the callee, set popped outputs as
-//zz // pointer/non-pointer. But all callees seem to produce
-//zz // NONPTR outputs, so just set output arg so straight off.
-//zz case CALLM_S:
-//zz sk_assert(-1 == callm_arg4c);
-//zz callm_arg4c = 0;
-//zz break;
-//zz
-//zz case CALLM_E:
-//zz sk_assert(-1 != callm_arg4c);
-//zz callm_arg4c = -1;
-//zz break;
-//zz
-//zz case PUSH:
-//zz sk_assert(-1 != callm_arg4c);
-//zz if (4 == u->size) {
-//zz // PUSHL t1
-//zz callm_shadow_arg4v[ callm_arg4c++ ] = SHADOW(u->val1);
-//zz }
-//zz // a) Do PUSH
-//zz VG_(copy_UInstr)(cb, u);
-//zz break;
-//zz
-//zz // All the ops using helpers certainly don't return pointers, except
-//zz // possibly, sh[rl]dl. I'm not sure about them, but make the result
-//zz // NONPTR anyway.
-//zz case POP:
-//zz // POP t1
-//zz // a) set t1.vseg == NONPTR
-//zz // b) Do POP
-//zz sk_assert(-1 != callm_arg4c);
-//zz set_nonptr(cb, SHADOW(u->val1));
-//zz VG_(copy_UInstr)(cb, u);
-//zz break;
-//zz
-//zz case CLEAR:
-//zz sk_assert(-1 != callm_arg4c);
-//zz VG_(copy_UInstr)(cb, u);
-//zz break;
-//zz
-//zz case CALLM:
-//zz if (!(0 <= callm_arg4c && callm_arg4c <= 4)) {
-//zz VG_(printf)("callm_arg4c = %d\n", callm_arg4c);
-//zz VG_(skin_panic)("bleh");
-//zz }
-//zz
-//zz #define V(name) (VGOFF_(helper_##name) == u->val1)
-//zz
-//zz if (V(mul_32_64)) {
-//zz sk_assert(2 == callm_arg4c);
-//zz VG_(ccall_RR_0)(cb, (Addr)check_mul4,
-//zz callm_shadow_arg4v[1], // arg2.vseg (reg)
-//zz callm_shadow_arg4v[0], // arg1.vseg (reg)
-//zz 2);
-//zz
-//zz } else if (V(imul_32_64)) {
-//zz sk_assert(2 == callm_arg4c);
-//zz VG_(ccall_RR_0)(cb, (Addr)check_imul4,
-//zz callm_shadow_arg4v[1], // arg2.vseg (reg)
-//zz callm_shadow_arg4v[0], // arg1.vseg (reg)
-//zz 2);
-//zz
-//zz } else if (V(div_64_32)) {
-//zz sk_assert(3 == callm_arg4c);
-//zz VG_(ccall_RR_0)(cb, (Addr)check_div4,
-//zz callm_shadow_arg4v[1], // arg2.vseg (reg)
-//zz callm_shadow_arg4v[0], // arg1.vseg (reg)
-//zz 2);
-//zz
-//zz } else if (V(idiv_64_32)) {
-//zz sk_assert(3 == callm_arg4c);
-//zz VG_(ccall_RR_0)(cb, (Addr)check_idiv4,
-//zz callm_shadow_arg4v[1], // arg2.vseg (reg)
-//zz callm_shadow_arg4v[0], // arg1.vseg (reg)
-//zz 2);
-//zz
-//zz } else if (V(shldl) || V(shrdl)) {
-//zz sk_assert(2 == callm_arg4c);
-//zz // a) Do shrdl/shldl
-//zz
-//zz } else if (V(bsf) || V(bsr)) {
-//zz // Shouldn't take a pointer? Don't bother checking.
-//zz sk_assert(2 == callm_arg4c);
-//zz
-//zz } else if (V(get_dirflag)) {
-//zz // This always has zero pushed as the arg.
-//zz sk_assert(1 == callm_arg4c);
-//zz
-//zz } else if (V(RDTSC)) { sk_assert(2 == callm_arg4c);
-//zz } else if (V(CPUID)) { sk_assert(4 == callm_arg4c);
-//zz } else if (V(SAHF)) { sk_assert(1 == callm_arg4c);
-//zz } else if (V(LAHF)) { sk_assert(1 == callm_arg4c);
-//zz } else if (V(fstsw_AX)) { sk_assert(1 == callm_arg4c);
-//zz
-//zz } else {
-//zz // Others don't take any word-sized args
-//zz //sk_assert(0 == callm_arg4c);
-//zz if (0 != callm_arg4c) {
-//zz VG_(printf)("callm_arg4c = %d, %d, %d\n",
-//zz callm_arg4c, VGOFF_(helper_RDTSC), u->val1);
-//zz sk_assert(1 == 0);
-//zz }
-//zz }
-//zz
-//zz #undef V
-//zz
-//zz VG_(copy_UInstr)(cb, u);
-//zz break;
-//zz //--- End of CALLM and related -----------------------------------
-//zz
-//zz case FPU:
-//zz case MMX1: case MMX2: case MMX3:
-//zz case SSE3: case SSE4: case SSE5:
-//zz // a) Do FPU/MMX[123]/SSE[345]
-//zz VG_(copy_UInstr)(cb, u);
-//zz break;
-//zz
-//zz // We check the load, but don't do any updating, because the read is
-//zz // into FPU/MMX/SSE regs which we don't shadow.
-//zz case FPU_R:
-//zz case MMX2_MemRd:
-//zz switch (u->size) {
-//zz case 2: helper = (Addr)check_fpu_r2; break;
-//zz case 4: helper = (Addr)check_fpu_r4; break;
-//zz case 8: helper = (Addr)check_fpu_r8; break;
-//zz case 10: helper = (Addr)check_fpu_r10; break;
-//zz case 16: helper = (Addr)check_fpu_r16; break;
-//zz case 28: helper = (Addr)check_fpu_r28; break;
-//zz case 108: helper = (Addr)check_fpu_r108; break;
-//zz default: VG_(skin_panic)("bad FPU_R/MMX/whatever size");
-//zz }
-//zz // FPU_R, MMX2_MemRd
-//zz // a) Check segments match (in helper)
-//zz // b) Do FPU_R/MMX2_MemRd
-//zz VG_(ccall_RR_0)(cb, helper,
-//zz u->val2, // m (reg)
-//zz SHADOW(u->val2), // m_ptr.vseg (reg)
-//zz 2);
-//zz VG_(copy_UInstr)(cb, u);
-//zz break;
-//zz
-//zz case FPU_W: {
-//zz case MMX2_MemWr:
-//zz switch (u->size) {
-//zz case 2: helper = (Addr)check_fpu_w2; break;
-//zz case 4: helper = (Addr)check_fpu_w4; break;
-//zz case 8: helper = (Addr)check_fpu_w8; break;
-//zz case 10: helper = (Addr)check_fpu_w10; break;
-//zz case 16: helper = (Addr)check_fpu_w16; break;
-//zz case 28: helper = (Addr)check_fpu_w28; break;
-//zz case 108: helper = (Addr)check_fpu_w108; break;
-//zz default: VG_(skin_panic)("bad FPU_W/MMX/whatever size");
-//zz }
-//zz // FPU_W, MMX2_MemWr
-//zz // a) Check segments match (in helper)
-//zz // b) m.vseg = NONPTR, for each touched memory word
-//zz // c) Do FPU_W/MMX2_MemWr
-//zz VG_(ccall_RR_0)(cb, helper,
-//zz u->val2, // m (reg)
-//zz SHADOW(u->val2), // m_ptr.vseg (reg)
-//zz 2);
-//zz VG_(copy_UInstr)(cb, u);
-//zz break;
-//zz }
-//zz
-//zz default:
-//zz VG_(pp_UInstr)(0, u);
-//zz VG_(skin_panic)("Redux: unhandled instruction");
-//zz }
-//zz //-- End main switch ---------------------------------------------
-//zz }
-//zz
-//zz VG_(free_UCodeBlock)(cb_in);
-//zz
-//zz // Optimisations
-//zz // {
-//zz // Int* live_range_ends = VG_(find_live_range_ends)(cb);
-//zz // VG_(redundant_move_elimination)(cb, live_range_ends);
-//zz // VG_(free_live_range_ends)(live_range_ends);
-//zz // }
-//zz
-//zz return cb;
}
@@ -5353,34 +4622,6 @@
static void pc_pre_clo_init ( void )
{
-//zz Int i;
-//zz // 0-terminated arrays
-//zz Addr compact_helpers[] = {
-//zz (Addr) do_lea1_unknown, (Addr) do_sub4,
-//zz (Addr) check_load4, (Addr) check_store4,
-//zz (Addr) do_add4, (Addr) do_and4,
-//zz (Addr) do_or4, (Addr) nonptr_or_unknown,
-//zz 0
-//zz };
-//zz Addr noncompact_helpers[] = {
-//zz (Addr) do_lea2_1, (Addr) do_lea2_n,
-//zz (Addr) do_adc4, (Addr) do_sbb4,
-//zz (Addr) do_neg4, (Addr) do_not4,
-//zz (Addr) print_BB_entry,
-//zz (Addr) check_load1, (Addr) check_store1,
-//zz (Addr) check_load2, (Addr) check_store2,
-//zz (Addr) check_imul4, (Addr) check_mul4,
-//zz (Addr) check_idiv4, (Addr) check_div4,
-//zz (Addr) check_fpu_r2, (Addr) check_fpu_w2,
-//zz (Addr) check_fpu_r4, (Addr) check_fpu_w4,
-//zz (Addr) check_fpu_r8, (Addr) check_fpu_w8,
-//zz (Addr) check_fpu_r10, (Addr) check_fpu_w10,
-//zz (Addr) check_fpu_r16, (Addr) check_fpu_w16,
-//zz (Addr) check_fpu_r28, (Addr) check_fpu_w28,
-//zz (Addr) check_fpu_r108, (Addr) check_fpu_w108,
-//zz 0
-//zz };
-
VG_(details_name) ("exp-ptrcheck");
VG_(details_version) (NULL);
VG_(details_description) ("a pointer-use checker");
@@ -5457,33 +4698,6 @@
//zz VG_(track_post_reg_write_clientreq_return) ( post_reg_write_nonptr );
VG_(track_post_reg_write_clientcall_return) ( post_reg_write_clientcall );
VG_(track_post_reg_write)( post_reg_write_demux );
-//zz
-//zz // Helpers
-//zz for (i = 0; compact_helpers[i] != 0; i++)
-//zz VG_(register_compact_helper)( compact_helpers[i] );
-//zz
-//zz for (i = 0; noncompact_helpers[i] != 0; i++)
-//zz VG_(register_noncompact_helper)( noncompact_helpers[i] );
-//zz
-//zz // Profiling events
-//zz #define P(a,b) VGP_(register_profile_event)(a,b);
-//zz P(VgpGetMemAseg, "get-mem-aseg");
-//zz P(VgpCheckLoadStore, "check-load-store");
-//zz P(VgpCheckLoad4, "check-load4");
-//zz P(VgpCheckLoad21, "check-load21");
-//zz P(VgpCheckStore4, "check-store4");
-//zz P(VgpCheckStore21, "check-store21");
-//zz P(VgpCheckFpuR, "check-fpu-r");
-//zz P(VgpCheckFpuW, "check-fpu-w");
-//zz P(VgpDoAdd, "do-add");
-//zz P(VgpDoSub, "do-sub");
-//zz P(VgpDoAdcSbb, "do-adc-sbb");
-//zz P(VgpDoXor, "do-xor");
-//zz P(VgpDoAnd, "do-and");
-//zz P(VgpDoOr, "do-or");
-//zz P(VgpDoLea1, "do-lea1");
-//zz P(VgpDoLea2, "do-lea2");
-//zz #undef P
// Other initialisation
init_shadow_memory();
|
|
From: <sv...@va...> - 2008-08-02 06:40:59
|
Author: sewardj
Date: 2008-08-02 07:41:04 +0100 (Sat, 02 Aug 2008)
New Revision: 8492
Log:
Tidy up the settings/use of MAX_FORWARD, now that the root cause of
crashes caused by overruns of arrays of forwarding pointers has been
fixed by r8478.
Modified:
branches/PTRCHECK/exp-ptrcheck/pc_list.c
Modified: branches/PTRCHECK/exp-ptrcheck/pc_list.c
===================================================================
--- branches/PTRCHECK/exp-ptrcheck/pc_list.c 2008-08-01 16:57:17 UTC (rev 8491)
+++ branches/PTRCHECK/exp-ptrcheck/pc_list.c 2008-08-02 06:41:04 UTC (rev 8492)
@@ -121,7 +121,7 @@
// Miscellaneous
//-------------------------------------------------------------------
-#define MAX_FORWARD (8*sizeof(Addr)) // Maximum number of forward pointers
+#define MAX_FORWARD 32
static void print_Addr(Addr a)
{
@@ -866,6 +866,11 @@
// put a new node in the list for this 'a'
Int newLevel = ISList__randomLevel(o);
+ // most likely reason for this to fail is that normalizedRandom isn't
+ // working properly. It is supposed to generate numbers uniformly
+ // in the range [0.0 .. 1.0), hence with a mean of 0.5.
+ tl_assert(newLevel < MAX_FORWARD-1);
+
if (newLevel > o->maxLevel){
// New node is bigger than any previous, add the header node to the
// update vector for the new levels.
|
|
From: Tom H. <th...@cy...> - 2008-08-02 03:04:40
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-08-02 03:15:03 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 345 tests, 60 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/origin1-yes (stderr) memcheck/tests/origin4-many (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (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/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-08-02 02:56:33
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-08-02 03:20: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 == 443 tests, 8 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == 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 == 443 tests, 9 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) drd/tests/pth_inconsistent_cond_wait (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sat Aug 2 03:38:31 2008 --- new.short Sat Aug 2 03:56:41 2008 *************** *** 8,10 **** ! == 443 tests, 9 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/file_locking (stderr) --- 8,10 ---- ! == 443 tests, 8 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/file_locking (stderr) *************** *** 18,20 **** helgrind/tests/tc22_exit_w_lock (stderr) - drd/tests/pth_inconsistent_cond_wait (stderr) --- 18,19 ---- |
|
From: Tom H. <th...@cy...> - 2008-08-02 02:43:06
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-08-02 03:05:06 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 437 tests, 6 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-08-02 02:41:54
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-08-02 03:25: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 == 441 tests, 8 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-08-02 02:23:26
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-08-02 03:00:02 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 443 tests, 31 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/amd64/insn_ssse3 (stdout) none/tests/amd64/insn_ssse3 (stderr) none/tests/amd64/ssse3_misaligned (stderr) none/tests/blockfault (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap2 (stdout) none/tests/x86/insn_ssse3 (stdout) none/tests/x86/insn_ssse3 (stderr) none/tests/x86/ssse3_misaligned (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) |
|
From: Julian S. <js...@ac...> - 2008-08-01 20:24:05
|
Seems harmless enough, + I'm not really sure what the effects will be, so commit on, and let's see what happens. One thing though: > - If pkg-config was installed at the time autogen.sh was run, > ./configure will detect the presence of the Qt4 QtCore library. > pkg-config settings can be overridden via the configure variables > QTCORE_CFLAGS and QTCORE_LIBS (added by the pkg-config m4 macro's). Could you include this, or something like it, as comments, for the benefit of future visitors to configure.in :-) J |
|
From: Bart V. A. <bar...@gm...> - 2008-08-01 17:04:27
|
On Tue, Jul 29, 2008 at 10:14 AM, Julian Seward <js...@ac...> wrote:
>> [ ... pkg-config ... ]
> I prefer not; we spent already a lot of time and effort getting rid of
> dependencies of various kinds.
The patch below changes the Qt4 test as follows:
- AC_CHECK_HEADERS() / AC_CHECK_LIBS() tests are removed.
- If pkg-config was not installed at the time autogen.sh was run,
./configure prints a warning and proceeds as if Qt4 has not been
installed.
- If pkg-config was installed at the time autogen.sh was run,
./configure will detect the presence of the Qt4 QtCore library.
pkg-config settings can be overridden via the configure variables
QTCORE_CFLAGS and QTCORE_LIBS (added by the pkg-config m4 macro's).
Please let me know if there are any objections against this patch.
Bart.
diff -u configure.in ../valgrind-drddev/configure.in
--- configure.in 2008-07-29 19:51:53.000000000 +0200
+++ ../valgrind-drddev/configure.in 2008-08-01 18:57:39.000000000 +0200
@@ -1251,15 +1251,6 @@
sys/types.h \
])
-# Checks for C++ header files.
-AC_LANG(C++)
-AC_CHECK_HEADERS([ \
- QtCore/QMutex \
- QtCore/QSemaphore \
- QtCore/QThread \
- ])
-AC_LANG(C)
-
# Checks for typedefs, structures, and compiler characteristics.
AC_TYPE_UID_T
AC_TYPE_OFF_T
@@ -1273,7 +1264,6 @@
AC_TYPE_SIGNAL
AC_CHECK_LIB([rt], [clock_gettime])
-AC_CHECK_LIB([QtCore], [_ZN6QMutex4lockEv]) # QMutex::lock()
AC_CHECK_FUNCS([ \
clock_gettime\
@@ -1401,26 +1391,25 @@
AM_CONDITIONAL(BUILD_MPIWRAP_SEC, test x$ac_have_mpi2_sec = xyes)
-# does this compiler have the include file <Qt/qmutex.h> and does it have
-# libQtCore.so ?
-
-AC_MSG_CHECKING([for Qt4 core library])
+# Has the QtCore package been installed ?
-AC_TRY_COMPILE([ ],
-[
-#if ! defined(HAVE_LIBQTCORE) || ! defined(HAVE_QTCORE_QMUTEX)
-#error Qt4 not supported.
-#endif
- return 0;
-],
-[
- ac_have_qtcore=yes
- AC_MSG_RESULT([yes])
-],
-[
- ac_have_qtcore=no
- AC_MSG_RESULT([no])
-])
+ifdef(
+ [PKG_CHECK_EXISTS],
+ [PKG_CHECK_EXISTS(
+ [QtCore],
+ [
+ PKG_CHECK_MODULES([QTCORE], [QtCore])
+ ac_have_qtcore=yes
+ ],
+ [
+ ac_have_qtcore=no
+ ]
+ )
+ ],
+ AC_MSG_WARN([pkg-config has not been installed or is too old.])
+ AC_MSG_WARN([Detection of Qt4 will be skipped.])
+ [ac_have_qtcore=no]
+)
AM_CONDITIONAL([HAVE_QTCORE], [test x$ac_have_qtcore = xyes])
|
|
From: <sv...@va...> - 2008-08-01 16:57:12
|
Author: bart Date: 2008-08-01 17:57:17 +0100 (Fri, 01 Aug 2008) New Revision: 8491 Log: Qt4 test is now skipped if pkg-config was not present at the time autogen.sh was run. Modified: branches/DRDDEV/configure.in Modified: branches/DRDDEV/configure.in =================================================================== --- branches/DRDDEV/configure.in 2008-08-01 06:53:39 UTC (rev 8490) +++ branches/DRDDEV/configure.in 2008-08-01 16:57:17 UTC (rev 8491) @@ -50,13 +50,6 @@ # place. AC_SUBST([DISTCHECK_CONFIGURE_FLAGS], [--with-vex=$VEX_DIR]) -# pkg-config initialization. -ifdef( -[PKG_PROG_PKG_CONFIG], -[PKG_PROG_PKG_CONFIG()], -[echo "Error: pkg-config must be installed before autogen.sh is run."; exit 1] -) - # Checks for programs. CFLAGS="-Wno-long-long" @@ -1400,14 +1393,22 @@ # Has the QtCore package been installed ? -PKG_CHECK_EXISTS([QtCore], -[ - PKG_CHECK_MODULES([QTCORE], [QtCore]) - ac_have_qtcore=yes -], -[ - ac_have_qtcore=no -] +ifdef( + [PKG_CHECK_EXISTS], + [PKG_CHECK_EXISTS( + [QtCore], + [ + PKG_CHECK_MODULES([QTCORE], [QtCore]) + ac_have_qtcore=yes + ], + [ + ac_have_qtcore=no + ] + ) + ], + AC_MSG_WARN([pkg-config has not been installed or is too old.]) + AC_MSG_WARN([Detection of Qt4 will be skipped.]) + [ac_have_qtcore=no] ) AM_CONDITIONAL([HAVE_QTCORE], [test x$ac_have_qtcore = xyes]) |
|
From: <sv...@va...> - 2008-08-01 06:53:32
|
Author: bart
Date: 2008-08-01 07:53:39 +0100 (Fri, 01 Aug 2008)
New Revision: 8490
Log:
Added more statistics.
Modified:
branches/DRDDEV/drd/drd_bitmap.c
branches/DRDDEV/drd/drd_main.c
branches/DRDDEV/drd/drd_segment.c
branches/DRDDEV/drd/drd_segment.h
branches/DRDDEV/drd/drd_thread.c
branches/DRDDEV/drd/drd_thread.h
branches/DRDDEV/drd/pub_drd_bitmap.h
Modified: branches/DRDDEV/drd/drd_bitmap.c
===================================================================
--- branches/DRDDEV/drd/drd_bitmap.c 2008-07-31 09:39:44 UTC (rev 8489)
+++ branches/DRDDEV/drd/drd_bitmap.c 2008-08-01 06:53:39 UTC (rev 8490)
@@ -44,6 +44,8 @@
/* Local constants. */
static ULong s_bitmap_creation_count;
+static ULong s_bitmap_merge_count;
+static ULong s_bitmap2_merge_count;
/* Function definitions. */
@@ -782,6 +784,8 @@
/* so complain if lhs == rhs. */
tl_assert(lhs != rhs);
+ s_bitmap_merge_count++;
+
VG_(OSetGen_ResetIter)(rhs->oset);
for ( ; (bm2r = VG_(OSetGen_Next)(rhs->oset)) != 0; )
@@ -923,11 +927,13 @@
return s_bitmap_creation_count;
}
-ULong bm_get_bitmap2_creation_count(void)
+ULong bm_get_bitmap_merge_count(void)
{
- return s_bitmap2_creation_count;
+ return s_bitmap_merge_count;
}
+
+
/** Clear the bitmap contents. */
void bm2_clear(struct bitmap2* const bm2)
{
@@ -944,6 +950,8 @@
tl_assert(bm2r);
tl_assert(bm2l->addr == bm2r->addr);
+ s_bitmap2_merge_count++;
+
for (k = 0; k < BITMAP1_UWORD_COUNT; k++)
{
bm2l->bm1.bm0_r[k] |= bm2r->bm1.bm0_r[k];
@@ -972,3 +980,13 @@
bm2l->bm1.bm0_w[k] ^= bm2r->bm1.bm0_w[k];
}
}
+
+ULong bm_get_bitmap2_creation_count(void)
+{
+ return s_bitmap2_creation_count;
+}
+
+ULong bm_get_bitmap2_merge_count(void)
+{
+ return s_bitmap2_merge_count;
+}
Modified: branches/DRDDEV/drd/drd_main.c
===================================================================
--- branches/DRDDEV/drd/drd_main.c 2008-07-31 09:39:44 UTC (rev 8489)
+++ branches/DRDDEV/drd/drd_main.c 2008-08-01 06:53:39 UTC (rev 8490)
@@ -1191,29 +1191,41 @@
thread_get_context_switch_count(),
update_conflict_set_count);
VG_(message)(Vg_UserMsg,
- " (%lld new sg + %lld combine vc + %lld csw).",
+ " (%lld new sg + %lld combine vc + %lld csw);",
dsnsc,
dscvc,
update_conflict_set_count - dsnsc - dscvc);
VG_(message)(Vg_UserMsg,
+ " %lld level 2 conflict sets have been computed.",
+ thread_get_compute_conflict_set_bitmap2_count());
+ VG_(message)(Vg_UserMsg,
" segments: created %lld segments, max %lld alive,"
- " %lld discard points.",
+ " %lld discard points,",
sg_get_created_segments_count(),
sg_get_max_alive_segments_count(),
thread_get_discard_ordered_segments_count());
VG_(message)(Vg_UserMsg,
+ " %lld merges.",
+ sg_get_segment_merge_count());
+ VG_(message)(Vg_UserMsg,
" (%lld m, %lld rw, %lld s, %lld b)",
get_mutex_segment_creation_count(),
get_rwlock_segment_creation_count(),
get_semaphore_segment_creation_count(),
get_barrier_segment_creation_count());
VG_(message)(Vg_UserMsg,
- " bitmaps: %lld level 1",
+ " bitmaps: %lld level 1 bitmaps were allocated;",
bm_get_bitmap_creation_count());
VG_(message)(Vg_UserMsg,
- " and %lld level 2 bitmaps were allocated.",
+ " %lld level 1 bitmap merges were carried out.",
+ bm_get_bitmap_merge_count());
+ VG_(message)(Vg_UserMsg,
+ " %lld level 2 bitmaps were allocated;",
bm_get_bitmap2_creation_count());
VG_(message)(Vg_UserMsg,
+ " %lld level 2 bitmap merges were carried out.",
+ bm_get_bitmap2_merge_count());
+ VG_(message)(Vg_UserMsg,
" mutex: %lld non-recursive lock/unlock events.",
get_mutex_lock_count());
drd_print_malloc_stats();
Modified: branches/DRDDEV/drd/drd_segment.c
===================================================================
--- branches/DRDDEV/drd/drd_segment.c 2008-07-31 09:39:44 UTC (rev 8489)
+++ branches/DRDDEV/drd/drd_segment.c 2008-08-01 06:53:39 UTC (rev 8490)
@@ -41,6 +41,7 @@
static ULong s_created_segments_count;
static ULong s_alive_segments_count;
static ULong s_max_alive_segments_count;
+static ULong s_segment_merge_count;
static Bool drd_trace_segment = False;
@@ -210,6 +211,8 @@
VG_(message)(Vg_UserMsg, "%s", msg);
}
+ s_segment_merge_count++;
+
// Keep sg1->stacktrace.
// Keep sg1->vc.
// Merge sg2->bm into sg1->bm.
@@ -250,3 +253,8 @@
{
return s_max_alive_segments_count;
}
+
+ULong sg_get_segment_merge_count(void)
+{
+ return s_segment_merge_count;
+}
Modified: branches/DRDDEV/drd/drd_segment.h
===================================================================
--- branches/DRDDEV/drd/drd_segment.h 2008-07-31 09:39:44 UTC (rev 8489)
+++ branches/DRDDEV/drd/drd_segment.h 2008-08-01 06:53:39 UTC (rev 8490)
@@ -60,6 +60,7 @@
ULong sg_get_created_segments_count(void);
ULong sg_get_alive_segments_count(void);
ULong sg_get_max_alive_segments_count(void);
+ULong sg_get_segment_merge_count(void);
#endif // __SEGMENT_H
Modified: branches/DRDDEV/drd/drd_thread.c
===================================================================
--- branches/DRDDEV/drd/drd_thread.c 2008-07-31 09:39:44 UTC (rev 8489)
+++ branches/DRDDEV/drd/drd_thread.c 2008-08-01 06:53:39 UTC (rev 8490)
@@ -58,6 +58,7 @@
static ULong s_conflict_set_combine_vc_count;
static ULong s_conflict_set_bitmap_creation_count;
static ULong s_conflict_set_bitmap2_creation_count;
+static ULong s_compute_conflict_set_bitmap2_count;
static ThreadId s_vg_running_tid = VG_INVALID_THREADID;
DrdThreadId s_drd_running_tid = DRD_INVALID_THREADID;
ThreadInfo s_threadinfo[DRD_N_THREADS];
@@ -843,6 +844,8 @@
thread_get_running_tid(), tid, a1);
}
+ s_compute_conflict_set_bitmap2_count++;
+
#if LAZY_CONFLICT_SET_EVALUATION == 1
s_conflict_set_bitmap2_creation_count -= bm_get_bitmap2_creation_count();
@@ -1063,3 +1066,8 @@
{
return s_conflict_set_bitmap2_creation_count;
}
+
+ULong thread_get_compute_conflict_set_bitmap2_count(void)
+{
+ return s_compute_conflict_set_bitmap2_count;
+}
Modified: branches/DRDDEV/drd/drd_thread.h
===================================================================
--- branches/DRDDEV/drd/drd_thread.h 2008-07-31 09:39:44 UTC (rev 8489)
+++ branches/DRDDEV/drd/drd_thread.h 2008-08-01 06:53:39 UTC (rev 8490)
@@ -141,6 +141,7 @@
ULong thread_get_update_conflict_set_count(ULong* dsnsc, ULong* dscvc);
ULong thread_get_conflict_set_bitmap_creation_count(void);
ULong thread_get_conflict_set_bitmap2_creation_count(void);
+ULong thread_get_compute_conflict_set_bitmap2_count(void);
static __inline__
Modified: branches/DRDDEV/drd/pub_drd_bitmap.h
===================================================================
--- branches/DRDDEV/drd/pub_drd_bitmap.h 2008-07-31 09:39:44 UTC (rev 8489)
+++ branches/DRDDEV/drd/pub_drd_bitmap.h 2008-08-01 06:53:39 UTC (rev 8490)
@@ -120,6 +120,7 @@
struct bitmap* const bm2);
void bm_print(struct bitmap* bm);
ULong bm_get_bitmap_creation_count(void);
+ULong bm_get_bitmap_merge_count(void);
/* Second-level bitmaps. */
void bm2_clear(struct bitmap2* const bm2);
@@ -127,6 +128,7 @@
void bm2_xor(struct bitmap2* const bm2l, const struct bitmap2* const bm2r);
void bm2_print(const struct bitmap2* const bm2);
ULong bm_get_bitmap2_creation_count(void);
+ULong bm_get_bitmap2_merge_count(void);
#endif /* __PUB_DRD_BITMAP_H */
|
|
From: Tom H. <th...@cy...> - 2008-08-01 03:04:37
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-08-01 03:15:02 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 345 tests, 60 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/origin1-yes (stderr) memcheck/tests/origin4-many (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (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/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-08-01 02:55:38
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-08-01 03:20:06 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 == 443 tests, 8 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == 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 == 443 tests, 7 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri Aug 1 03:37:53 2008 --- new.short Fri Aug 1 03:55:45 2008 *************** *** 8,10 **** ! == 443 tests, 7 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/file_locking (stderr) --- 8,10 ---- ! == 443 tests, 8 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/file_locking (stderr) *************** *** 16,17 **** --- 16,18 ---- helgrind/tests/tc20_verifywrap (stderr) + helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-08-01 02:42:15
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-08-01 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 == 437 tests, 6 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-08-01 02:41:45
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-08-01 03:25:04 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 441 tests, 9 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) drd/tests/pth_inconsistent_cond_wait (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 == 441 tests, 9 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap2 (stdout) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri Aug 1 03:33:28 2008 --- new.short Fri Aug 1 03:41:45 2008 *************** *** 19,21 **** none/tests/mremap2 (stdout) - helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) --- 19,20 ---- *************** *** 23,24 **** --- 22,24 ---- helgrind/tests/tc22_exit_w_lock (stderr) + drd/tests/pth_inconsistent_cond_wait (stderr) |
|
From: Tom H. <th...@cy...> - 2008-08-01 02:23:25
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-08-01 03:00:02 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 443 tests, 31 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/amd64/insn_ssse3 (stdout) none/tests/amd64/insn_ssse3 (stderr) none/tests/amd64/ssse3_misaligned (stderr) none/tests/blockfault (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap2 (stdout) none/tests/x86/insn_ssse3 (stdout) none/tests/x86/insn_ssse3 (stderr) none/tests/x86/ssse3_misaligned (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) |