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
(1) |
2
(4) |
3
(3) |
4
(6) |
5
(14) |
6
(10) |
7
(4) |
|
8
(2) |
9
(4) |
10
(7) |
11
(8) |
12
(5) |
13
(11) |
14
(4) |
|
15
(4) |
16
(9) |
17
(6) |
18
|
19
|
20
|
21
|
|
22
(3) |
23
(1) |
24
(7) |
25
(12) |
26
(8) |
27
(13) |
28
(4) |
|
29
(3) |
30
(4) |
|
|
|
|
|
|
From: Tom H. <th...@cy...> - 2009-11-24 03:36:05
|
Nightly build on mg ( x86_64, Fedora 9 ) Started at 2009-11-24 03:10:05 GMT Ended at 2009-11-24 03:35:41 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 538 tests, 1 stderr failure, 0 stdout failures, 0 post failures == helgrind/tests/tc06_two_races_xml (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 == 538 tests, 2 stderr failures, 0 stdout failures, 0 post failures == helgrind/tests/pth_spinlock (stderr) helgrind/tests/tc06_two_races_xml (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Tue Nov 24 03:22:59 2009 --- new.short Tue Nov 24 03:35:41 2009 *************** *** 8,11 **** ! == 538 tests, 2 stderr failures, 0 stdout failures, 0 post failures == ! helgrind/tests/pth_spinlock (stderr) helgrind/tests/tc06_two_races_xml (stderr) --- 8,10 ---- ! == 538 tests, 1 stderr failure, 0 stdout failures, 0 post failures == helgrind/tests/tc06_two_races_xml (stderr) |
|
From: <sv...@va...> - 2009-11-23 08:19:42
|
Author: tom
Date: 2009-11-23 08:19:20 +0000 (Mon, 23 Nov 2009)
New Revision: 10945
Log:
Handle the dup3 system call. Closes #215448.
Modified:
trunk/coregrind/m_syswrap/priv_syswrap-linux.h
trunk/coregrind/m_syswrap/syswrap-amd64-linux.c
trunk/coregrind/m_syswrap/syswrap-linux.c
trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c
trunk/coregrind/m_syswrap/syswrap-x86-linux.c
Modified: trunk/coregrind/m_syswrap/priv_syswrap-linux.h
===================================================================
--- trunk/coregrind/m_syswrap/priv_syswrap-linux.h 2009-11-16 09:07:07 UTC (rev 10944)
+++ trunk/coregrind/m_syswrap/priv_syswrap-linux.h 2009-11-23 08:19:20 UTC (rev 10945)
@@ -50,6 +50,7 @@
DECL_TEMPLATE(linux, sys_perf_counter_open);
DECL_TEMPLATE(linux, sys_preadv);
DECL_TEMPLATE(linux, sys_pwritev);
+DECL_TEMPLATE(linux, sys_dup3);
// POSIX, but various sub-cases differ between Linux and Darwin.
DECL_TEMPLATE(linux, sys_fcntl);
Modified: trunk/coregrind/m_syswrap/syswrap-amd64-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-amd64-linux.c 2009-11-16 09:07:07 UTC (rev 10944)
+++ trunk/coregrind/m_syswrap/syswrap-amd64-linux.c 2009-11-23 08:19:20 UTC (rev 10945)
@@ -1373,7 +1373,7 @@
LINX_(__NR_eventfd2, sys_eventfd2), // 290
LINXY(__NR_epoll_create1, sys_epoll_create1), // 291
- // (__NR_dup3, sys_ni_syscall) // 292
+ LINXY(__NR_dup3, sys_dup3), // 292
LINXY(__NR_pipe2, sys_pipe2), // 293
LINXY(__NR_inotify_init1, sys_inotify_init1), // 294
Modified: trunk/coregrind/m_syswrap/syswrap-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-linux.c 2009-11-16 09:07:07 UTC (rev 10944)
+++ trunk/coregrind/m_syswrap/syswrap-linux.c 2009-11-23 08:19:20 UTC (rev 10945)
@@ -2411,6 +2411,21 @@
}
}
+PRE(sys_dup3)
+{
+ PRINT("sys_dup3 ( %ld, %ld, %ld )", ARG1,ARG2,ARG3);
+ PRE_REG_READ3(long, "dup3", unsigned int, oldfd, unsigned int, newfd, int, flags);
+ if (!ML_(fd_allowed)(ARG2, "dup3", tid, True))
+ SET_STATUS_Failure( VKI_EBADF );
+}
+
+POST(sys_dup3)
+{
+ vg_assert(SUCCESS);
+ if (VG_(clo_track_fds))
+ ML_(record_fd_open_named)(tid, RES);
+}
+
PRE(sys_quotactl)
{
PRINT("sys_quotactl (0x%lx, %#lx, 0x%lx, 0x%lx )", ARG1,ARG2,ARG3, ARG4);
Modified: trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2009-11-16 09:07:07 UTC (rev 10944)
+++ trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2009-11-23 08:19:20 UTC (rev 10945)
@@ -1865,7 +1865,7 @@
LINXY(__NR_signalfd4, sys_signalfd4), // 313
LINX_(__NR_eventfd2, sys_eventfd2), // 314
LINXY(__NR_epoll_create1, sys_epoll_create1), // 315
- // (__NR_dup3, sys_ni_syscall) // 316
+ LINXY(__NR_dup3, sys_dup3), // 316
LINXY(__NR_pipe2, sys_pipe2), // 317
LINXY(__NR_inotify_init1, sys_inotify_init1), // 318
LINXY(__NR_perf_counter_open, sys_perf_counter_open),// 319
Modified: trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c 2009-11-16 09:07:07 UTC (rev 10944)
+++ trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c 2009-11-23 08:19:20 UTC (rev 10945)
@@ -1505,7 +1505,7 @@
LINXY(__NR_signalfd4, sys_signalfd4), // 313
LINX_(__NR_eventfd2, sys_eventfd2), // 314
LINXY(__NR_epoll_create1, sys_epoll_create1), // 315
- // (__NR_dup3, sys_ni_syscall) // 316
+ LINXY(__NR_dup3, sys_dup3), // 316
LINXY(__NR_pipe2, sys_pipe2), // 317
LINXY(__NR_inotify_init1, sys_inotify_init1), // 318
LINXY(__NR_perf_counter_open, sys_perf_counter_open),// 319
Modified: trunk/coregrind/m_syswrap/syswrap-x86-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-x86-linux.c 2009-11-16 09:07:07 UTC (rev 10944)
+++ trunk/coregrind/m_syswrap/syswrap-x86-linux.c 2009-11-23 08:19:20 UTC (rev 10945)
@@ -2252,7 +2252,7 @@
LINX_(__NR_eventfd2, sys_eventfd2), // 328
LINXY(__NR_epoll_create1, sys_epoll_create1), // 329
- // (__NR_dup3, sys_ni_syscall) // 330
+ LINXY(__NR_dup3, sys_dup3), // 330
LINXY(__NR_pipe2, sys_pipe2), // 331
LINXY(__NR_inotify_init1, sys_inotify_init1), // 332
LINXY(__NR_preadv, sys_preadv), // 333
|
|
From: <sv...@va...> - 2009-11-22 23:43:30
|
Author: sewardj
Date: 2009-11-22 23:43:17 +0000 (Sun, 22 Nov 2009)
New Revision: 1929
Log:
Use a shorter instruction encoding for "mov $smallish positive int, %reg".
Reduces generated code size by about 1% for Memcheck.
Modified:
trunk/priv/host_amd64_defs.c
Modified: trunk/priv/host_amd64_defs.c
===================================================================
--- trunk/priv/host_amd64_defs.c 2009-11-22 23:38:01 UTC (rev 1928)
+++ trunk/priv/host_amd64_defs.c 2009-11-22 23:43:17 UTC (rev 1929)
@@ -2335,10 +2335,26 @@
if (i->Ain.Alu64R.op == Aalu_MOV) {
switch (i->Ain.Alu64R.src->tag) {
case Armi_Imm:
- *p++ = toUChar(0x48 + (1 & iregBit3(i->Ain.Alu64R.dst)));
- *p++ = 0xC7;
- *p++ = toUChar(0xC0 + iregBits210(i->Ain.Alu64R.dst));
- p = emit32(p, i->Ain.Alu64R.src->Armi.Imm.imm32);
+ if (0 == (i->Ain.Alu64R.src->Armi.Imm.imm32 & ~0xFFF)) {
+ /* Actually we could use this form for constants in
+ the range 0 through 0x7FFFFFFF inclusive, but
+ limit it to a small range for verifiability
+ purposes. */
+ /* Generate "movl $imm32, 32-bit-register" and let
+ the default zero-extend rule cause the upper half
+ of the dst to be zeroed out too. This saves 1
+ and sometimes 2 bytes compared to the more
+ obvious encoding in the 'else' branch. */
+ if (1 & iregBit3(i->Ain.Alu64R.dst))
+ *p++ = 0x41;
+ *p++ = 0xB8 + iregBits210(i->Ain.Alu64R.dst);
+ p = emit32(p, i->Ain.Alu64R.src->Armi.Imm.imm32);
+ } else {
+ *p++ = toUChar(0x48 + (1 & iregBit3(i->Ain.Alu64R.dst)));
+ *p++ = 0xC7;
+ *p++ = toUChar(0xC0 + iregBits210(i->Ain.Alu64R.dst));
+ p = emit32(p, i->Ain.Alu64R.src->Armi.Imm.imm32);
+ }
goto done;
case Armi_Reg:
*p++ = rexAMode_R( i->Ain.Alu64R.src->Armi.Reg.reg,
|
|
From: <sv...@va...> - 2009-11-22 23:38:18
|
Author: sewardj
Date: 2009-11-22 23:38:01 +0000 (Sun, 22 Nov 2009)
New Revision: 1928
Log:
Specialise "S after 32-bit SUB/CMP"; improves performance by about 2%
for Memcheck running bzip2.
Modified:
trunk/priv/guest_amd64_helpers.c
Modified: trunk/priv/guest_amd64_helpers.c
===================================================================
--- trunk/priv/guest_amd64_helpers.c 2009-11-13 16:55:17 UTC (rev 1927)
+++ trunk/priv/guest_amd64_helpers.c 2009-11-22 23:38:01 UTC (rev 1928)
@@ -1014,6 +1014,16 @@
binop(Iop_Shl64,cc_dep1,mkU8(32))));
}
+ if (isU64(cc_op, AMD64G_CC_OP_SUBL) && isU64(cond, AMD64CondS)) {
+ /* long sub/cmp, then S (negative) --> test (dst-src <s 0) */
+ return unop(Iop_1Uto64,
+ binop(Iop_CmpLT64S,
+ binop(Iop_Sub64,
+ binop(Iop_Shl64, cc_dep1, mkU8(32)),
+ binop(Iop_Shl64, cc_dep2, mkU8(32))),
+ mkU64(0)));
+ }
+
/*---------------- SUBW ----------------*/
if (isU64(cc_op, AMD64G_CC_OP_SUBW) && isU64(cond, AMD64CondZ)) {
|
|
From: Erez Z. <ere...@gm...> - 2009-11-22 09:01:41
|
Hi,
I'm trying to run 'make dist-bzip2' and I got the following error:
...
make[1]: Entering directory
`/home1/erez.zilber/work/tmp/vlg/valgrind-3.5.0/tests'
mkdir -p -- /home1/erez.zilber/work/tmp/vlg/valgrind-3.5.0/valgrind-3.5.0/tests/..
make[1]: Leaving directory
`/home1/erez.zilber/work/tmp/vlg/valgrind-3.5.0/tests'
make[1]: Entering directory
`/home1/erez.zilber/work/tmp/vlg/valgrind-3.5.0/perf'
mkdir -p -- /home1/erez.zilber/work/tmp/vlg/valgrind-3.5.0/valgrind-3.5.0/perf/..
make[1]: Leaving directory
`/home1/erez.zilber/work/tmp/vlg/valgrind-3.5.0/perf'
make[1]: Entering directory
`/home1/erez.zilber/work/tmp/vlg/valgrind-3.5.0/auxprogs'
mkdir -p -- /home1/erez.zilber/work/tmp/vlg/valgrind-3.5.0/valgrind-3.5.0/auxprogs/..
make[1]: Leaving directory
`/home1/erez.zilber/work/tmp/vlg/valgrind-3.5.0/auxprogs'
make[1]: Entering directory
`/home1/erez.zilber/work/tmp/vlg/valgrind-3.5.0/mpi'
mkdir -p -- /home1/erez.zilber/work/tmp/vlg/valgrind-3.5.0/valgrind-3.5.0/mpi/..
make[1]: Leaving directory
`/home1/erez.zilber/work/tmp/vlg/valgrind-3.5.0/mpi'
make[1]: Entering directory
`/home1/erez.zilber/work/tmp/vlg/valgrind-3.5.0/docs'
mkdir -p -- /home1/erez.zilber/work/tmp/vlg/valgrind-3.5.0/valgrind-3.5.0/docs/images
/home1/erez.zilber/work/tmp/vlg/valgrind-3.5.0/valgrind-3.5.0/docs/internals
/home1/erez.zilber/work/tmp/vlg/valgrind-3.5.0/valgrind-3.5.0/docs/lib
/home1/erez.zilber/work/tmp/vlg/valgrind-3.5.0/valgrind-3.5.0/docs/xml
make \
top_distdir="/home1/erez.zilber/work/tmp/vlg/valgrind-3.5.0/valgrind-3.5.0"
distdir="/home1/erez.zilber/work/tmp/vlg/valgrind-3.5.0/valgrind-3.5.0/docs"
\
dist-hook
make[2]: Entering directory
`/home1/erez.zilber/work/tmp/vlg/valgrind-3.5.0/docs'
Generating the text version of the FAQ ...
export XML_CATALOG_FILES=/etc/xml/catalog && \
xsltproc --nonet --xinclude -o ./FAQ.txt
../docs/lib/vg-faq2txt.xsl ../docs/xml/FAQ.xml
I/O error : Attempt to load network entity
http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl
warning: failed to load external entity
"http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl"
compilation error: file ../docs/lib/vg-faq2txt.xsl line 10 element
import
xsl:import : unable to load
http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl
make[2]: *** [FAQ.txt] Error 5
make[2]: Leaving directory
`/home1/erez.zilber/work/tmp/vlg/valgrind-3.5.0/docs'
make[1]: *** [distdir] Error 2
make[1]: Leaving directory
`/home1/erez.zilber/work/tmp/vlg/valgrind-3.5.0/docs'
make: *** [distdir] Error 1
I tried the following:
[erez.zilber@kpc39:~/work/tmp/vlg/valgrind-3.5.0]$ wget
http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl
--18:17:34-- http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl
Resolving docbook.sourceforge.net... 216.34.181.96
Connecting to docbook.sourceforge.net|216.34.181.96|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 12666 (12K) [text/xml]
Saving to: `docbook.xsl'
100%[=====================================================================================>]
12,666 22.9K/s in 0.5s
18:17:37 (22.9 KB/s) - `docbook.xsl' saved [12666/12666]
and it seems to work. What is wrong here?
Thanks,
Erez
|
|
From: Mathias F. <M.F...@sc...> - 2009-11-17 11:20:09
|
Hi, On Friday 11 September 2009, you wrote: > 2009/9/10 Mathias Fröhlich <M.F...@sc...>: > > I have done a small valgrind tool that tests each result of a floating > > point operation agains inf and nan values. > > > > I have written that tool to find problems in some simulation codes at a > > customer here. Also I used that last weekend to find similar problems in > > Flightgear (an open source flight simulation). > > So one might ask if the work of this tool could be done by the usual > > floating point traps. > > The problem with the hardware traps is that they are asyncronous. That > > means you get them a little later than when the problem happens - I > > believe at the next fpu instruction past the error. Which means that you > > sometimes get a usable hint where the problem is but sometomes you get > > signaled somewhere completely different. > > > > That tool prooved to be much more useful since it really points you to > > the *exact* source code line where the problem happens. > > > > I would like to know if there is any chance to get such a tool into the > > public valgrind tree. > > And if so, what to do to get that stuff reviewed, contributed ... > > It does sound like a useful tool. Probably the best thing is to file > a bug and attach the patch, see > http://www.valgrind.org/support/features.html. > > It's possible that it could end up in the public Valgrind tree. Some > prerequisites for that: > > - the code must be of sufficient quality > > - there must be good tests and documentation > > - it should be demonstrably useful (testimony from others would be useful) > > - you must be willing to maintain it. At first sorry for the long delay here. But that already shows the hugest problem for me here: Your last requirement. That tool is less than 1000 lines of code. So from my point of view, this is on of those numerous minor contributions to one of several open source projects I occasionally contribute small improvements, bug fixes or whatever small things... I love the Idea of open source and I live with that by contributing whenever I see that somebody different than me can make use of. But if I must be maintainer for all these minor contributions, I would not have any time left for my day job that delivers my daily slice of bread. So, I cannot promise to do huge maintainership jobs here. What I can promise is that I am around and respond as I find time to do so. Depending on the task to do this might take some weeks. Also for me it would be useful if there is still some 'parent' maintainer who knows the spirit of the project. I try to make contributions fit into the project, but me being a maintainer for a project that I do not really know makes me frighten a bit :) So, all in all I already thought that I will just keep that tool private if this is the requirement. ... until some collegues here pushed me again to feed that tool upstream. Ok - so far. The files are now added to the bug tracker as #214950. Documentation is a bit sparse. But as usual in open source, the maintainer of a project usually tells me what he likes and I usually I deliver that to get the resulting feature in a more public available code. So, tell me what I need to change to get that in and tell me if it is sufficient what I can deliver regarding 'maintainership'. Simple tests are already included. I hope that my coding quality fits your needs - else tell me. >From my point of view the tool is useful, since I already found some problems with some simulation codes at a customer building cars in the south of germany. Also our software we develop here in house got some long standing fixes due to this tool. Collegues bug me here that I push that upstream. To go more open source, I really have some kind of maintainership for flightgear - not an official term in our project, but it just is like that, I have found some long standing problems there using that tool in flightgear. I have also provided that tool to some others working on flightgear, especially our release manager, who found some issues for his use cases using that tool. The nice key point of that approach is that valgrind points your nose at exactly that line of code where the problem originates - which is extremely helpful here. Greetings and thanks Mathias -- Dr. Mathias Fröhlich, science + computing ag, Software Solutions Hagellocher Weg 71-75, D-72070 Tuebingen, Germany Phone: +49 7071 9457-268, Fax: +49 7071 9457-511 -- Vorstand/Board of Management: Dr. Bernd Finkbeiner, Dr. Roland Niemeier, Dr. Arno Steitz, Dr. Ingrid Zech Vorsitzender des Aufsichtsrats/ Chairman of the Supervisory Board: Michel Lepert Sitz/Registered Office: Tuebingen Registergericht/Registration Court: Stuttgart Registernummer/Commercial Register No.: HRB 382196 |
|
From: Bart V. A. <bar...@gm...> - 2009-11-17 09:31:29
|
Nightly build on cellbuzz-native ( cellbuzz, ppc64, Fedora 7, native ) Started at 2009-11-17 02:22:55 EST Ended at 2009-11-17 04:31:00 EST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 449 tests, 45 stderr failures, 10 stdout failures, 0 post failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cases-full (stderr) memcheck/tests/leak-cases-summary (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/linux/timerfd-syscall (stdout) memcheck/tests/linux-syscalls-2007 (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stdout) memcheck/tests/wrap8 (stderr) none/tests/empty-exe (stderr) none/tests/linux/mremap (stderr) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-vmx (stdout) none/tests/ppc32/round (stdout) none/tests/ppc32/test_gx (stdout) none/tests/ppc64/jm-fp (stdout) none/tests/ppc64/jm-vmx (stdout) none/tests/ppc64/round (stdout) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) none/tests/shell_zerolength (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/tc23_bogus_condwait (stderr) exp-ptrcheck/tests/bad_percentify (stderr) exp-ptrcheck/tests/base (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/fp (stderr) exp-ptrcheck/tests/globalerr (stderr) exp-ptrcheck/tests/hackedbz2 (stderr) exp-ptrcheck/tests/hp_bounds (stderr) exp-ptrcheck/tests/hp_dangle (stderr) exp-ptrcheck/tests/hsg (stderr) exp-ptrcheck/tests/justify (stderr) exp-ptrcheck/tests/partial_bad (stderr) exp-ptrcheck/tests/partial_good (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) exp-ptrcheck/tests/realloc (stderr) exp-ptrcheck/tests/stackerr (stderr) exp-ptrcheck/tests/strcpy (stderr) exp-ptrcheck/tests/supp (stderr) exp-ptrcheck/tests/tricky (stderr) exp-ptrcheck/tests/unaligned (stderr) exp-ptrcheck/tests/zero (stderr) |
|
From: Tom H. <th...@cy...> - 2009-11-17 03:51:22
|
Nightly build on vauxhall ( x86_64, Fedora 11 ) Started at 2009-11-17 03:20:06 GMT Ended at 2009-11-17 03:51:02 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 541 tests, 9 stderr failures, 0 stdout failures, 0 post failures == memcheck/tests/linux/stack_switch (stderr) memcheck/tests/long_namespace_xml (stderr) helgrind/tests/pth_spinlock (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/qt4_mutex (stderr) drd/tests/qt4_semaphore (stderr) exp-ptrcheck/tests/bad_percentify (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 == 541 tests, 7 stderr failures, 0 stdout failures, 0 post failures == memcheck/tests/linux/stack_switch (stderr) memcheck/tests/long_namespace_xml (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/qt4_mutex (stderr) exp-ptrcheck/tests/bad_percentify (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Tue Nov 17 03:35:35 2009 --- new.short Tue Nov 17 03:51:02 2009 *************** *** 8,12 **** ! == 541 tests, 7 stderr failures, 0 stdout failures, 0 post failures == memcheck/tests/linux/stack_switch (stderr) memcheck/tests/long_namespace_xml (stderr) helgrind/tests/tc06_two_races_xml (stderr) --- 8,13 ---- ! == 541 tests, 9 stderr failures, 0 stdout failures, 0 post failures == memcheck/tests/linux/stack_switch (stderr) memcheck/tests/long_namespace_xml (stderr) + helgrind/tests/pth_spinlock (stderr) helgrind/tests/tc06_two_races_xml (stderr) *************** *** 15,16 **** --- 16,18 ---- drd/tests/qt4_mutex (stderr) + drd/tests/qt4_semaphore (stderr) exp-ptrcheck/tests/bad_percentify (stderr) |
|
From: Tom H. <th...@cy...> - 2009-11-17 03:50:13
|
Nightly build on lloyd ( x86_64, Fedora 7 ) Started at 2009-11-17 03:05:05 GMT Ended at 2009-11-17 03:49:55 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 531 tests, 1 stderr failure, 0 stdout failures, 0 post failures == helgrind/tests/tc06_two_races_xml (stderr) |
|
From: Tom H. <th...@cy...> - 2009-11-17 03:36:11
|
Nightly build on mg ( x86_64, Fedora 9 ) Started at 2009-11-17 03:10:05 GMT Ended at 2009-11-17 03:35:52 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 538 tests, 1 stderr failure, 0 stdout failures, 0 post failures == helgrind/tests/tc06_two_races_xml (stderr) |
|
From: Paul P. <ppl...@go...> - 2009-11-17 02:07:08
|
On Thu, Aug 13, 2009 at 3:41 PM, Nicholas Nethercote <n.n...@gm...> wrote: > Feel free to open a new bug requesting a GDB stub. The more detail > you can give (how it would work, beneifts) the better. https://bugs.kde.org/show_bug.cgi?id=214909 Thanks, -- Paul Pluzhnikov |
|
From: Tom H. <to...@co...> - 2009-11-16 09:08:17
|
On 15/11/09 13:05, Johan Björk wrote: > This commit broke all the redirection functionality on Darwin. > Attached patch fixes it. (trivial. don't forget to initialize the > isIFunc field + add assert to make it not happen again) Committed (with some additional fixes to other places). Thanks for the heads up. Tom -- Tom Hughes (to...@co...) http://www.compton.nu/ |
|
From: <sv...@va...> - 2009-11-16 09:07:19
|
Author: tom
Date: 2009-11-16 09:07:07 +0000 (Mon, 16 Nov 2009)
New Revision: 10944
Log:
Make sure isIFunc is initialised whenever we add a symbol.
Modified:
trunk/coregrind/m_debuginfo/readmacho.c
trunk/coregrind/m_debuginfo/readpdb.c
trunk/coregrind/m_debuginfo/readxcoff.c
Modified: trunk/coregrind/m_debuginfo/readmacho.c
===================================================================
--- trunk/coregrind/m_debuginfo/readmacho.c 2009-11-16 09:06:50 UTC (rev 10943)
+++ trunk/coregrind/m_debuginfo/readmacho.c 2009-11-16 09:07:07 UTC (rev 10944)
@@ -369,6 +369,7 @@
di->text_avma+di->text_size - sym_addr;
risym.name = ML_(addStr)(di, name, -1);
risym.isText = True;
+ risym.isIFunc = False;
// Lots of user function names get prepended with an underscore. Eg. the
// function 'f' becomes the symbol '_f'. And the "below main"
// function is called "start". So we skip the leading underscore, and
Modified: trunk/coregrind/m_debuginfo/readpdb.c
===================================================================
--- trunk/coregrind/m_debuginfo/readpdb.c 2009-11-16 09:06:50 UTC (rev 10943)
+++ trunk/coregrind/m_debuginfo/readpdb.c 2009-11-16 09:07:07 UTC (rev 10944)
@@ -1273,6 +1273,7 @@
vsym.size = sym->data_v1.p_name.namelen;
// FIXME: .namelen is sizeof(.data) including .name[]
vsym.isText = (sym->generic.id == S_PUB_V1);
+ vsym.isIFunc = False;
ML_(addSym)( di, &vsym );
n_syms_read++;
}
@@ -1299,6 +1300,7 @@
// not size of function!
vsym.isText = !!(IMAGE_SCN_CNT_CODE
& sectp[sym->data_v2.segment-1].Characteristics);
+ vsym.isIFunc = False;
ML_(addSym)( di, &vsym );
n_syms_read++;
}
@@ -1331,6 +1333,7 @@
// .text of the function
vsym.isText = !!(IMAGE_SCN_CNT_CODE
& sectp[sym->data_v2.segment-1].Characteristics);
+ vsym.isIFunc = False;
ML_(addSym)( di, &vsym );
n_syms_read++;
}
@@ -1362,6 +1365,7 @@
vsym.name = nmstr;
vsym.size = sym->proc_v1.proc_len;
vsym.isText = True;
+ vsym.isIFunc = False;
if (debug)
VG_(message)(Vg_UserMsg,
"Adding function %s addr=%#lx length=%d\n",
@@ -1382,6 +1386,7 @@
vsym.name = nmstr;
vsym.size = sym->proc_v2.proc_len;
vsym.isText = True;
+ vsym.isIFunc = False;
if (debug)
VG_(message)(Vg_UserMsg,
"Adding function %s addr=%#lx length=%d\n",
@@ -1404,6 +1409,7 @@
vsym.name = nmstr;
vsym.size = sym->proc_v3.proc_len;
vsym.isText = 1;
+ vsym.isIFunc = False;
ML_(addSym)( di, &vsym );
n_syms_read++;
}
Modified: trunk/coregrind/m_debuginfo/readxcoff.c
===================================================================
--- trunk/coregrind/m_debuginfo/readxcoff.c 2009-11-16 09:06:50 UTC (rev 10943)
+++ trunk/coregrind/m_debuginfo/readxcoff.c 2009-11-16 09:07:07 UTC (rev 10944)
@@ -1521,10 +1521,11 @@
/* Actually add the symbol (finallyatlast) */
if (sane) {
UInt nlen;
- dis.addr = addr;
- dis.size = size;
- dis.tocptr = s->r2known ? s->r2value : 0;
- dis.isText = True;
+ dis.addr = addr;
+ dis.size = size;
+ dis.tocptr = s->r2known ? s->r2value : 0;
+ dis.isText = True;
+ dis.isIFunc = False;
vg_assert(!is_empty_Name(s->name));
nlen = s->name.len;
vg_assert(nlen > 0);
|
|
From: <sv...@va...> - 2009-11-16 09:07:05
|
Author: tom
Date: 2009-11-16 09:06:50 +0000 (Mon, 16 Nov 2009)
New Revision: 10943
Log:
Handle the isIFunc flag when canonicalising the symbol table.
Modified:
trunk/coregrind/m_debuginfo/storage.c
Modified: trunk/coregrind/m_debuginfo/storage.c
===================================================================
--- trunk/coregrind/m_debuginfo/storage.c 2009-11-16 09:06:09 UTC (rev 10942)
+++ trunk/coregrind/m_debuginfo/storage.c 2009-11-16 09:06:50 UTC (rev 10943)
@@ -1214,7 +1214,7 @@
Word i, j, n_merged, n_truncated;
Addr s1, s2, e1, e2, p1, p2;
UChar *n1, *n2;
- Bool t1, t2;
+ Bool t1, t2, f1, f2;
# define SWAP(ty,aa,bb) \
do { ty tt = (aa); (aa) = (bb); (bb) = tt; } while (0)
@@ -1278,11 +1278,13 @@
p1 = di->symtab[i].tocptr;
n1 = di->symtab[i].name;
t1 = di->symtab[i].isText;
+ f1 = di->symtab[i].isIFunc;
s2 = di->symtab[i+1].addr;
e2 = s2 + di->symtab[i+1].size - 1;
p2 = di->symtab[i+1].tocptr;
n2 = di->symtab[i+1].name;
t2 = di->symtab[i+1].isText;
+ f2 = di->symtab[i+1].isIFunc;
if (s1 < s2) {
e1 = s2-1;
} else {
@@ -1298,16 +1300,18 @@
up back at cleanup_more, which will take care of it. */
}
}
- di->symtab[i].addr = s1;
- di->symtab[i].size = e1 - s1 + 1;
- di->symtab[i].tocptr = p1;
- di->symtab[i].name = n1;
- di->symtab[i].isText = t1;
- di->symtab[i+1].addr = s2;
- di->symtab[i+1].size = e2 - s2 + 1;
- di->symtab[i+1].tocptr = p2;
- di->symtab[i+1].name = n2;
- di->symtab[i+1].isText = t2;
+ di->symtab[i].addr = s1;
+ di->symtab[i].size = e1 - s1 + 1;
+ di->symtab[i].tocptr = p1;
+ di->symtab[i].name = n1;
+ di->symtab[i].isText = t1;
+ di->symtab[i].isIFunc = f1;
+ di->symtab[i+1].addr = s2;
+ di->symtab[i+1].size = e2 - s2 + 1;
+ di->symtab[i+1].tocptr = p2;
+ di->symtab[i+1].name = n2;
+ di->symtab[i+1].isText = t2;
+ di->symtab[i+1].isIFunc = f2;
vg_assert(s1 <= s2);
vg_assert(di->symtab[i].size > 0);
vg_assert(di->symtab[i+1].size > 0);
|
|
From: <sv...@va...> - 2009-11-16 09:06:23
|
Author: tom
Date: 2009-11-16 09:06:09 +0000 (Mon, 16 Nov 2009)
New Revision: 10942
Log:
Assert that the indirect function wrapper exists if we encounter a
redirection for an indirect function.
Modified:
trunk/coregrind/m_redir.c
Modified: trunk/coregrind/m_redir.c
===================================================================
--- trunk/coregrind/m_redir.c 2009-11-15 19:11:19 UTC (rev 10941)
+++ trunk/coregrind/m_redir.c 2009-11-16 09:06:09 UTC (rev 10942)
@@ -809,8 +809,10 @@
vg_assert(r->to_addr != 0);
if (isWrap)
*isWrap = r->isWrap || r->isIFunc;
- if (r->isIFunc)
+ if (r->isIFunc) {
+ vg_assert(iFuncWrapper);
return iFuncWrapper;
+ }
return r->to_addr;
}
|
|
From: Bart V. A. <bar...@gm...> - 2009-11-16 08:50:16
|
Nightly build on cellbuzz-native ( cellbuzz, ppc64, Fedora 7, native ) Started at 2009-11-16 02:23:02 EST Ended at 2009-11-16 03:49:54 EST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 449 tests, 45 stderr failures, 10 stdout failures, 0 post failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cases-full (stderr) memcheck/tests/leak-cases-summary (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/linux/timerfd-syscall (stdout) memcheck/tests/linux-syscalls-2007 (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stdout) memcheck/tests/wrap8 (stderr) none/tests/empty-exe (stderr) none/tests/linux/mremap (stderr) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-vmx (stdout) none/tests/ppc32/round (stdout) none/tests/ppc32/test_gx (stdout) none/tests/ppc64/jm-fp (stdout) none/tests/ppc64/jm-vmx (stdout) none/tests/ppc64/round (stdout) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) none/tests/shell_zerolength (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/tc23_bogus_condwait (stderr) exp-ptrcheck/tests/bad_percentify (stderr) exp-ptrcheck/tests/base (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/fp (stderr) exp-ptrcheck/tests/globalerr (stderr) exp-ptrcheck/tests/hackedbz2 (stderr) exp-ptrcheck/tests/hp_bounds (stderr) exp-ptrcheck/tests/hp_dangle (stderr) exp-ptrcheck/tests/hsg (stderr) exp-ptrcheck/tests/justify (stderr) exp-ptrcheck/tests/partial_bad (stderr) exp-ptrcheck/tests/partial_good (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) exp-ptrcheck/tests/realloc (stderr) exp-ptrcheck/tests/stackerr (stderr) exp-ptrcheck/tests/strcpy (stderr) exp-ptrcheck/tests/supp (stderr) exp-ptrcheck/tests/tricky (stderr) exp-ptrcheck/tests/unaligned (stderr) exp-ptrcheck/tests/zero (stderr) |
|
From: Tom H. <th...@cy...> - 2009-11-16 03:55:35
|
Nightly build on vauxhall ( x86_64, Fedora 11 ) Started at 2009-11-16 03:20:07 GMT Ended at 2009-11-16 03:55:15 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 541 tests, 9 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/linux/stack_switch (stderr) memcheck/tests/long_namespace_xml (stderr) helgrind/tests/pth_spinlock (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/pth_detached2 (stdout) drd/tests/qt4_rwlock (stderr) drd/tests/qt4_semaphore (stderr) exp-ptrcheck/tests/bad_percentify (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 == 541 tests, 7 stderr failures, 0 stdout failures, 0 post failures == memcheck/tests/linux/stack_switch (stderr) memcheck/tests/long_namespace_xml (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/qt4_semaphore (stderr) exp-ptrcheck/tests/bad_percentify (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Nov 16 03:35:37 2009 --- new.short Mon Nov 16 03:55:15 2009 *************** *** 8,12 **** ! == 541 tests, 7 stderr failures, 0 stdout failures, 0 post failures == memcheck/tests/linux/stack_switch (stderr) memcheck/tests/long_namespace_xml (stderr) helgrind/tests/tc06_two_races_xml (stderr) --- 8,13 ---- ! == 541 tests, 9 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/linux/stack_switch (stderr) memcheck/tests/long_namespace_xml (stderr) + helgrind/tests/pth_spinlock (stderr) helgrind/tests/tc06_two_races_xml (stderr) *************** *** 14,15 **** --- 15,18 ---- helgrind/tests/tc23_bogus_condwait (stderr) + drd/tests/pth_detached2 (stdout) + drd/tests/qt4_rwlock (stderr) drd/tests/qt4_semaphore (stderr) |
|
From: Tom H. <th...@cy...> - 2009-11-16 03:50:29
|
Nightly build on lloyd ( x86_64, Fedora 7 ) Started at 2009-11-16 03:05:06 GMT Ended at 2009-11-16 03:50:13 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 531 tests, 1 stderr failure, 0 stdout failures, 0 post failures == helgrind/tests/tc06_two_races_xml (stderr) |
|
From: Tom H. <th...@cy...> - 2009-11-16 03:36:28
|
Nightly build on mg ( x86_64, Fedora 9 ) Started at 2009-11-16 03:10:06 GMT Ended at 2009-11-16 03:36:07 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 538 tests, 2 stderr failures, 0 stdout failures, 0 post failures == helgrind/tests/pth_spinlock (stderr) helgrind/tests/tc06_two_races_xml (stderr) |
|
From: Nicholas N. <n.n...@gm...> - 2009-11-16 02:51:35
|
On Tue, Nov 10, 2009 at 11:40 PM, Julian Seward <js...@ac...> wrote: > On Tuesday 10 November 2009, Konstantin Serebryany wrote: >> Hi, >> >> Memcheck reports uninitialized reads (UMRs) only when the reads cause side >> effects (e.g. cmp, syscall, etc). > > Yes. So it's not really reporting reads of uninitialised memory; > rather it's reporting dangerous uses of uninitialised values. > >> This cases the implementation to be complex and slow, especially if we need >> to have --track-origins=yes. >> >> Other tools choose to report UMRs on any first access, including move. >> This is much simpler and faster, but leads to numerous false positives >> (e.g. when copying structures with padding bytes). >> >> I wonder if these two approaches where discussed and compared somewhere in >> literature. > > I don't know of any. I too would be interested to read more about it. > Personally I don't believe it's possible to have an (essentially) zero > false positive rate without using an approach like Memcheck's. But I > would love to be proved wrong on this, since I too don't like Memcheck's > complexity and overhead. It all gets quite tricky when you think about it carefully. Using Andreas Zeller's terminology, a "bug" is a chain of three things: - A "defect" is erroneous source code; - An "infection" is erroneous program state, caused by executing erroneous source code; - A "failure" is erroneous program behaviour, caused by erroneous program state. Sometimes chains are aborted, eg. an infection may be overwritten without causing a problem. Debugging is all about working back from failures to defects. Tools like Valgrind help with that by automatically giving you a point somewhere along the chain closer to the defect. The closer the better. For UMRs the defect is usually that some code is missing, ie. there's a forgotten initialiser. The infection is that a variable has a probably-wrong value. (It may not actually be wrong, eg. you may get lucky (unlucky?) and have it initialise to the desired value, esp. if that value is zero.) We use the term "undefined" but that really just means "probably wrong". Once you have a "probably wrong" value in a C/C++ program, just about anything can happen because you have so much ability to screw up things via memory accesses. There are trade-offs with different approaches for identifying UMRs. The more aggressive you are in identifying suspicious points along the infection chain, the closer you'll be to the actual defect, but the more likely you are to reporting a false positive. Valgrind waits until the undefined value is used in a way that has a high chance of causing an immediate failure. --track-origins=yes is useful because it gives you the location where the undefined value was allocated in memory, which is often the same place that the missing initialiser was supposed to be, ie. where the defect is. All this assumes that copying undefined values is ok. It almost always is, so Valgrind allows it; John Reiser mentions an unusual counter-example. Tools have to make assumptions, sometimes they'll be wrong. There may be better approaches than Valgrind's. If you want to find one, I strongly recommend you think about it in terms of defects/infections/failures, it'll clarify your thinking greatly. Nick |
|
From: Bart V. A. <bar...@gm...> - 2009-11-15 21:00:08
|
Apparently openSUSE 11.2 has been shipped with a stripped ld.so and without a dependency to glibc-debuginfo in the Valgrind RPM, which causes Valgrind to fail to start on openSUSE 11.2. For the bug report, see also https://bugzilla.novell.com/show_bug.cgi?id=555664. Bart. |
|
From: <sv...@va...> - 2009-11-15 19:11:37
|
Author: bart
Date: 2009-11-15 19:11:19 +0000 (Sun, 15 Nov 2009)
New Revision: 10941
Log:
Added support for glibc 2.11.
Modified:
trunk/configure.in
Modified: trunk/configure.in
===================================================================
--- trunk/configure.in 2009-11-13 17:21:04 UTC (rev 10940)
+++ trunk/configure.in 2009-11-15 19:11:19 UTC (rev 10941)
@@ -656,6 +656,16 @@
],
GLIBC_VERSION="2.10")
+AC_EGREP_CPP([GLIBC_211], [
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ == 11)
+ GLIBC_211
+ #endif
+#endif
+],
+GLIBC_VERSION="2.11")
+
AC_EGREP_CPP([AIX5_LIBC], [
#include <standards.h>
#if defined(_AIXVERSION_510) || defined(_AIXVERSION_520) || defined(_AIXVERSION_530)
@@ -742,6 +752,13 @@
DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
;;
+ 2.11)
+ AC_MSG_RESULT(2.11 family)
+ AC_DEFINE([GLIBC_2_11], 1, [Define to 1 if you're using glibc 2.11.x])
+ DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+ ;;
aix5)
AC_MSG_RESULT(AIX 5.1 or 5.2 or 5.3)
AC_DEFINE([AIX5_LIBC], 1, [Define to 1 if you're using AIX 5.1 or 5.2 or 5.3])
@@ -755,7 +772,7 @@
*)
AC_MSG_RESULT(unsupported version)
- AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.10])
+ AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.11])
AC_MSG_ERROR([or AIX 5.1 or 5.2 or 5.3 GLIBC_VERSION])
AC_MSG_ERROR([or Darwin libc])
;;
|
|
From: Bart V. A. <bar...@gm...> - 2009-11-15 19:10:22
|
Hello, While testing Valgrind on Fedora 12 beta I noticed that the test program none/tests/pth_cancel2 sometimes hangs. I have created the following bug report for this issue: https://bugzilla.redhat.com/show_bug.cgi?id=537690. Bart. |
|
From: Johan B. <jb...@gm...> - 2009-11-15 13:06:07
|
Hi Tom,
This commit broke all the redirection functionality on Darwin.
Attached patch fixes it. (trivial. don't forget to initialize the
isIFunc field + add assert to make it not happen again)
/Johan
On Thu, Oct 29, 2009 at 10:27 AM, <sv...@va...> wrote:
> Author: tom
> Date: 2009-10-29 09:27:11 +0000 (Thu, 29 Oct 2009)
> New Revision: 10920
>
> Log:
> Add support for ELF indirect functions. These are symbols of
> type STT_GNU_IFUNC which, instead of pointing directly at the
> function, point at a routine which will return the address of
> the real function. Redirection of indirect functions is handled
> by valgrind as follows:
>
> - When a redirection specification matches an indirect
> function symbol an active redirection is added in the
> normal way, but with the isIFunc flag set.
>
> - When a call is made to an address which matches an
> active redirection with the isIFunc flag set the call
> is redirected, but not to the target address of the
> redirection - instead it is sent to a small wrapper
> routine that is preloaded into the client.
>
> - The wrapper routine calls the original client routine
> and collects the result, which it reports to valgrind
> using a client request, and then returns the result to
> the caller.
>
> - When valgrind gets the client request it looks up the
> active redirection for the indirect function and then
> adds a new active redirection which redirects from the
> address returned by the indirection function to the
> redirection target. This new redirection does not have
> the isIFunc flag set so behaves as a normal redirection.
>
> In addition to the above we also add a few new redirections to
> memcheck to capture internal calls made by glibc to things like
> strlen, as these internal calls do not go through the indirect
> function and instead go direct to the chosen implementation.
>
> Based on a patch from Dodji Seketeli and comments from Jakub
> Jelinek, this commit closes bug 206013.
>
>
> Modified:
> trunk/coregrind/m_debuginfo/debuginfo.c
> trunk/coregrind/m_debuginfo/priv_storage.h
> trunk/coregrind/m_debuginfo/readelf.c
> trunk/coregrind/m_redir.c
> trunk/coregrind/m_scheduler/scheduler.c
> trunk/coregrind/pub_core_clreq.h
> trunk/coregrind/pub_core_redir.h
> trunk/coregrind/vg_preloaded.c
> trunk/include/pub_tool_debuginfo.h
> trunk/memcheck/mc_replace_strmem.c
>
>
> Modified: trunk/coregrind/m_debuginfo/debuginfo.c
> ===================================================================
> --- trunk/coregrind/m_debuginfo/debuginfo.c 2009-10-29 09:01:39 UTC (rev 10919)
> +++ trunk/coregrind/m_debuginfo/debuginfo.c 2009-10-29 09:27:11 UTC (rev 10920)
> @@ -3435,14 +3435,16 @@
> /*OUT*/Addr* tocptr,
> /*OUT*/UInt* size,
> /*OUT*/HChar** name,
> - /*OUT*/Bool* isText )
> + /*OUT*/Bool* isText,
> + /*OUT*/Bool* isIFunc )
> {
> vg_assert(idx >= 0 && idx < si->symtab_used);
> - if (avma) *avma = si->symtab[idx].addr;
> - if (tocptr) *tocptr = si->symtab[idx].tocptr;
> - if (size) *size = si->symtab[idx].size;
> - if (name) *name = (HChar*)si->symtab[idx].name;
> - if (isText) *isText = si->symtab[idx].isText;
> + if (avma) *avma = si->symtab[idx].addr;
> + if (tocptr) *tocptr = si->symtab[idx].tocptr;
> + if (size) *size = si->symtab[idx].size;
> + if (name) *name = (HChar*)si->symtab[idx].name;
> + if (isText) *isText = si->symtab[idx].isText;
> + if (isIFunc) *isIFunc = si->symtab[idx].isIFunc;
> }
>
>
>
> Modified: trunk/coregrind/m_debuginfo/priv_storage.h
> ===================================================================
> --- trunk/coregrind/m_debuginfo/priv_storage.h 2009-10-29 09:01:39 UTC (rev 10919)
> +++ trunk/coregrind/m_debuginfo/priv_storage.h 2009-10-29 09:27:11 UTC (rev 10920)
> @@ -48,15 +48,16 @@
> /* A structure to hold an ELF/XCOFF symbol (very crudely). */
> typedef
> struct {
> - Addr addr; /* lowest address of entity */
> - Addr tocptr; /* ppc64-linux only: value that R2 should have */
> - UChar *name; /* name */
> + Addr addr; /* lowest address of entity */
> + Addr tocptr; /* ppc64-linux only: value that R2 should have */
> + UChar *name; /* name */
> // XXX: this could be shrunk (on 32-bit platforms) by using 31 bits for
> // the size and 1 bit for the isText. If you do this, make sure that
> // all assignments to isText use 0 or 1 (or True or False), and that a
> // positive number larger than 1 is never used to represent True.
> - UInt size; /* size in bytes */
> + UInt size; /* size in bytes */
> Bool isText;
> + Bool isIFunc; /* symbol is an indirect function? */
> }
> DiSym;
>
>
> Modified: trunk/coregrind/m_debuginfo/readelf.c
> ===================================================================
> --- trunk/coregrind/m_debuginfo/readelf.c 2009-10-29 09:01:39 UTC (rev 10919)
> +++ trunk/coregrind/m_debuginfo/readelf.c 2009-10-29 09:27:11 UTC (rev 10920)
> @@ -214,7 +214,8 @@
> used on entry */
> Bool* from_opd_out, /* ppc64-linux only: did we deref an
> .opd entry? */
> - Bool* is_text_out /* is this a text symbol? */
> + Bool* is_text_out, /* is this a text symbol? */
> + Bool* is_ifunc /* is this a STT_GNU_IFUNC function ?*/
> )
> {
> Bool plausible;
> @@ -232,6 +233,7 @@
> *sym_size_out = (Int)sym->st_size;
> *sym_tocptr_out = 0; /* unknown/inapplicable */
> *from_opd_out = False;
> + *is_ifunc = False;
>
> /* Figure out if we're interested in the symbol. Firstly, is it of
> the right flavour? */
> @@ -243,6 +245,9 @@
> &&
> (ELFXX_ST_TYPE(sym->st_info) == STT_FUNC
> || ELFXX_ST_TYPE(sym->st_info) == STT_OBJECT
> +#ifdef STT_GNU_IFUNC
> + || ELFXX_ST_TYPE(sym->st_info) == STT_GNU_IFUNC
> +#endif
> );
>
> /* Work out the svma and bias for each section as it will appear in
> @@ -325,6 +330,14 @@
> *sym_avma_out += text_bias;
> }
>
> +# ifdef STT_GNU_IFUNC
> + /* Check for indirect functions. */
> + if (*is_text_out
> + && ELFXX_ST_TYPE(sym->st_info) == STT_GNU_IFUNC) {
> + *is_ifunc = True;
> + }
> +# endif
> +
> # if defined(VGP_ppc64_linux)
> /* Allow STT_NOTYPE in the very special case where we're running on
> ppc64-linux and the symbol is one which the .opd-chasing hack
> @@ -570,7 +583,7 @@
> Char *sym_name, *sym_name_really;
> Int sym_size;
> Addr sym_tocptr;
> - Bool from_opd, is_text;
> + Bool from_opd, is_text, is_ifunc;
> DiSym risym;
> ElfXX_Sym *sym;
>
> @@ -602,13 +615,14 @@
> &sym_avma_really,
> &sym_size,
> &sym_tocptr,
> - &from_opd, &is_text)) {
> + &from_opd, &is_text, &is_ifunc)) {
>
> - risym.addr = sym_avma_really;
> - risym.size = sym_size;
> - risym.name = ML_(addStr) ( di, sym_name_really, -1 );
> - risym.tocptr = sym_tocptr;
> - risym.isText = is_text;
> + risym.addr = sym_avma_really;
> + risym.size = sym_size;
> + risym.name = ML_(addStr) ( di, sym_name_really, -1 );
> + risym.tocptr = sym_tocptr;
> + risym.isText = is_text;
> + risym.isIFunc = is_ifunc;
> vg_assert(risym.name != NULL);
> vg_assert(risym.tocptr == 0); /* has no role except on ppc64-linux */
> ML_(addSym) ( di, &risym );
> @@ -646,6 +660,7 @@
> Int size;
> Bool from_opd;
> Bool is_text;
> + Bool is_ifunc;
> }
> TempSym;
>
> @@ -671,7 +686,7 @@
> Char *sym_name, *sym_name_really;
> Int sym_size;
> Addr sym_tocptr;
> - Bool from_opd, modify_size, modify_tocptr, is_text;
> + Bool from_opd, modify_size, modify_tocptr, is_text, is_ifunc;
> DiSym risym;
> ElfXX_Sym *sym;
> OSet *oset;
> @@ -713,7 +728,7 @@
> &sym_avma_really,
> &sym_size,
> &sym_tocptr,
> - &from_opd, &is_text)) {
> + &from_opd, &is_text, &is_ifunc)) {
>
> /* Check if we've seen this (name,addr) key before. */
> key.addr = sym_avma_really;
> @@ -785,6 +800,7 @@
> elem->size = sym_size;
> elem->from_opd = from_opd;
> elem->is_text = is_text;
> + elem->is_ifunc = is_ifunc;
> VG_(OSetGen_Insert)(oset, elem);
> if (di->trace_symtab) {
> VG_(printf)(" to-oset [%4ld]: "
> @@ -808,11 +824,12 @@
> VG_(OSetGen_ResetIter)( oset );
>
> while ( (elem = VG_(OSetGen_Next)(oset)) ) {
> - risym.addr = elem->key.addr;
> - risym.size = elem->size;
> - risym.name = ML_(addStr) ( di, elem->key.name, -1 );
> - risym.tocptr = elem->tocptr;
> - risym.isText = elem->is_text;
> + risym.addr = elem->key.addr;
> + risym.size = elem->size;
> + risym.name = ML_(addStr) ( di, elem->key.name, -1 );
> + risym.tocptr = elem->tocptr;
> + risym.isText = elem->is_text;
> + risym.isIFunc = elem->is_ifunc;
> vg_assert(risym.name != NULL);
>
> ML_(addSym) ( di, &risym );
>
> Modified: trunk/coregrind/m_redir.c
> ===================================================================
> --- trunk/coregrind/m_redir.c 2009-10-29 09:01:39 UTC (rev 10919)
> +++ trunk/coregrind/m_redir.c 2009-10-29 09:27:11 UTC (rev 10920)
> @@ -268,12 +268,15 @@
> TopSpec* parent_spec; /* the TopSpec which supplied the Spec */
> TopSpec* parent_sym; /* the TopSpec which supplied the symbol */
> Bool isWrap; /* wrap or replacement? */
> + Bool isIFunc; /* indirect function? */
> }
> Active;
>
> /* The active set is a fast lookup table */
> static OSet* activeSet = NULL;
>
> +/* Wrapper routine for indirect functions */
> +static Addr iFuncWrapper;
>
> /*------------------------------------------------------------*/
> /*--- FWDses ---*/
> @@ -350,8 +353,8 @@
>
> nsyms = VG_(DebugInfo_syms_howmany)( newsi );
> for (i = 0; i < nsyms; i++) {
> - VG_(DebugInfo_syms_getidx)( newsi, i, &sym_addr, &sym_toc,
> - NULL, &sym_name, &isText );
> + VG_(DebugInfo_syms_getidx)( newsi, i, &sym_addr, &sym_toc,
> + NULL, &sym_name, &isText, NULL );
> ok = VG_(maybe_Z_demangle)( sym_name, demangled_sopatt, N_DEMANGLED,
> demangled_fnpatt, N_DEMANGLED, &isWrap );
> /* ignore data symbols */
> @@ -388,8 +391,8 @@
>
> if (check_ppcTOCs) {
> for (i = 0; i < nsyms; i++) {
> - VG_(DebugInfo_syms_getidx)( newsi, i, &sym_addr, &sym_toc,
> - NULL, &sym_name, &isText );
> + VG_(DebugInfo_syms_getidx)( newsi, i, &sym_addr, &sym_toc,
> + NULL, &sym_name, &isText, NULL );
> ok = isText
> && VG_(maybe_Z_demangle)(
> sym_name, demangled_sopatt, N_DEMANGLED,
> @@ -470,7 +473,31 @@
>
> #undef N_DEMANGLED
>
> +/* Add a new target for an indirect function. Adds a new redirection
> + for the indirection function with address old_from that redirects
> + the ordinary function with address new_from to the target address
> + of the original redirection. */
>
> +void VG_(redir_add_ifunc_target)( Addr old_from, Addr new_from )
> +{
> + Active *old, new;
> +
> + old = VG_(OSetGen_Lookup)(activeSet, &old_from);
> + vg_assert(old);
> + vg_assert(old->isIFunc);
> +
> + new = *old;
> + new.from_addr = new_from;
> + new.isIFunc = False;
> + maybe_add_active (new);
> +
> + if (VG_(clo_trace_redir)) {
> + VG_(message)( Vg_DebugMsg,
> + "Adding redirect for indirect function 0x%llx from 0x%llx -> 0x%llx\n",
> + (ULong)old_from, (ULong)new_from, (ULong)new.to_addr );
> + }
> +}
> +
> /* Do one element of the basic cross product: add to the active set,
> all matches resulting from comparing all the given specs against
> all the symbols in the given seginfo. If a conflicting binding
> @@ -487,7 +514,7 @@
> )
> {
> Spec* sp;
> - Bool anyMark, isText;
> + Bool anyMark, isText, isIFunc;
> Active act;
> Int nsyms, i;
> Addr sym_addr;
> @@ -513,7 +540,7 @@
> nsyms = VG_(DebugInfo_syms_howmany)( di );
> for (i = 0; i < nsyms; i++) {
> VG_(DebugInfo_syms_getidx)( di, i, &sym_addr, NULL, NULL,
> - &sym_name, &isText );
> + &sym_name, &isText, &isIFunc );
>
> /* ignore data symbols */
> if (!isText)
> @@ -539,6 +566,7 @@
> act.parent_spec = parent_spec;
> act.parent_sym = parent_sym;
> act.isWrap = sp->isWrap;
> + act.isIFunc = isIFunc;
> sp->done = True;
> maybe_add_active( act );
> }
> @@ -780,7 +808,9 @@
>
> vg_assert(r->to_addr != 0);
> if (isWrap)
> - *isWrap = r->isWrap;
> + *isWrap = r->isWrap || r->isIFunc;
> + if (r->isIFunc)
> + return iFuncWrapper;
> return r->to_addr;
> }
>
> @@ -1096,6 +1126,8 @@
>
> if (VG_(strcmp)(symbol, VG_STRINGIFY(VG_NOTIFY_ON_LOAD(freeres))) == 0)
> VG_(client___libc_freeres_wrapper) = addr;
> + else if (VG_(strcmp)(symbol, VG_STRINGIFY(VG_NOTIFY_ON_LOAD(ifunc_wrapper))) == 0)
> + iFuncWrapper = addr;
> else
> vg_assert2(0, "unrecognised load notification function: %s", symbol);
> }
>
> Modified: trunk/coregrind/m_scheduler/scheduler.c
> ===================================================================
> --- trunk/coregrind/m_scheduler/scheduler.c 2009-10-29 09:01:39 UTC (rev 10919)
> +++ trunk/coregrind/m_scheduler/scheduler.c 2009-10-29 09:27:11 UTC (rev 10920)
> @@ -89,6 +89,7 @@
> #include "pub_core_debuginfo.h" // VG_(di_notify_pdb_debuginfo)
> #include "priv_sema.h"
> #include "pub_core_scheduler.h" // self
> +#include "pub_core_redir.h"
>
>
> /* ---------------------------------------------------------------------
> @@ -1399,6 +1400,11 @@
> SET_CLREQ_RETVAL( tid, count );
> break; }
>
> + case VG_USERREQ__ADD_IFUNC_TARGET: {
> + VG_(redir_add_ifunc_target)( arg[1], arg[2] );
> + SET_CLREQ_RETVAL( tid, 0);
> + break; }
> +
> case VG_USERREQ__PRINTF_BACKTRACE: {
> Int count =
> VG_(vmessage)( Vg_ClientMsg, (char *)arg[1], (void*)arg[2] );
>
> Modified: trunk/coregrind/pub_core_clreq.h
> ===================================================================
> --- trunk/coregrind/pub_core_clreq.h 2009-10-29 09:01:39 UTC (rev 10919)
> +++ trunk/coregrind/pub_core_clreq.h 2009-10-29 09:27:11 UTC (rev 10920)
> @@ -50,6 +50,9 @@
> /* Internal equivalent of VALGRIND_PRINTF . */
> VG_USERREQ__INTERNAL_PRINTF = 0x3103,
>
> + /* Add a target for an indirect function redirection. */
> + VG_USERREQ__ADD_IFUNC_TARGET = 0x3104,
> +
> } Vg_InternalClientRequest;
>
> // Function for printing from code within Valgrind, but which runs on the
>
> Modified: trunk/coregrind/pub_core_redir.h
> ===================================================================
> --- trunk/coregrind/pub_core_redir.h 2009-10-29 09:01:39 UTC (rev 10919)
> +++ trunk/coregrind/pub_core_redir.h 2009-10-29 09:27:11 UTC (rev 10920)
> @@ -58,6 +58,8 @@
> /* Initialise the module, and load initial "hardwired" redirects. */
> extern void VG_(redir_initialise)( void );
>
> +/* Notify the module of a new target for an indirect function. */
> +extern void VG_(redir_add_ifunc_target)( Addr old_from, Addr new_from );
>
> //--------------------------------------------------------------------
> // Queries
>
> Modified: trunk/coregrind/vg_preloaded.c
> ===================================================================
> --- trunk/coregrind/vg_preloaded.c 2009-10-29 09:01:39 UTC (rev 10919)
> +++ trunk/coregrind/vg_preloaded.c 2009-10-29 09:27:11 UTC (rev 10920)
> @@ -47,12 +47,12 @@
> #include "pub_core_debuginfo.h" // Needed for pub_core_redir.h
> #include "pub_core_redir.h" // For VG_NOTIFY_ON_LOAD
>
> +#if defined(VGO_linux) || defined(VGO_aix5)
> +
> /* ---------------------------------------------------------------------
> Hook for running __libc_freeres once the program exits.
> ------------------------------------------------------------------ */
>
> -#if defined(VGO_linux) || defined(VGO_aix5)
> -
> void VG_NOTIFY_ON_LOAD(freeres)( void );
> void VG_NOTIFY_ON_LOAD(freeres)( void )
> {
> @@ -68,6 +68,31 @@
> *(int *)0 = 'x';
> }
>
> +/* ---------------------------------------------------------------------
> + Wrapper for indirect functions which need to be redirected.
> + ------------------------------------------------------------------ */
> +
> +void * VG_NOTIFY_ON_LOAD(ifunc_wrapper) (void);
> +void * VG_NOTIFY_ON_LOAD(ifunc_wrapper) (void)
> +{
> + OrigFn fn;
> + Addr result = 0;
> + int res;
> +
> + /* Call the original indirect function and get it's result */
> + VALGRIND_GET_ORIG_FN(fn);
> + CALL_FN_W_v(result, fn);
> +
> + /* Ask the valgrind core running on the real CPU (as opposed to this
> + code which runs on the emulated CPU) to update the redirection that
> + led to this function. This client request eventually gives control to
> + the function VG_(redir_add_ifunc_target) in m_redir.c */
> + VALGRIND_DO_CLIENT_REQUEST(res, 0,
> + VG_USERREQ__ADD_IFUNC_TARGET,
> + fn.nraddr, result, 0, 0, 0);
> + return result;
> +}
> +
> #elif defined(VGO_darwin)
>
> /* ---------------------------------------------------------------------
>
> Modified: trunk/include/pub_tool_debuginfo.h
> ===================================================================
> --- trunk/include/pub_tool_debuginfo.h 2009-10-29 09:01:39 UTC (rev 10919)
> +++ trunk/include/pub_tool_debuginfo.h 2009-10-29 09:27:11 UTC (rev 10920)
> @@ -212,7 +212,8 @@
> /*OUT*/Addr* tocptr,
> /*OUT*/UInt* size,
> /*OUT*/HChar** name,
> - /*OUT*/Bool* isText );
> + /*OUT*/Bool* isText,
> + /*OUT*/Bool* isIFunc );
>
> /* A simple enumeration to describe the 'kind' of various kinds of
> segments that arise from the mapping of object files. */
>
> Modified: trunk/memcheck/mc_replace_strmem.c
> ===================================================================
> --- trunk/memcheck/mc_replace_strmem.c 2009-10-29 09:01:39 UTC (rev 10919)
> +++ trunk/memcheck/mc_replace_strmem.c 2009-10-29 09:27:11 UTC (rev 10920)
> @@ -116,6 +116,7 @@
> STRRCHR(VG_Z_LIBC_SONAME, strrchr)
> STRRCHR(VG_Z_LIBC_SONAME, rindex)
> #if defined(VGO_linux)
> +STRRCHR(VG_Z_LIBC_SONAME, __GI_strrchr)
> STRRCHR(VG_Z_LD_LINUX_SO_2, rindex)
> #elif defined(VGO_darwin)
> STRRCHR(VG_Z_DYLD, strrchr)
> @@ -140,6 +141,7 @@
> STRCHR(VG_Z_LIBC_SONAME, strchr)
> STRCHR(VG_Z_LIBC_SONAME, index)
> #if defined(VGO_linux)
> +STRCHR(VG_Z_LIBC_SONAME, __GI_strchr)
> STRCHR(VG_Z_LD_LINUX_SO_2, strchr)
> STRCHR(VG_Z_LD_LINUX_SO_2, index)
> STRCHR(VG_Z_LD_LINUX_X86_64_SO_2, strchr)
> @@ -172,8 +174,10 @@
> }
>
> STRCAT(VG_Z_LIBC_SONAME, strcat)
> +#if defined(VGO_linux)
> +STRCAT(VG_Z_LIBC_SONAME, __GI_strcat)
> +#endif
>
> -
> #define STRNCAT(soname, fnname) \
> char* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
> ( char* dst, const char* src, SizeT n ); \
> @@ -257,6 +261,9 @@
> }
>
> STRNLEN(VG_Z_LIBC_SONAME, strnlen)
> +#if defined(VGO_linux)
> +STRNLEN(VG_Z_LIBC_SONAME, __GI_strnlen)
> +#endif
>
>
> // Note that this replacement often doesn't get used because gcc inlines
> @@ -274,6 +281,7 @@
>
> STRLEN(VG_Z_LIBC_SONAME, strlen)
> #if defined(VGO_linux)
> +STRLEN(VG_Z_LIBC_SONAME, __GI_strlen)
> STRLEN(VG_Z_LD_LINUX_SO_2, strlen)
> STRLEN(VG_Z_LD_LINUX_X86_64_SO_2, strlen)
> #endif
> @@ -301,7 +309,9 @@
> }
>
> STRCPY(VG_Z_LIBC_SONAME, strcpy)
> -#if defined(VGO_darwin)
> +#if defined(VGO_linux)
> +STRCPY(VG_Z_LIBC_SONAME, __GI_strcpy)
> +#elif defined(VGO_darwin)
> STRCPY(VG_Z_DYLD, strcpy)
> #endif
>
> @@ -327,7 +337,9 @@
> }
>
> STRNCPY(VG_Z_LIBC_SONAME, strncpy)
> -#if defined(VGO_darwin)
> +#if defined(VGO_linux)
> +STRNCPY(VG_Z_LIBC_SONAME, __GI_strncpy)
> +#elif defined(VGO_darwin)
> STRNCPY(VG_Z_DYLD, strncpy)
> #endif
>
> @@ -384,7 +396,9 @@
> }
>
> STRNCMP(VG_Z_LIBC_SONAME, strncmp)
> -#if defined(VGO_darwin)
> +#if defined(VGO_linux)
> +STRNCMP(VG_Z_LIBC_SONAME, __GI_strncmp)
> +#elif defined(VGO_darwin)
> STRNCMP(VG_Z_DYLD, strncmp)
> #endif
>
> @@ -411,6 +425,7 @@
>
> STRCMP(VG_Z_LIBC_SONAME, strcmp)
> #if defined(VGO_linux)
> +STRCMP(VG_Z_LIBC_SONAME, __GI_strcmp)
> STRCMP(VG_Z_LD_LINUX_X86_64_SO_2, strcmp)
> STRCMP(VG_Z_LD64_SO_1, strcmp)
> #endif
> @@ -557,6 +572,7 @@
>
> STPCPY(VG_Z_LIBC_SONAME, stpcpy)
> #if defined(VGO_linux)
> +STPCPY(VG_Z_LIBC_SONAME, __GI_stpcpy)
> STPCPY(VG_Z_LD_LINUX_SO_2, stpcpy)
> STPCPY(VG_Z_LD_LINUX_X86_64_SO_2, stpcpy)
> #elif defined(VGO_darwin)
> @@ -709,8 +725,10 @@
> }
>
> GLIBC232_RAWMEMCHR(VG_Z_LIBC_SONAME, rawmemchr)
> +#if defined (VGO_linux)
> +GLIBC232_RAWMEMCHR(VG_Z_LIBC_SONAME, __GI___rawmemchr)
> +#endif
>
> -
> /* glibc variant of strcpy that checks the dest is big enough.
> Copied from glibc-2.5/debug/test-strcpy_chk.c. */
> #define GLIBC25___STRCPY_CHK(soname,fnname) \
>
>
> ------------------------------------------------------------------------------
> Come build with us! The BlackBerry(R) Developer Conference in SF, CA
> is the only developer event you need to attend this year. Jumpstart your
> developing skills, take BlackBerry mobile applications to market and stay
> ahead of the curve. Join us from November 9 - 12, 2009. Register now!
> http://p.sf.net/sfu/devconference
> _______________________________________________
> Valgrind-developers mailing list
> Val...@li...
> https://lists.sourceforge.net/lists/listinfo/valgrind-developers
>
|
|
From: Bart V. A. <bar...@gm...> - 2009-11-14 08:29:39
|
Nightly build on cellbuzz-native ( cellbuzz, ppc64, Fedora 7, native ) Started at 2009-11-14 02:00:05 EST Ended at 2009-11-14 03:29:14 EST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 449 tests, 45 stderr failures, 10 stdout failures, 0 post failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cases-full (stderr) memcheck/tests/leak-cases-summary (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/linux/timerfd-syscall (stdout) memcheck/tests/linux-syscalls-2007 (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stdout) memcheck/tests/wrap8 (stderr) none/tests/empty-exe (stderr) none/tests/linux/mremap (stderr) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-vmx (stdout) none/tests/ppc32/round (stdout) none/tests/ppc32/test_gx (stdout) none/tests/ppc64/jm-fp (stdout) none/tests/ppc64/jm-vmx (stdout) none/tests/ppc64/round (stdout) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) none/tests/shell_zerolength (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/tc23_bogus_condwait (stderr) exp-ptrcheck/tests/bad_percentify (stderr) exp-ptrcheck/tests/base (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/fp (stderr) exp-ptrcheck/tests/globalerr (stderr) exp-ptrcheck/tests/hackedbz2 (stderr) exp-ptrcheck/tests/hp_bounds (stderr) exp-ptrcheck/tests/hp_dangle (stderr) exp-ptrcheck/tests/hsg (stderr) exp-ptrcheck/tests/justify (stderr) exp-ptrcheck/tests/partial_bad (stderr) exp-ptrcheck/tests/partial_good (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) exp-ptrcheck/tests/realloc (stderr) exp-ptrcheck/tests/stackerr (stderr) exp-ptrcheck/tests/strcpy (stderr) exp-ptrcheck/tests/supp (stderr) exp-ptrcheck/tests/tricky (stderr) exp-ptrcheck/tests/unaligned (stderr) exp-ptrcheck/tests/zero (stderr) |