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
(5) |
|
2
(2) |
3
(3) |
4
(2) |
5
(4) |
6
(4) |
7
(1) |
8
|
|
9
|
10
(1) |
11
|
12
(3) |
13
(2) |
14
(2) |
15
|
|
16
|
17
|
18
|
19
(2) |
20
(10) |
21
|
22
(6) |
|
23
(7) |
24
|
25
(2) |
26
|
27
(1) |
28
(8) |
29
(2) |
|
30
|
31
|
|
|
|
|
|
|
From: Mark W. <ma...@so...> - 2018-12-06 19:55:25
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=a0d97e88ec6d71239d30a5a4b2b129e094150873 commit a0d97e88ec6d71239d30a5a4b2b129e094150873 Author: Mark Wielaard <ma...@kl...> Date: Thu Dec 6 20:52:22 2018 +0100 Bug 401822 Fix asm constraints for ppc64 jm-vmx jm-insns.c test. The mfvscr and vor instructions in jm-insns.c had a "=vr" constraint. This should have been an "=v" constraint. This resolved assembler warnings and the testcase failing on ppc64le with gcc 8.2 and binutils 2.30. Diff: --- NEWS | 1 + none/tests/ppc32/jm-insns.c | 82 ++++++++++++++++++++++----------------------- 2 files changed, 42 insertions(+), 41 deletions(-) diff --git a/NEWS b/NEWS index edf0f72..e6770cf 100644 --- a/NEWS +++ b/NEWS @@ -61,6 +61,7 @@ where XXXXXX is the bug number as listed below. 385411 s390x: z13 vector floating-point instructions not implemented 401578 drd: crashes sometimes on fork() 401627 memcheck errors with glibc avx2 optimized wcsncmp +401822 none/tests/ppc64/jm-vmx fails and produces assembler warnings Release 3.14.0 (9 October 2018) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/none/tests/ppc32/jm-insns.c b/none/tests/ppc32/jm-insns.c index e1a7da9..be02425 100644 --- a/none/tests/ppc32/jm-insns.c +++ b/none/tests/ppc32/jm-insns.c @@ -6269,7 +6269,7 @@ static void test_av_int_one_arg (const char* name, test_func_t func, for (i=0; i<nb_viargs; i++) { /* Save flags */ __asm__ __volatile__ ("mfcr %0" : "=r" (tmpcr)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (tmpvscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (tmpvscr)); vec_in = (vector unsigned int)viargs[i]; vec_out = (vector unsigned int){ 0,0,0,0 }; @@ -6287,11 +6287,11 @@ static void test_av_int_one_arg (const char* name, test_func_t func, (*func)(); // retrieve output <- r17 - __asm__ __volatile__ ("vor %0,17,17" : "=vr" (vec_out)); + __asm__ __volatile__ ("vor %0,17,17" : "=v" (vec_out)); // get CR,VSCR flags __asm__ __volatile__ ("mfcr %0" : "=r" (flags)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (vscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (vscr)); /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); @@ -6333,7 +6333,7 @@ static void test_av_int_two_args (const char* name, test_func_t func, /* Save flags */ __asm__ __volatile__ ("mfcr %0" : "=r" (tmpcr)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (tmpvscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (tmpvscr)); // reset VSCR and CR vscr = (vector unsigned int){ 0,0,0,DEFAULT_VSCR }; @@ -6349,11 +6349,11 @@ static void test_av_int_two_args (const char* name, test_func_t func, (*func)(); // retrieve output <- r17 - __asm__ __volatile__ ("vor %0,17,17" : "=vr" (vec_out)); + __asm__ __volatile__ ("vor %0,17,17" : "=v" (vec_out)); // get CR,VSCR flags __asm__ __volatile__ ("mfcr %0" : "=r" (flags)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (vscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (vscr)); /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); @@ -6401,7 +6401,7 @@ static void test_av_int_three_args (const char* name, test_func_t func, /* Save flags */ __asm__ __volatile__ ("mfcr %0" : "=r" (tmpcr)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (tmpvscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (tmpvscr)); // reset VSCR and CR vscr = (vector unsigned int){ 0,0,0,DEFAULT_VSCR }; @@ -6418,11 +6418,11 @@ static void test_av_int_three_args (const char* name, test_func_t func, (*func)(); // retrieve output <- r17 - __asm__ __volatile__ ("vor %0,17,17" : "=vr" (vec_out)); + __asm__ __volatile__ ("vor %0,17,17" : "=v" (vec_out)); // get CR,VSCR flags __asm__ __volatile__ ("mfcr %0" : "=r" (flags)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (vscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (vscr)); /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); @@ -6475,7 +6475,7 @@ static void vs128_cb (const char* name, test_func_t func, /* Save flags */ __asm__ __volatile__ ("mfcr %0" : "=r" (tmpcr)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (tmpvscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (tmpvscr)); // reset VSCR and CR vscr = (vector unsigned int){ 0,0,0,DEFAULT_VSCR }; @@ -6491,11 +6491,11 @@ static void vs128_cb (const char* name, test_func_t func, (*func)(); // retrieve output <- r17 - __asm__ __volatile__ ("vor %0,17,17" : "=vr" (vec_out)); + __asm__ __volatile__ ("vor %0,17,17" : "=v" (vec_out)); // get CR,VSCR flags __asm__ __volatile__ ("mfcr %0" : "=r" (flags)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (vscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (vscr)); /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); @@ -6548,7 +6548,7 @@ static void vsplt_cb (const char* name, test_func_t func_IN, /* Save flags */ __asm__ __volatile__ ("mfcr %0" : "=r" (tmpcr)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (tmpvscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (tmpvscr)); // reset VSCR and CR vscr = (vector unsigned int){ 0,0,0,DEFAULT_VSCR }; @@ -6563,11 +6563,11 @@ static void vsplt_cb (const char* name, test_func_t func_IN, (*func)(); // retrieve output <- r17 - __asm__ __volatile__ ("vor %0,17,17" : "=vr" (vec_out)); + __asm__ __volatile__ ("vor %0,17,17" : "=v" (vec_out)); // get CR,VSCR flags __asm__ __volatile__ ("mfcr %0" : "=r" (flags)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (vscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (vscr)); /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); @@ -6615,7 +6615,7 @@ static void vspltis_cb (const char* name, test_func_t func_IN, /* Save flags */ __asm__ __volatile__ ("mfcr %0" : "=r" (tmpcr)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (tmpvscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (tmpvscr)); // reset VSCR and CR vscr = (vector unsigned int){ 0,0,0,DEFAULT_VSCR }; @@ -6627,11 +6627,11 @@ static void vspltis_cb (const char* name, test_func_t func_IN, (*func)(); // retrieve output <- r17 - __asm__ __volatile__ ("vor %0,17,17" : "=vr" (vec_out)); + __asm__ __volatile__ ("vor %0,17,17" : "=v" (vec_out)); // get CR,VSCR flags __asm__ __volatile__ ("mfcr %0" : "=r" (flags)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (vscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (vscr)); /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); @@ -6677,7 +6677,7 @@ static void vsldoi_cb (const char* name, test_func_t func_IN, /* Save flags */ __asm__ __volatile__ ("mfcr %0" : "=r" (tmpcr)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (tmpvscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (tmpvscr)); // reset VSCR and CR vscr = (vector unsigned int){ 0,0,0,DEFAULT_VSCR }; @@ -6693,11 +6693,11 @@ static void vsldoi_cb (const char* name, test_func_t func_IN, (*func)(); // retrieve output <- r17 - __asm__ __volatile__ ("vor %0,17,17" : "=vr" (vec_out)); + __asm__ __volatile__ ("vor %0,17,17" : "=v" (vec_out)); // get CR,VSCR flags __asm__ __volatile__ ("mfcr %0" : "=r" (flags)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (vscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (vscr)); /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); @@ -6750,7 +6750,7 @@ static void lvs_cb (const char *name, test_func_t func, /* Save flags */ __asm__ __volatile__ ("mfcr %0" : "=r" (tmpcr)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (tmpvscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (tmpvscr)); // reset VSCR and CR vscr = (vector unsigned int){ 0,0,0,DEFAULT_VSCR }; @@ -6762,11 +6762,11 @@ static void lvs_cb (const char *name, test_func_t func, (*func)(); // retrieve output <- r17 - __asm__ __volatile__ ("vor %0,17,17" : "=vr" (vec_out)); + __asm__ __volatile__ ("vor %0,17,17" : "=v" (vec_out)); // get CR,VSCR flags __asm__ __volatile__ ("mfcr %0" : "=r" (flags)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (vscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (vscr)); /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); @@ -6870,7 +6870,7 @@ static void test_av_int_ld_two_regs (const char *name, /* Save flags */ __asm__ __volatile__ ("mfcr %0" : "=r" (tmpcr)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (tmpvscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (tmpvscr)); // reset VSCR and CR vscr = (vector unsigned int){ 0,0,0,DEFAULT_VSCR }; @@ -6882,11 +6882,11 @@ static void test_av_int_ld_two_regs (const char *name, (*func)(); // retrieve output <- r17 - __asm__ __volatile__ ("vor %0,17,17" : "=vr" (vec_out)); + __asm__ __volatile__ ("vor %0,17,17" : "=v" (vec_out)); // get CR,VSCR flags __asm__ __volatile__ ("mfcr %0" : "=r" (flags)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (vscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (vscr)); /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); @@ -6956,7 +6956,7 @@ static void test_av_int_st_three_regs (const char *name, /* Save flags */ __asm__ __volatile__ ("mfcr %0" : "=r" (tmpcr)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (tmpvscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (tmpvscr)); // reset VSCR and CR vscr = (vector unsigned int){ 0,0,0,DEFAULT_VSCR }; @@ -6974,7 +6974,7 @@ static void test_av_int_st_three_regs (const char *name, // get CR,VSCR flags __asm__ __volatile__ ("mfcr %0" : "=r" (flags)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (vscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (vscr)); /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); @@ -7037,7 +7037,7 @@ static void test_av_float_one_arg (const char* name, test_func_t func, /* Save flags */ __asm__ __volatile__ ("mfcr %0" : "=r" (tmpcr)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (tmpvscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (tmpvscr)); // reset VSCR and CR vscr = (vector unsigned int){ 0,0,0,DEFAULT_VSCR }; @@ -7052,11 +7052,11 @@ static void test_av_float_one_arg (const char* name, test_func_t func, (*func)(); // retrieve output <- r17 - __asm__ __volatile__ ("vor %0,17,17" : "=vr" (vec_out)); + __asm__ __volatile__ ("vor %0,17,17" : "=v" (vec_out)); // get CR,VSCR flags __asm__ __volatile__ ("mfcr %0" : "=r" (flags)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (vscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (vscr)); /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); @@ -7099,7 +7099,7 @@ static void test_av_float_two_args (const char* name, test_func_t func, /* Save flags */ __asm__ __volatile__ ("mfcr %0" : "=r" (tmpcr)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (tmpvscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (tmpvscr)); // reset VSCR and CR vscr = (vector unsigned int){ 0,0,0,DEFAULT_VSCR }; @@ -7115,11 +7115,11 @@ static void test_av_float_two_args (const char* name, test_func_t func, (*func)(); // retrieve output <- r17 - __asm__ __volatile__ ("vor %0,17,17" : "=vr" (vec_out)); + __asm__ __volatile__ ("vor %0,17,17" : "=v" (vec_out)); // get CR,VSCR flags __asm__ __volatile__ ("mfcr %0" : "=r" (flags)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (vscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (vscr)); /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); @@ -7168,7 +7168,7 @@ static void test_av_float_three_args (const char* name, test_func_t func, /* Save flags */ __asm__ __volatile__ ("mfcr %0" : "=r" (tmpcr)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (tmpvscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (tmpvscr)); // reset VSCR and CR vscr = (vector unsigned int){ 0,0,0,DEFAULT_VSCR }; @@ -7185,11 +7185,11 @@ static void test_av_float_three_args (const char* name, test_func_t func, (*func)(); // retrieve output <- r17 - __asm__ __volatile__ ("vor %0,17,17" : "=vr" (vec_out)); + __asm__ __volatile__ ("vor %0,17,17" : "=v" (vec_out)); // get CR,VSCR flags __asm__ __volatile__ ("mfcr %0" : "=r" (flags)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (vscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (vscr)); /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); @@ -7276,7 +7276,7 @@ static void vcvt_cb (const char* name, test_func_t func_IN, /* Save flags */ __asm__ __volatile__ ("mfcr %0" : "=r" (tmpcr)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (tmpvscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (tmpvscr)); // reset VSCR and CR vscr = (vector unsigned int){ 0,0,0,DEFAULT_VSCR }; @@ -7291,11 +7291,11 @@ static void vcvt_cb (const char* name, test_func_t func_IN, (*func)(); // retrieve output <- r17 - __asm__ __volatile__ ("vor %0,17,17" : "=vr" (vec_out)); + __asm__ __volatile__ ("vor %0,17,17" : "=v" (vec_out)); // get CR,VSCR flags __asm__ __volatile__ ("mfcr %0" : "=r" (flags)); - __asm__ __volatile__ ("mfvscr %0" : "=vr" (vscr)); + __asm__ __volatile__ ("mfvscr %0" : "=v" (vscr)); /* Restore flags */ __asm__ __volatile__ ("mtcr %0" : : "r" (tmpcr)); |
|
From: Mark W. <ma...@so...> - 2018-12-06 15:41:12
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=cf00e0e59def011e40e2c7993aab23970841dd03 commit cf00e0e59def011e40e2c7993aab23970841dd03 Author: Mark Wielaard <ma...@kl...> Date: Sat Dec 1 23:54:40 2018 +0100 Bug 401627 - Add wcsncmp override and testcase. glibc 2.28 added an avx2 optimized variant of wstrncmp which memcheck cannot proof correct. Add a simple override in vg_replace_strmem.c. Diff: --- NEWS | 1 + memcheck/tests/wcs.c | 7 +++++-- memcheck/tests/wcs.stderr.exp | 1 + shared/vg_replace_strmem.c | 31 +++++++++++++++++++++++++++++++ 4 files changed, 38 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 7b784a8..edf0f72 100644 --- a/NEWS +++ b/NEWS @@ -60,6 +60,7 @@ where XXXXXX is the bug number as listed below. 401112 LLVM 5.0 generates comparison against partially initialized data 385411 s390x: z13 vector floating-point instructions not implemented 401578 drd: crashes sometimes on fork() +401627 memcheck errors with glibc avx2 optimized wcsncmp Release 3.14.0 (9 October 2018) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/memcheck/tests/wcs.c b/memcheck/tests/wcs.c index 15730ad..538304b 100644 --- a/memcheck/tests/wcs.c +++ b/memcheck/tests/wcs.c @@ -1,5 +1,6 @@ -// Uses various wchar_t * functions that have hand written SSE assembly -// implementations in glibc. wcslen, wcscpy, wcscmp, wcsrchr, wcschr. +// Uses various wchar_t * functions that have hand written SSE and/or AVX2 +// assembly implementations in glibc. +// wcslen, wcscpy, wcscmp, wcsncmp, wcsrchr, wcschr. #include <stdio.h> #include <stdlib.h> @@ -18,6 +19,8 @@ int main(int argc, char **argv) c = wcscpy (b, a); fprintf (stderr, "wcscmp equal: %d\n", wcscmp (a, b)); // wcscmp equal: 0 + fprintf (stderr, + "wcsncmp equal: %d\n", wcsncmp (a, b, l)); // wcsncmp equal: 0 d = wcsrchr (a, L'd'); e = wcschr (a, L'd'); diff --git a/memcheck/tests/wcs.stderr.exp b/memcheck/tests/wcs.stderr.exp index 41d74c8..d5b5959 100644 --- a/memcheck/tests/wcs.stderr.exp +++ b/memcheck/tests/wcs.stderr.exp @@ -1,3 +1,4 @@ wcslen: 53 wcscmp equal: 0 +wcsncmp equal: 0 wcsrchr == wcschr: 1 diff --git a/shared/vg_replace_strmem.c b/shared/vg_replace_strmem.c index d6927f0..89a7dcc 100644 --- a/shared/vg_replace_strmem.c +++ b/shared/vg_replace_strmem.c @@ -103,6 +103,7 @@ 20420 STPNCPY 20430 WMEMCHR 20440 WCSNLEN + 20450 WSTRNCMP */ #if defined(VGO_solaris) @@ -1927,6 +1928,36 @@ static inline void my_exit ( int x ) WCSCMP(VG_Z_LIBC_SONAME, wcscmp) #endif +/*---------------------- wcsncmp ----------------------*/ + +// This is a wchar_t equivalent to strncmp. We don't +// have wchar_t available here, but in the GNU C Library +// wchar_t is always 32 bits wide and wcsncmp uses signed +// comparison, not unsigned as in strncmp function. + +#define WCSNCMP(soname, fnname) \ + int VG_REPLACE_FUNCTION_EZU(20450,soname,fnname) \ + ( const Int* s1, const Int* s2, SizeT nmax ); \ + int VG_REPLACE_FUNCTION_EZU(20450,soname,fnname) \ + ( const Int* s1, const Int* s2, SizeT nmax ) \ + { \ + SizeT n = 0; \ + while (True) { \ + if (n >= nmax) return 0; \ + if (*s1 == 0 && *s2 == 0) return 0; \ + if (*s1 == 0) return -1; \ + if (*s2 == 0) return 1; \ + \ + if (*s1 < *s2) return -1; \ + if (*s1 > *s2) return 1; \ + \ + s1++; s2++; n++; \ + } \ + } +#if defined(VGO_linux) + WCSNCMP(VG_Z_LIBC_SONAME, wcsncmp) +#endif + /*---------------------- wcscpy ----------------------*/ // This is a wchar_t equivalent to strcpy. We don't |
|
From: Bart V. A. <bva...@ac...> - 2018-12-06 02:17:28
|
On 12/5/18 8:07 AM, Andreas Arnez wrote: > Subject: [PATCH v3] Add Emacs configuration files v3 has been applied. Thanks for the patch! Bart. |
|
From: Bart V. A. <bva...@so...> - 2018-12-06 02:16:59
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=43699f30f62db2350ed938972a548f91039affb0 commit 43699f30f62db2350ed938972a548f91039affb0 Author: Andreas Arnez <ar...@li...> Date: Wed Dec 5 17:07:05 2018 +0100 Add Emacs configuration files This adds a configuration file ".dir-locals.el" for Emacs to the topmost directory of the Valgrind source tree, and another such file to the directory drd/tests. These files contain per-directory local Emacs variables. The following settings are performed: * The base C style is set to "Linux", indentation is set to 3 columns per level, the use of tabs for indentation is disabled, and the fill column is set to 80. * The source files in drd/tests use 2 instead of 3 columns per indentation level. Diff: --- .dir-locals.el | 18 ++++++++++++++++++ drd/tests/.dir-locals.el | 16 ++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/.dir-locals.el b/.dir-locals.el new file mode 100644 index 0000000..5957ed9 --- /dev/null +++ b/.dir-locals.el @@ -0,0 +1,18 @@ +;; Emacs settings for Valgrind. + +( + ;; Format used to turn a bug number into a URL (when displaying it). + (nil . ((bug-reference-url-format . "http://bugs.kde.org/show_bug.cgi?id=%s"))) + + ;; Standard settings for editing C source files. + (c-mode . ( + ;; Apply the Linux style as a base. + (c-file-style . "linux") + ;; Use spaces instead of tabs for indentation. + (indent-tabs-mode . nil) + ;; Indent 3 columns per level. + (c-basic-offset . 3) + ;; Lines should be limited to 80 columns. + (fill-column . 80) + )) +) diff --git a/drd/tests/.dir-locals.el b/drd/tests/.dir-locals.el new file mode 100644 index 0000000..0d94ded --- /dev/null +++ b/drd/tests/.dir-locals.el @@ -0,0 +1,16 @@ +;; Emacs settings for drd tests. + +( + ;; Standard settings for editing C source files. + (c-mode . ( + ;; Apply the Linux style as a base. + (c-file-style . "linux") + ;; Use spaces instead of tabs for indentation. + (indent-tabs-mode . nil) + ;; Indent 2 columns per level. Note that this differs from + ;; the usual Valgrind style. + (c-basic-offset . 2) + ;; Lines should be limited to 80 columns. + (fill-column . 80) + )) +) |