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
(2) |
2
(2) |
3
|
4
(1) |
5
|
|
6
|
7
(2) |
8
(6) |
9
(2) |
10
|
11
|
12
|
|
13
|
14
|
15
(2) |
16
|
17
(1) |
18
(1) |
19
|
|
20
(1) |
21
(1) |
22
(1) |
23
|
24
|
25
|
26
|
|
27
|
28
|
29
|
30
(1) |
31
|
|
|
|
From: Paul F. <pa...@so...> - 2020-12-04 09:15:20
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=d2d54dbcc74244adfc0c80b40862edf2b82f53b9 commit d2d54dbcc74244adfc0c80b40862edf2b82f53b9 Author: Paul Floyd <pj...@wa...> Date: Fri Dec 4 10:11:55 2020 +0100 Bug 428909 - helgrind: need to intercept duplicate libc definitions for Fedora 33 Diff: --- NEWS | 1 + drd/drd_pthread_intercepts.c | 30 +++++++++--------------------- helgrind/hg_intercepts.c | 33 ++++++++++++++++++++++----------- include/pub_tool_redir.h | 40 ++++++++++++++++++++++++++++++++++++---- 4 files changed, 68 insertions(+), 36 deletions(-) diff --git a/NEWS b/NEWS index c9dfd73155..5861058b16 100644 --- a/NEWS +++ b/NEWS @@ -61,6 +61,7 @@ n-i-bz helgrind: If hg_cli__realloc fails, return NULL. 427870 lmw, lswi and related PowerPC insns aren't allowed on ppc64le 427404 PPC ISA 3.1 support is missing, part 6 429692 unhandled ppc64le-linux syscall: 147 (getsid) +428909 helgrind: need to intercept duplicate libc definitions for Fedora 33 Release 3.16.1 (?? June 2020) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/drd/drd_pthread_intercepts.c b/drd/drd_pthread_intercepts.c index 585aafe22e..28c0de78bc 100644 --- a/drd/drd_pthread_intercepts.c +++ b/drd/drd_pthread_intercepts.c @@ -151,7 +151,11 @@ static drd_rtld_guard_fn DRD_(rtld_bind_clear) = NULL; * @param[in] arg_decl Argument declaration list enclosed in parentheses. * @param[in] argl Argument list enclosed in parentheses. */ -#ifdef VGO_darwin +#if defined(VGO_darwin) +/* + * Note here VGO_darwin is used rather than VG_WRAP_THREAD_FUNCTION_LIBPTHREAD_ONLY + * because of the special-case code adding a function call + */ static int never_true; #define PTH_FUNC(ret_ty, zf, implf, argl_decl, argl) \ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl; \ @@ -164,29 +168,12 @@ static int never_true; fflush(stdout); \ return pth_func_result; \ } -#elif defined(VGO_solaris) -/* On Solaris, libpthread is just a filter library on top of libc. - * Threading and synchronization functions in runtime linker are not - * intercepted. - */ +#elif defined(VG_WRAP_THREAD_FUNCTION_LIBC_ONLY) #define PTH_FUNC(ret_ty, zf, implf, argl_decl, argl) \ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBC_SONAME,zf) argl_decl; \ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBC_SONAME,zf) argl_decl \ { return implf argl; } -#else -#ifdef MUSL_LIBC -/* musl provides a single library that includes pthreads functions. */ -#define PTH_FUNC(ret_ty, zf, implf, argl_decl, argl) \ - ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl; \ - ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl \ - { return implf argl; } -#else -/* - * On Linux, intercept both the libc and the libpthread functions. At - * least glibc 2.32.9000 (Fedora 34) has an implementation of all pthread - * functions in both libc and libpthread. Older glibc versions only have an - * implementation of the pthread functions in libpthread. - */ +#elif defined(VG_WRAP_THREAD_FUNCTION_LIBC_AND_LIBPTHREAD) #define PTH_FUNC(ret_ty, zf, implf, argl_decl, argl) \ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBC_SONAME,zf) argl_decl; \ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBC_SONAME,zf) argl_decl \ @@ -194,7 +181,8 @@ static int never_true; ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl; \ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl \ { return implf argl; } -#endif +#else +# error "Unknown platform/thread wrapping" #endif /** diff --git a/helgrind/hg_intercepts.c b/helgrind/hg_intercepts.c index a10c3a4a3b..2bc89f8a09 100644 --- a/helgrind/hg_intercepts.c +++ b/helgrind/hg_intercepts.c @@ -78,26 +78,37 @@ /*----------------------------------------------------------------*/ #if defined(VGO_solaris) -/* On Solaris, libpthread is just a filter library on top of libc. - * Threading and synchronization functions in runtime linker are not - * intercepted. - */ -#define PTH_FUNC(ret_ty, f, args...) \ - ret_ty I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBC_SONAME,f)(args); \ - ret_ty I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBC_SONAME,f)(args) - /* pthread_t is typedef'd to 'unsigned int' but in DO_CREQ_* macros sizeof(Word) is expected. */ #define CREQ_PTHREAD_T Word #define SEM_ERROR ret #else -#define PTH_FUNC(ret_ty, f, args...) \ - ret_ty I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args); \ - ret_ty I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args) #define CREQ_PTHREAD_T pthread_t #define SEM_ERROR errno #endif /* VGO_solaris */ +#define HG_EXPAND(tok) #tok +#define HG_STR(tok) HG_EXPAND(tok) +#define HG_WEAK_ALIAS(name, aliasname) \ + extern __typeof (name) aliasname __attribute__ ((weak, alias(HG_STR(name)))) + +#if defined(VG_WRAP_THREAD_FUNCTION_LIBPTHREAD_ONLY) +#define PTH_FUNC(ret_ty, f, args...) \ + ret_ty I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args); \ + ret_ty I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args) +#elif defined(VG_WRAP_THREAD_FUNCTION_LIBC_AND_LIBPTHREAD) +#define PTH_FUNC(ret_ty, f, args...) \ + ret_ty I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args); \ + HG_WEAK_ALIAS(I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBPTHREAD_SONAME,f), I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBC_SONAME,f)); \ + ret_ty I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args) +#elif defined(VG_WRAP_THREAD_FUNCTION_LIBC_ONLY) +#define PTH_FUNC(ret_ty, f, args...) \ + ret_ty I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBC_SONAME,f)(args); \ + ret_ty I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBC_SONAME,f)(args) +#else +# error "Unknown platform/thread wrapping" +#endif + // Do a client request. These are macros rather than a functions so // as to avoid having an extra frame in stack traces. diff --git a/include/pub_tool_redir.h b/include/pub_tool_redir.h index bd65a44b45..7c7a76b7dd 100644 --- a/include/pub_tool_redir.h +++ b/include/pub_tool_redir.h @@ -277,11 +277,7 @@ /* --- Soname of the pthreads library. --- */ #if defined(VGO_linux) -# if defined(MUSL_LIBC) -# define VG_Z_LIBPTHREAD_SONAME libcZdZa // libc.* -#else # define VG_Z_LIBPTHREAD_SONAME libpthreadZdsoZd0 // libpthread.so.0 -#endif #elif defined(VGO_darwin) # define VG_Z_LIBPTHREAD_SONAME libSystemZdZaZddylib // libSystem.*.dylib #elif defined(VGO_solaris) @@ -364,6 +360,42 @@ Bool VG_(is_soname_ld_so) (const HChar *soname); +// Some macros to help decide which libraries (libc or libpthread +// or some platform-specific variation of these) should be used +// for wrapping pthread/semaphore functions with DRD and Helgrind +// The possibilities are +// a) only in libpthread +// b) mabye in both libpthread and libc or +// c) only in libc + +// Linux GNU libc is moving from a) to c) +// Fedora 33 has pthread functions in both libc and libpthread +// and at least glibc 2.32 (Fedora 34) has an implementation of all pthread +// functions in both libc and libpthread. Older glibc versions only have an +// implementation of the pthread functions in libpthread. + +// Linux MUSL libc is c) it provides a single library that includes +// pthreads functions. + +// Darwin is a) + +// Solaris is c) libpthread is just a filter library on top of libc. +// Threading and synchronization functions in runtime linker are not +// intercepted. + +// FreeBSD is b) pthread functions are lin libthr but semaphore +// functions are lin libc + +#if defined(VGO_darwin) +#define VG_WRAP_THREAD_FUNCTION_LIBPTHREAD_ONLY +#elif defined(VGO_solaris) || (defined(VGO_linux) && defined(MUSL_LIBC)) +#define VG_WRAP_THREAD_FUNCTION_LIBC_ONLY +#elif defined(VGO_linux) +#define VG_WRAP_THREAD_FUNCTION_LIBC_AND_LIBPTHREAD +#else +# error "Unknown platform" +#endif + #endif // __PUB_TOOL_REDIR_H /*--------------------------------------------------------------------*/ |