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
(1) |
|
3
(1) |
4
|
5
|
6
|
7
|
8
|
9
|
|
10
|
11
(4) |
12
(5) |
13
(2) |
14
(6) |
15
(2) |
16
(4) |
|
17
|
18
(2) |
19
|
20
(1) |
21
(4) |
22
|
23
|
|
24
|
25
|
26
(8) |
27
|
28
|
29
(2) |
30
|
|
From: Ivo R. <ir...@so...> - 2018-06-26 20:50:03
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=a9006c7e929967ddb298bc1be676245b21739deb commit a9006c7e929967ddb298bc1be676245b21739deb Author: Ivo Raisr <iv...@iv...> Date: Tue Jun 26 19:17:23 2018 +0200 Follow up to changeset 410d736a9928f535e2591c9d5f32e8e0941f96d8. Fixes BZ#390471. Patch by: Matthias Schwarzott <zz...@ge...> Diff: --- coregrind/m_errormgr.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/coregrind/m_errormgr.c b/coregrind/m_errormgr.c index 00ffc7a..3d577e5 100644 --- a/coregrind/m_errormgr.c +++ b/coregrind/m_errormgr.c @@ -1205,8 +1205,8 @@ static Bool is_simple_str (const HChar *s) /* buf contains the raw name of a caller, supposedly either fun:some_function_name or obj:some_object_name or - fun:some_file_name or - fun:some_file_name:line# or + src:some_file_name or + src:some_file_name:line# or ... Set p->ty and p->name accordingly. p->name is allocated and set to the string |
|
From: Carl L. <ce...@us...> - 2018-06-26 15:50:33
|
On Tue, 2018-06-26 at 08:12 -0700, Bart Van Assche wrote: > On 06/26/18 07:53, Carl Love wrote: > > THIS URL CONTAINS MALICIOUS CODE AND HAS BEEN REMOVED. > > Where does the above message come from? Has that message perhaps > been > generated by a brain-dead SourceForge administrative script? > > Bart. Bart: Took me a while to figure out what you might be looking at. Hmm, looking at the email I received for the git push that I did, I see there is a link added to the top of the email. Not sure where it comes from. It was not part of the commit message. The link is to git://sourceware.org / valgrind.git / commit. The link is basically pointing to the top commit message in the Valgrind git tree. Not sure why it comes up as a URL containing malicous code?? Carl Love |
|
From: Matthias S. <zz...@ge...> - 2018-06-26 15:35:09
|
Am 26.06.2018 um 06:36 schrieb Ivo Raisr: > https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=410d736a9928f535e2591c9d5f32e8e0941f96d8 > > commit 410d736a9928f535e2591c9d5f32e8e0941f96d8 > Author: Ivo Raisr <iv...@iv...> > Date: Mon Jun 25 21:52:08 2018 +0200 > > Ability to add suppressions based on source file name and line number. > > Fixes BZ#390471. > Patch based on work by: Jeff Frontz <jef...@gm...> and Joseph M Link. > > Diff: Hi Ivo, the following comment looks wrong. See below > --- > NEWS | 2 + > coregrind/m_errormgr.c | 64 ++++++++++++++++++++++------- > docs/xml/manual-core.xml | 32 +++++++++++---- > memcheck/tests/Makefile.am | 2 + > memcheck/tests/suppsrc_lineno.stderr.exp | 10 +++++ > memcheck/tests/suppsrc_lineno.stdout.exp | 0 > memcheck/tests/suppsrc_lineno.supp | 13 ++++++ > memcheck/tests/suppsrc_lineno.vgtest | 2 + > memcheck/tests/suppsrc_sanlineno.stderr.exp | 0 > memcheck/tests/suppsrc_sanlineno.stdout.exp | 0 > memcheck/tests/suppsrc_sanlineno.supp | 6 +++ > memcheck/tests/suppsrc_sanlineno.vgtest | 2 + > 12 files changed, 111 insertions(+), 22 deletions(-) > [...] > diff --git a/coregrind/m_errormgr.c b/coregrind/m_errormgr.c > index 38e6769..00ffc7a 100644 > --- a/coregrind/m_errormgr.c > +++ b/coregrind/m_errormgr.c [...] > @@ -1203,10 +1205,13 @@ static Bool is_simple_str (const HChar *s) > /* buf contains the raw name of a caller, supposedly either > fun:some_function_name or > obj:some_object_name or > + fun:some_file_name or > + fun:some_file_name:line# or According to what I read in the rest of the commit, this should be "src:some_file_name" and "src:some_file_name:line#" instead of fun:*. Regards Matthias |
|
From: Ivo R. <iv...@iv...> - 2018-06-26 15:30:58
|
> > diff --git a/coregrind/m_errormgr.c b/coregrind/m_errormgr.c > > index 38e6769..00ffc7a 100644 > > --- a/coregrind/m_errormgr.c > > +++ b/coregrind/m_errormgr.c > [...] > > @@ -1203,10 +1205,13 @@ static Bool is_simple_str (const HChar *s) > > /* buf contains the raw name of a caller, supposedly either > > fun:some_function_name or > > obj:some_object_name or > > + fun:some_file_name or > > + fun:some_file_name:line# or > According to what I read in the rest of the commit, this should be > "src:some_file_name" and "src:some_file_name:line#" instead of fun:*. Spot on! Excellent work here, Matthias. I will fix that this evening. I. |
|
From: Bart V. A. <bar...@wd...> - 2018-06-26 15:12:36
|
On 06/26/18 07:53, Carl Love wrote: > THIS URL CONTAINS MALICIOUS CODE AND HAS BEEN REMOVED. Where does the above message come from? Has that message perhaps been generated by a brain-dead SourceForge administrative script? Bart. |
|
From: Carl L. <ca...@so...> - 2018-06-26 14:52:24
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=3df8d81f000a47c02a289ac9f4ba64fc4df9077e commit 3df8d81f000a47c02a289ac9f4ba64fc4df9077e Author: Carl Love <ca...@us...> Date: Tue Jun 26 09:51:11 2018 -0500 PPC32, update expected results for jm_vec_isa_2_07.c. Add missing mtvsrwa, mtfprd, mtvrwa, mtvrd results. Signed-off-by: Carl Love <ca...@us...> Diff: --- none/tests/ppc32/jm_vec_isa_2_07.stdout.exp | 42 ++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/none/tests/ppc32/jm_vec_isa_2_07.stdout.exp b/none/tests/ppc32/jm_vec_isa_2_07.stdout.exp index 0c27edf..26c9166 100644 --- a/none/tests/ppc32/jm_vec_isa_2_07.stdout.exp +++ b/none/tests/ppc32/jm_vec_isa_2_07.stdout.exp @@ -48,6 +48,46 @@ mtfprwa: 00000000 => 0000000000000000 mtfprwa: 00000000 => 0000000000000000 mtfprwa: ffffffff => ffffffffffffffff +mtvsrwa: 05060708 => 0000000005060708 +mtvsrwa: 0e0d0e0f => 000000000e0d0e0f +mtvsrwa: f5f6f7f8 => fffffffff5f6f7f8 +mtvsrwa: fefdfeff => fffffffffefdfeff +mtvsrwa: ffffffff => ffffffffffffffff +mtvsrwa: 00000000 => 0000000000000000 +mtvsrwa: 00000000 => 0000000000000000 +mtvsrwa: 00000000 => 0000000000000000 +mtvsrwa: ffffffff => ffffffffffffffff + +mtfprd: 0102030405060708 => 0000000005060708 +mtfprd: 090a0b0c0e0d0e0f => 000000000e0d0e0f +mtfprd: f1f2f3f4f5f6f7f8 => 00000000f5f6f7f8 +mtfprd: f9fafbfcfefdfeff => 00000000fefdfeff +mtfprd: 00007fffffffffff => 00000000ffffffff +mtfprd: ffff000000000000 => 0000000000000000 +mtfprd: 0000800000000000 => 0000000000000000 +mtfprd: 0000000000000000 => 0000000000000000 +mtfprd: ffffffffffffffff => 00000000ffffffff + +mtvrwa: 05060708 => 0000000005060708 +mtvrwa: 0e0d0e0f => 000000000e0d0e0f +mtvrwa: f5f6f7f8 => fffffffff5f6f7f8 +mtvrwa: fefdfeff => fffffffffefdfeff +mtvrwa: ffffffff => ffffffffffffffff +mtvrwa: 00000000 => 0000000000000000 +mtvrwa: 00000000 => 0000000000000000 +mtvrwa: 00000000 => 0000000000000000 +mtvrwa: ffffffff => ffffffffffffffff + +mtvrd: 0102030405060708 => 0000000005060708 +mtvrd: 090a0b0c0e0d0e0f => 000000000e0d0e0f +mtvrd: f1f2f3f4f5f6f7f8 => 00000000f5f6f7f8 +mtvrd: f9fafbfcfefdfeff => 00000000fefdfeff +mtvrd: 00007fffffffffff => 00000000ffffffff +mtvrd: ffff000000000000 => 0000000000000000 +mtvrd: 0000800000000000 => 0000000000000000 +mtvrd: 0000000000000000 => 0000000000000000 +mtvrd: ffffffffffffffff => 00000000ffffffff + vaddudm: 0102030405060708 @@ 0102030405060708 ==> 020406080a0c0e10 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 121416181c1a1c1e vaddudm: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> f2f4f6f8fafcff00 @@ -1277,4 +1317,4 @@ vsubeuqm: 00008000000000000000000000000000 @@ 00007fffffffffffffff000000000000 @ vsubeuqm: 00008000000000000000000000000000 @@ 00008000000000000000000000000000 @@ f000000000000000 ==> ffffffffffffffffffffffffffffffff vsubeuqm: 00008000000000000000000000000000 @@ 00008000000000000000000000000000 @@ f000000000000001 ==> 00000000000000000000000000000000 -All done. Tested 66 different instructions +All done. Tested 70 different instructions |
|
From: Carl L. <ca...@so...> - 2018-06-26 14:47:01
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=1f69ed86e994ee152a0e6e3ee7031d0105f02a7e commit 1f69ed86e994ee152a0e6e3ee7031d0105f02a7e Author: Carl Love <ca...@us...> Date: Mon Jun 25 16:24:14 2018 -0500 Fix ppc32 results for test_isa_2_06_part3.c. The ppc32 results were not updated when the xvnegsp instruction support was added. Add the xvnegsp 32-bit results to ppc/test_isa_2_06_part3.stdout.exp. Signed-off-by: Carl Love <ca...@us...> Diff: --- none/tests/ppc32/test_isa_2_06_part3.stdout.exp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/none/tests/ppc32/test_isa_2_06_part3.stdout.exp b/none/tests/ppc32/test_isa_2_06_part3.stdout.exp index d83a8c3..15fabc6 100644 --- a/none/tests/ppc32/test_isa_2_06_part3.stdout.exp +++ b/none/tests/ppc32/test_isa_2_06_part3.stdout.exp @@ -310,6 +310,12 @@ Test VSX vector and scalar single argument instructions #8: xvnabsdp nabs(41382511a2000000) = c1382511a2000000; nabs(40312ef5a9300000) = c0312ef5a9300000 #9: xvnabsdp nabs(40514bf5d2300000) = c0514bf5d2300000; nabs(40976bf982440000) = c0976bf982440000 +#0: xvnegsp neg(3ec00000) = bec00000; neg(42780000) = c2780000; neg(00000000) = 80000000; neg(7f800000) = ff800000 +#1: xvnegsp neg(00000000) = 80000000; neg(00000000) = 80000000; neg(80000000) = 00000000; neg(7f800000) = ff800000 +#2: xvnegsp neg(ff800000) = 7f800000; neg(7fbfffff) = ffbfffff; neg(ffbfffff) = 7fbfffff; neg(7fc00000) = ffc00000 +#3: xvnegsp neg(ffc00000) = 7fc00000; neg(80000000) = 00000000; neg(c683287b) = 4683287b; neg(49192c2d) = c9192c2d +#4: xvnegsp neg(49c1288d) = c9c1288d; neg(418977ad) = c18977ad; neg(428a5faf) = c28a5faf; neg(44bb5fcc) = c4bb5fcc + #0: xvnegdp neg(3fd8000000000000) = bfd8000000000000; neg(404f000000000000) = c04f000000000000 #1: xvnegdp neg(0018000000b77501) = 8018000000b77501; neg(7fe800000000051b) = ffe800000000051b #2: xvnegdp neg(0123214569900000) = 8123214569900000; neg(0000000000000000) = 8000000000000000 |
|
From: Ivo R. <ir...@so...> - 2018-06-26 05:03:35
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=410d736a9928f535e2591c9d5f32e8e0941f96d8 commit 410d736a9928f535e2591c9d5f32e8e0941f96d8 Author: Ivo Raisr <iv...@iv...> Date: Mon Jun 25 21:52:08 2018 +0200 Ability to add suppressions based on source file name and line number. Fixes BZ#390471. Patch based on work by: Jeff Frontz <jef...@gm...> and Joseph M Link. Diff: --- NEWS | 2 + coregrind/m_errormgr.c | 64 ++++++++++++++++++++++------- docs/xml/manual-core.xml | 32 +++++++++++---- memcheck/tests/Makefile.am | 2 + memcheck/tests/suppsrc_lineno.stderr.exp | 10 +++++ memcheck/tests/suppsrc_lineno.stdout.exp | 0 memcheck/tests/suppsrc_lineno.supp | 13 ++++++ memcheck/tests/suppsrc_lineno.vgtest | 2 + memcheck/tests/suppsrc_sanlineno.stderr.exp | 0 memcheck/tests/suppsrc_sanlineno.stdout.exp | 0 memcheck/tests/suppsrc_sanlineno.supp | 6 +++ memcheck/tests/suppsrc_sanlineno.vgtest | 2 + 12 files changed, 111 insertions(+), 22 deletions(-) diff --git a/NEWS b/NEWS index 0f15056..2e13004 100644 --- a/NEWS +++ b/NEWS @@ -18,6 +18,7 @@ support for X86/macOS 10.13, AMD64/macOS 10.13. (e.g. memory leaks) to include file/line info for code that has been dlclose'd (or similar). See user manual for more information and known limitations. +* Ability to specify suppressions based on source file name and line number. * ================== PLATFORM CHANGES ================= @@ -105,6 +106,7 @@ where XXXXXX is the bug number as listed below. 388862 Add replacements for wmemchr and wcsnlen on Linux 389373 exp-sgcheck the 'impossible' happened as Ist_LoadG is not instrumented 389065 valgrind meets gcc flag -Wlogical-op +390471 suppression by specification of source-file line number 390723 make xtree dump files world wide readable, similar to log files 391861 Massif Assertion 'n_ips >= 1 && n_ips <= VG_(clo_backtrace_size)' 392449 callgrind not clearing the number of calls properly diff --git a/coregrind/m_errormgr.c b/coregrind/m_errormgr.c index 38e6769..00ffc7a 100644 --- a/coregrind/m_errormgr.c +++ b/coregrind/m_errormgr.c @@ -205,7 +205,8 @@ typedef NoName, /* Error case */ ObjName, /* Name is of an shared object file. */ FunName, /* Name is of a function. */ - DotDotDot /* Frame-level wildcard */ + DotDotDot, /* Frame-level wildcard */ + SrcName /* Name is of a src file. */ } SuppLocTy; @@ -215,6 +216,7 @@ typedef Bool name_is_simple_str; /* True if name is a string without '?' and '*' wildcard characters. */ HChar* name; /* NULL for NoName and DotDotDot */ + UInt lineno; /* Valid for SrcName. */ } SuppLoc; @@ -1203,10 +1205,13 @@ static Bool is_simple_str (const HChar *s) /* buf contains the raw name of a caller, supposedly either fun:some_function_name or obj:some_object_name or + fun:some_file_name or + fun:some_file_name:line# or ... Set p->ty and p->name accordingly. p->name is allocated and set to the string - after the descriptor (fun: or obj:) part. + after the descriptor (fun:, obj:, or src: san line#) part. + p->lineno is set to non-zero if line# specified; 0 otherwise. Returns False if failed. */ static Bool setLocationTy ( SuppLoc* p, const HChar *buf ) @@ -1223,6 +1228,19 @@ static Bool setLocationTy ( SuppLoc* p, const HChar *buf ) p->ty = ObjName; return True; } + if (VG_(strncmp)(buf, "src:", 4) == 0) { + p->name = VG_(strdup)("errormgr.sLTy.3", buf+4); + p->name_is_simple_str = is_simple_str (p->name); + p->ty = SrcName; + HChar *s = VG_(strchr)(p->name, ':'); + if (s != NULL) { + *s++ = '\0'; // trim colon + p->lineno = (UInt) VG_(strtoll10)(s, NULL); + } else { + p->lineno = 0; + } + return True; + } if (VG_(strcmp)(buf, "...") == 0) { p->name = NULL; p->name_is_simple_str = False; @@ -1230,7 +1248,7 @@ static Bool setLocationTy ( SuppLoc* p, const HChar *buf ) return True; } VG_(printf)("location should be \"...\", or should start " - "with \"fun:\" or \"obj:\"\n"); + "with \"fun:\", \"obj:\", or \"src:\"\n"); return False; } @@ -1405,7 +1423,7 @@ static void load_one_suppressions_file ( Int clo_suppressions_i ) break; if (!setLocationTy(&(tmp_callers[i]), buf)) BOMB("location should be \"...\", or should start " - "with \"fun:\" or \"obj:\""); + "with \"fun:\", \"obj:\", or \"src:\""); i++; } @@ -1421,8 +1439,10 @@ static void load_one_suppressions_file ( Int clo_suppressions_i ) // level wildcards. vg_assert(i > 0); // guaranteed by frame-descriptor reading loop for (j = 0; j < i; j++) { - if (tmp_callers[j].ty == FunName || tmp_callers[j].ty == ObjName) + if (tmp_callers[j].ty == FunName || tmp_callers[j].ty == ObjName || + tmp_callers[j].ty == SrcName) { break; + } vg_assert(tmp_callers[j].ty == DotDotDot); } vg_assert(j >= 0 && j <= i); @@ -1812,7 +1832,8 @@ static Bool supp_pattEQinp ( const void* supplocV, const void* addrV, { const SuppLoc* supploc = (const SuppLoc*)supplocV; /* PATTERN */ IPtoFunOrObjCompleter* ip2fo = (IPtoFunOrObjCompleter*)inputCompleterV; - HChar* funobj_name; // Fun or Obj name. + const HChar* funobjsrc_name; // Fun, Obj, or src file name. + UInt src_lineno; Bool ret; expandInput(ip2fo, ixInput); @@ -1828,27 +1849,42 @@ static Bool supp_pattEQinp ( const void* supplocV, const void* addrV, this can't happen. */ vg_assert(0); case ObjName: - funobj_name = foComplete(ip2fo, ixInput, False /*needFun*/); + funobjsrc_name = foComplete(ip2fo, ixInput, False /*needFun*/); break; case FunName: - funobj_name = foComplete(ip2fo, ixInput, True /*needFun*/); + funobjsrc_name = foComplete(ip2fo, ixInput, True /*needFun*/); + break; + case SrcName: { + const HChar* src_dirname; // placeholder only + ret = VG_(get_filename_linenum)(VG_(current_DiEpoch)(), + ip2fo->ips[ixInput], &funobjsrc_name, &src_dirname, &src_lineno); + if (!ret) { + /* No file name found for location so no way this is a match. */ + return ret; + } break; + } default: vg_assert(0); } - /* So now we have the function or object name in funobj_name, and + /* So now we have the function or object name in funobjsrc_name, and the pattern (at the character level) to match against is in supploc->name. Hence (and leading to a re-entrant call of VG_(generic_match) if there is a wildcard character): */ if (supploc->name_is_simple_str) - ret = VG_(strcmp) (supploc->name, funobj_name) == 0; + ret = VG_(strcmp) (supploc->name, funobjsrc_name) == 0; else - ret = VG_(string_match)(supploc->name, funobj_name); + ret = VG_(string_match)(supploc->name, funobjsrc_name); + if (ret && supploc->ty == SrcName && supploc->lineno != 0) { + ret = (supploc->lineno == src_lineno); + } if (DEBUG_ERRORMGR) - VG_(printf) ("supp_pattEQinp %s patt %s ixUnput %lu value:%s match:%s\n", - supploc->ty == FunName ? "fun" : "obj", - supploc->name, ixInput, funobj_name, + VG_(printf) ("supp_pattEQinp %s patt %s ixInput %lu value:%s (lineno:%u vs %u) match:%s\n", + supploc->ty == FunName ? "fun" : (supploc->ty == SrcName ? "src" : "obj"), + supploc->name, ixInput, funobjsrc_name, + supploc->ty == SrcName ? supploc->lineno : 0, + supploc->ty == SrcName ? src_lineno : 0, ret ? "yes" : "no"); return ret; } diff --git a/docs/xml/manual-core.xml b/docs/xml/manual-core.xml index 48321ac..0e787d7 100644 --- a/docs/xml/manual-core.xml +++ b/docs/xml/manual-core.xml @@ -460,13 +460,15 @@ tool_name1,tool_name2:suppression_name]]></programlisting> the chain of function calls that led to it. There can be up to 24 of these lines.</para> - <para>Locations may be names of either shared objects or - functions. They begin - <computeroutput>obj:</computeroutput> and - <computeroutput>fun:</computeroutput> respectively. Function and - object names to match against may use the wildcard characters + <para>Locations may be names of either shared objects, functions, + or source lines. They begin with + <computeroutput>obj:</computeroutput>, + <computeroutput>fun:</computeroutput>, or + <computeroutput>src:</computeroutput> respectively. Function, + object, and file names to match against may use the wildcard characters <computeroutput>*</computeroutput> and - <computeroutput>?</computeroutput>.</para> + <computeroutput>?</computeroutput>. Source lines are specified + using the form <filename>filename[:lineNumber]</filename>.</para> <para><command>Important note: </command> C++ function names must be <command>mangled</command>. If you are writing suppressions by @@ -543,9 +545,23 @@ locations is regrettable, but is about all you can hope for, given that the X11 libraries shipped on the Linux distro on which this example was made have had their symbol tables removed.</para> +<para>An example of the src: specification, again for the Memcheck tool:</para> + +<programlisting><![CDATA[ +{ + libX11.so.6.2/libX11.so.6.2/libXaw.so.7.0 + Memcheck:Value4 + src:valid.c:321 +}]]></programlisting> + +<para>This suppresses any size-4 uninitialised-value error which occurs +at line 321 in <filename>valid.c</filename>.</para> + <para>Although the above two examples do not make this clear, you can -freely mix <computeroutput>obj:</computeroutput> and -<computeroutput>fun:</computeroutput> lines in a suppression.</para> +freely mix <computeroutput>obj:</computeroutput>, +<computeroutput>fun:</computeroutput>, and +<computeroutput>src:</computeroutput> +lines in a suppression.</para> <para>Finally, here's an example using three frame-level wildcards:</para> diff --git a/memcheck/tests/Makefile.am b/memcheck/tests/Makefile.am index 38b0822..84e4940 100644 --- a/memcheck/tests/Makefile.am +++ b/memcheck/tests/Makefile.am @@ -276,6 +276,8 @@ EXTRA_DIST = \ suppfree.stderr.exp suppfree.supp suppfree.vgtest \ suppfreecollision.stderr.exp suppfreecollision.supp suppfreecollision.vgtest \ supponlyobj.stderr.exp supponlyobj.supp supponlyobj.vgtest \ + suppsrc_lineno.stderr.exp suppsrc_lineno.stdout.exp suppsrc_lineno.vgtest \ + suppsrc_sanlineno.stderr.exp suppsrc_sanlineno.stdout.exp suppsrc_sanlineno.vgtest \ suppvarinfo5.stderr.exp suppvarinfo5.supp suppvarinfo5.vgtest \ test-plo-no.vgtest test-plo-no.stdout.exp \ test-plo-no.stderr.exp-le64 test-plo-no.stderr.exp-le32 \ diff --git a/memcheck/tests/suppsrc_lineno.stderr.exp b/memcheck/tests/suppsrc_lineno.stderr.exp new file mode 100644 index 0000000..9ad57cb --- /dev/null +++ b/memcheck/tests/suppsrc_lineno.stderr.exp @@ -0,0 +1,10 @@ +Invalid free() / delete / delete[] / realloc() + at 0x........: free (vg_replace_malloc.c:...) + ... + Address 0x........ is 0 bytes inside a block of size 10 free'd + at 0x........: free (vg_replace_malloc.c:...) + ... + Block was alloc'd at + at 0x........: malloc (vg_replace_malloc.c:...) + ... + diff --git a/memcheck/tests/suppsrc_lineno.stdout.exp b/memcheck/tests/suppsrc_lineno.stdout.exp new file mode 100644 index 0000000..e69de29 diff --git a/memcheck/tests/suppsrc_lineno.supp b/memcheck/tests/suppsrc_lineno.supp new file mode 100644 index 0000000..99b6414 --- /dev/null +++ b/memcheck/tests/suppsrc_lineno.supp @@ -0,0 +1,13 @@ +{ + matching-lineno1 + Memcheck:Free + fun:free + src:suppfree.c:6 +} + +{ + non-matching-lineno2 + Memcheck:Free + fun:free + src:suppfree.c:20 +} diff --git a/memcheck/tests/suppsrc_lineno.vgtest b/memcheck/tests/suppsrc_lineno.vgtest new file mode 100644 index 0000000..ce6188b --- /dev/null +++ b/memcheck/tests/suppsrc_lineno.vgtest @@ -0,0 +1,2 @@ +prog: suppfree +vgopts: --suppressions=suppsrc_lineno.supp -q \ No newline at end of file diff --git a/memcheck/tests/suppsrc_sanlineno.stderr.exp b/memcheck/tests/suppsrc_sanlineno.stderr.exp new file mode 100644 index 0000000..e69de29 diff --git a/memcheck/tests/suppsrc_sanlineno.stdout.exp b/memcheck/tests/suppsrc_sanlineno.stdout.exp new file mode 100644 index 0000000..e69de29 diff --git a/memcheck/tests/suppsrc_sanlineno.supp b/memcheck/tests/suppsrc_sanlineno.supp new file mode 100644 index 0000000..d92319b --- /dev/null +++ b/memcheck/tests/suppsrc_sanlineno.supp @@ -0,0 +1,6 @@ +{ + matching-san-lineno + Memcheck:Free + fun:free + src:suppfree.c +} diff --git a/memcheck/tests/suppsrc_sanlineno.vgtest b/memcheck/tests/suppsrc_sanlineno.vgtest new file mode 100644 index 0000000..ab3b203 --- /dev/null +++ b/memcheck/tests/suppsrc_sanlineno.vgtest @@ -0,0 +1,2 @@ +prog: suppfree +vgopts: --suppressions=suppsrc_sanlineno.supp -q \ No newline at end of file |