From a1364805fc74b5690f763033c0c9b43f27613572 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
Date: Fri, 16 Jul 2021 15:47:08 -0400
Subject: [PATCH] Update helgrind and drd suppression libc and libpthread paths
 in glibc 2.34

glibc 2.34 moved all pthread functions into the main libc library.
And it changed the (in memory) path of the main libc library to
libc.so.6 (before it was libc-2.xx.so).

This breaks various standard suppressions for helgrind and drd.
Fix this by doing a configure check for whether we are using glibc
2.34 by checking whether pthread_create is in libc instead of in
libpthread. If we are using glibc then define GLIBC_LIBC_PATH and
GLIBC_LIBPTHREAD_PATH variables that point to the (regexp) path
of the library that contains all libc functions and pthread functions
(which will be the same path for glibc 2.34+).

Rename glibc-2.34567-NPTL-helgrind.supp to glibc-2.X-helgrind.supp.in
and glibc-2.X-drd.supp to glibc-2.X-drd.supp.in and replace the
GLIBC_LIBC_PATH and GLIBC_LIBPTHREAD_PATH at configure time.

The same could be done for the glibc-2.X.supp.in file, but hasn't
yet because it looks like most suppressions in that file are obsolete.

Upstream-Status: Backport
---
 Makefile.am                                   |  2 +-
 configure.ac                                  | 37 +++++++++++++++++--
 glibc-2.X-drd.supp => glibc-2.X-drd.supp.in   |  6 ++-
 ...elgrind.supp => glibc-2.X-helgrind.supp.in | 16 ++++----
 4 files changed, 47 insertions(+), 14 deletions(-)
 rename glibc-2.X-drd.supp => glibc-2.X-drd.supp.in (97%)
 rename glibc-2.34567-NPTL-helgrind.supp => glibc-2.X-helgrind.supp.in (95%)

Index: valgrind-3.17.0/Makefile.am
===================================================================
--- valgrind-3.17.0.orig/Makefile.am
+++ valgrind-3.17.0/Makefile.am
@@ -41,7 +41,7 @@ SUPP_FILES = \
 	glibc-2.2.supp glibc-2.3.supp glibc-2.4.supp glibc-2.5.supp \
 	glibc-2.6.supp glibc-2.7.supp glibc-2.X.supp.in \
 	xfree-3.supp xfree-4.supp \
-	glibc-2.34567-NPTL-helgrind.supp \
+	glibc-2.X-helgrind.supp \
 	glibc-2.2-LinuxThreads-helgrind.supp \
 	glibc-2.X-drd.supp \
 	darwin9.supp darwin9-drd.supp \
Index: valgrind-3.17.0/configure.ac
===================================================================
--- valgrind-3.17.0.orig/configure.ac
+++ valgrind-3.17.0/configure.ac
@@ -1090,6 +1090,31 @@ if test x$GLIBC_VERSION = x; then
     fi
 fi
 
+# If this is glibc then figure out the generic (in file) libc.so and
+# libpthread.so file paths to use in suppressions. Before 2.34 libpthread
+# was a separate library, afterwards it was merged into libc.so and
+# the library is called libc.so.6 (before it was libc-2.[0-9]+.so).
+# Use this fact to set GLIBC_LIBC_PATH and GLIBC_LIBPTHREAD_PATH.
+case ${GLIBC_VERSION} in
+2*)
+  AC_MSG_CHECKING([whether pthread_create needs libpthread])
+  AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_create])],
+  [
+    AC_MSG_RESULT([no])
+    GLIBC_LIBC_PATH="*/lib*/libc.so.6"
+    GLIBC_LIBPTHREAD_PATH="$GLIBC_LIBC_PATH"
+  ], [
+    AC_MSG_RESULT([yes])
+    GLIBC_LIBC_PATH="*/lib*/libc-2.*so*"
+    GLIBC_LIBPTHREAD_PATH="*/lib*/libpthread-2.*so*"
+  ])
+  ;;
+*)
+  AC_MSG_CHECKING([not glibc...])
+  AC_MSG_RESULT([${GLIBC_VERSION}])
+  ;;
+esac
+
 AC_MSG_CHECKING([the glibc version])
 
 case "${GLIBC_VERSION}" in
@@ -1102,13 +1127,13 @@ case "${GLIBC_VERSION}" in
      2.[[3-6]])
 	AC_MSG_RESULT(${GLIBC_VERSION} family)
         DEFAULT_SUPP="$srcdir/glibc-${GLIBC_VERSION}.supp ${DEFAULT_SUPP}"
-        DEFAULT_SUPP="$srcdir/glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+        DEFAULT_SUPP="$srcdir/glibc-2.X-helgrind.supp ${DEFAULT_SUPP}"
         DEFAULT_SUPP="$srcdir/glibc-2.X-drd.supp ${DEFAULT_SUPP}"
 	;;
      2.[[7-9]])
 	AC_MSG_RESULT(${GLIBC_VERSION} family)
 	DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
-        DEFAULT_SUPP="$srcdir/glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+        DEFAULT_SUPP="$srcdir/glibc-2.X-helgrind.supp ${DEFAULT_SUPP}"
         DEFAULT_SUPP="$srcdir/glibc-2.X-drd.supp ${DEFAULT_SUPP}"
 	;;
      2.10|2.11)
@@ -1116,7 +1141,7 @@ case "${GLIBC_VERSION}" in
 	AC_DEFINE([GLIBC_MANDATORY_STRLEN_REDIRECT], 1,
 		  [Define to 1 if strlen() has been optimized heavily (amd64 glibc >= 2.10)])
 	DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
-        DEFAULT_SUPP="$srcdir/glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+        DEFAULT_SUPP="$srcdir/glibc-2.X-helgrind.supp ${DEFAULT_SUPP}"
         DEFAULT_SUPP="$srcdir/glibc-2.X-drd.supp ${DEFAULT_SUPP}"
 	;;
      2.*)
@@ -1126,7 +1151,7 @@ case "${GLIBC_VERSION}" in
 	AC_DEFINE([GLIBC_MANDATORY_INDEX_AND_STRLEN_REDIRECT], 1,
 		  [Define to 1 if index() and strlen() have been optimized heavily (x86 glibc >= 2.12)])
 	DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
-        DEFAULT_SUPP="$srcdir/glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+        DEFAULT_SUPP="$srcdir/glibc-2.X-helgrind.supp ${DEFAULT_SUPP}"
         DEFAULT_SUPP="$srcdir/glibc-2.X-drd.supp ${DEFAULT_SUPP}"
 	;;
      darwin)
@@ -1157,6 +1182,8 @@ case "${GLIBC_VERSION}" in
 esac
 
 AC_SUBST(GLIBC_VERSION)
+AC_SUBST(GLIBC_LIBC_PATH)
+AC_SUBST(GLIBC_LIBPTHREAD_PATH)
 
 
 if test "$VGCONF_OS" != "solaris"; then
@@ -4910,6 +4937,8 @@ AC_CONFIG_FILES([
    valgrind.spec
    valgrind.pc
    glibc-2.X.supp
+   glibc-2.X-helgrind.supp
+   glibc-2.X-drd.supp
    docs/Makefile 
    tests/Makefile 
    tests/vg_regtest 
Index: valgrind-3.17.0/glibc-2.X-drd.supp
===================================================================
--- valgrind-3.17.0.orig/glibc-2.X-drd.supp
+++ /dev/null
@@ -1,330 +0,0 @@
-#
-# Suppression patterns for ld, the dynamic loader.
-#
-
-# Suppress all data races triggered by ld.
-{
-   drd-ld
-   drd:ConflictingAccess
-   obj:*/lib*/ld-*.so
-}
-
-#
-# Suppression patterns for libc.
-#
-
-# Suppress all data races where the topmost frame is inside libc.so. Although
-# this could hide some real data races, unfortunately this is the only way to
-# not report any false positives on stdio functions. The glibc functions
-# manipulating FILE objects use locking primitives that cannot be intercepted
-# easily. See also the definitions of _IO_lock_lock() etc. in the file
-# nptl/sysdeps/pthread/bits/stdio-lock.h in the glibc source tree.
-{
-   drd-libc-stdio
-   drd:ConflictingAccess
-   obj:*/lib*/libc-*
-}
-{
-   drd-libc-thread-cancellation-test
-   drd:ConflictingAccess
-   fun:write
-}
-{
-   drd-libc-random
-   drd:ConflictingAccess
-   fun:random_r
-   fun:random
-}
-
-#
-# Suppression patterns for libstdc++, the implementation of the standard C++
-# library included with the gcc compiler.
-#
-# Note: several versions of the libstdc++ library (4.2.2, 4.3.2, 4.4.0, 4.5.0
-# and their predecessors) contain an implementation of the std::string class
-# that triggers conflicting memory accesses. See also
-# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40518
-#
-
-# {
-#    drd-libstdc++-std::string::string()
-#    drd:ConflictingAccess
-#    fun:_ZNSsC1ERKSs
-# }
-
-{
-   drd-libstdc++-cxa_guard_release
-   drd:CondErr
-   fun:pthread_cond_broadcast@*
-   fun:__cxa_guard_release
-}
-{
-   drd-libstdc++-std::__ostream_insert()
-   drd:ConflictingAccess
-   fun:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
-   fun:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
-}
-{
-   drd-libstdc++-std::ostream::_M_insert<long>()
-   drd:ConflictingAccess
-   ...
-   fun:_ZNSo9_M_insertIlEERSoT_
-}
-
-
-#
-# Suppression patterns for libpthread.
-#
-
-{
-   drd-libpthread-pthread_create
-   drd:ConflictingAccess
-   ...
-   fun:pthread_create*
-}
-{
-   drd-libpthread-pthread_join
-   drd:ConflictingAccess
-   fun:pthread_join
-   fun:pthread_join
-}
-{
-   drd-libpthread-__deallocate_stack
-   drd:ConflictingAccess
-   ...
-   fun:__deallocate_stack
-}
-{
-   drd-libpthread-__free_stacks
-   drd:ConflictingAccess
-   fun:__free_stacks
-}
-{
-   drd-libpthread-__free_tcb
-   drd:ConflictingAccess
-   ...
-   fun:__free_tcb
-}
-{
-   drd-libpthread-__nptl_deallocate_tsd
-   drd:ConflictingAccess
-   fun:__nptl_deallocate_tsd
-}
-{
-   drd-libpthread-pthread_detach
-   drd:ConflictingAccess
-   fun:pthread_detach
-   fun:pthread_detach
-}
-{
-   drd-libpthread-pthread_once
-   drd:ConflictingAccess
-   fun:pthread_once
-}
-{
-   drd-libpthread-pthread_cancel_init
-   drd:ConflictingAccess
-   fun:pthread_cancel_init
-}
-{
-   drd-libpthread-pthread_cancel
-   drd:ConflictingAccess
-   fun:pthread_cancel
-   fun:pthread_cancel_intercept
-}
-{
-   drd-libpthread-_Unwind_ForcedUnwind
-   drd:ConflictingAccess
-   ...
-   fun:_Unwind_ForcedUnwind
-}
-{
-   drd-libpthread-_Unwind_GetCFA
-   drd:ConflictingAccess
-   fun:_Unwind_GetCFA
-}
-{
-   drd-libpthread-_Unwind_Resume
-   drd:ConflictingAccess
-   ...
-   fun:_Unwind_Resume
-}
-{
-   drd-libpthread-?
-   drd:ConflictingAccess
-   obj:*/lib/libgcc_s.so.1
-}
-{
-   drd-libpthread-nanosleep
-   drd:ConflictingAccess
-   fun:nanosleep
-}
-
-#
-# Suppression patterns for libgomp.
-#
-
-# Unfortunately many statements in libgomp trigger conflicting accesses. It is
-# not clear to me which of these are safe and which ones not. See also
-# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40362
-{
-   drd-libgomp
-   drd:ConflictingAccess
-   obj:/usr/lib*/libgomp.so*
-}
-
-#
-# Suppression patterns for libX11.
-#
-
-{
-   drd-libX11-XCreateFontSet
-   drd:CondErr
-   fun:pthread_cond_init*
-   fun:_XReply
-   fun:XListFontsWithInfo
-   obj:/usr/lib*/libX11.so*
-   fun:XCreateOC
-   fun:XCreateFontSet
-}
-
-#
-# Suppression patterns for libxcb.
-#
-
-{
-   drd-libxcb-xcb_wait_for_reply
-   drd:CondErr
-   ...
-   fun:pthread_cond_destroy*
-   fun:xcb_wait_for_reply
-}
-
-#
-# Suppression patterns for libglib.
-#
-
-{
-   drd-libglib-access-g_threads_got_initialized
-   drd:ConflictingAccess
-   ...
-   fun:g_slice_alloc
-   fun:g_ptr_array_sized_new
-}
-{
-   drd-libglib-access-g_threads_got_initialized
-   drd:ConflictingAccess
-   ...
-   fun:_ZN27QEventDispatcherGlibPrivateC1EP13_GMainContext
-   fun:_ZN20QEventDispatcherGlibC1EP7QObject
-   obj:/usr/lib*/libQtCore.so.4.*
-   obj:/usr/lib*/libQtCore.so.4.*
-}
-{
-   drd-libglib-access-g_mem_initialized
-   drd:ConflictingAccess
-   fun:g_malloc0
-}
-{
-   drd-libglib-g_private_get_posix_impl
-   drd:ConflictingAccess
-   fun:g_private_get_posix_impl
-}
-{
-   drd-libglib-g_private_set_posix_impl
-   drd:ConflictingAccess
-   fun:g_private_set_posix_impl
-}
-{
-   drd-libglib-g_get_language_names
-   drd:ConflictingAccess
-   fun:g_slice_free_chain_with_offset
-}
-{
-   drd-libglib-g_main_context_new
-   drd:ConflictingAccess
-   fun:fcntl
-   obj:/usr/lib*/libglib-*.so*
-   fun:g_main_context_new
-}
-
-#
-# Suppression patterns for libQtCore.
-#
-
-{
-   drd-libQtCore-deref-that-calls-QThreadData-destructor
-   drd:ConflictingAccess
-   fun:_ZN11QThreadDataD1Ev
-   obj:/usr/lib*/libQtCore.so.4.*
-}
-{
-   drd-libQtCore-4.0/4.1-Q_GLOBAL_STATIC-connectionList
-   drd:ConflictingAccess
-   obj:/usr/lib*/libQtCore.so.4.*
-   fun:_ZN11QMetaObject8activateEP7QObjectiiPPv
-   fun:_ZN11QMetaObject8activateEP7QObjectPKS_iPPv
-}
-{
-   drd-libQtCore-QObjectPrivate::clearGuards(QObject*)
-   drd:ConflictingAccess
-   fun:_ZN14QReadWriteLock12lockForWriteEv
-   fun:_ZN14QObjectPrivate11clearGuardsEP7QObject
-   fun:_ZN7QObjectD2Ev
-}
-{
-   drd-libQtCore-QObjectPrivate::clearGuards(QObject*)
-   drd:ConflictingAccess
-   fun:_ZN14QReadWriteLock12lockForWriteEv
-   fun:_ZN12QWriteLocker6relockEv
-   fun:_ZN12QWriteLockerC1EP14QReadWriteLock
-   fun:_ZN14QObjectPrivate11clearGuardsEP7QObject
-   fun:_ZN7QObjectD2Ev
-   fun:_ZN24QAbstractEventDispatcherD2Ev
-   fun:_ZN20QEventDispatcherGlibD0Ev
-}
-{
-   drd-libQtCore-QMutexPool::get(void const*)
-   drd:ConflictingAccess
-   fun:_ZN10QMutexPool3getEPKv
-}
-{
-   drd-libQtCore-qt_gettime_is_monotonic()
-   drd:ConflictingAccess
-   fun:_Z23qt_gettime_is_monotonicv
-}
-
-#
-# Suppression patterns for libboost.
-#
-
-# Suppress the races on boost::once_flag::epoch and on
-# boost::detail::this_thread_epoch. See also the source file
-# boost/thread/pthread/once.hpp in the Boost source tree
-# (https://svn.boost.org/trac/boost/browser/trunk/boost/thread/pthread/once.hpp).
-{
-   drd-libboost-boost::call_once<void (*)()>(boost::once_flag&, void (*)())
-   drd:ConflictingAccess
-   ...
-   fun:_ZN5boost9call_onceIPFvvEEEvRNS_9once_flagET_
-}
-{
-   drd-libboost-boost::detail::get_once_per_thread_epoch()
-   drd:ConflictingAccess
-   fun:_ZN5boost6detail25get_once_per_thread_epochEv
-}
-# Suppress the race reports on boost::detail::current_thread_tls_key. See also
-# https://svn.boost.org/trac/boost/ticket/3526 for more information about why
-# the access pattern of current_thread_tls_key is safe.
-{
-   drd-libboost-boost::detail::get_current_thread_data()
-   drd:ConflictingAccess
-   ...
-   fun:_ZN5boost6detail23get_current_thread_dataEv
-}
-{
-   drd-libboost-boost::detail::set_current_thread_data(boost::detail::thread_data_base*)
-   drd:ConflictingAccess
-   ...
-   fun:_ZN5boost6detail23set_current_thread_dataEPNS0_16thread_data_baseE
-}
Index: valgrind-3.17.0/glibc-2.X-drd.supp.in
===================================================================
--- /dev/null
+++ valgrind-3.17.0/glibc-2.X-drd.supp.in
@@ -0,0 +1,332 @@
+# IMPORTANT: DO NOT EDIT glibc-2.X-drd.supp, as it is as a generated
+# file.  Instead edit glibc-2.X-drd.supp.in.
+#
+# Suppression patterns for ld, the dynamic loader.
+#
+
+# Suppress all data races triggered by ld.
+{
+   drd-ld
+   drd:ConflictingAccess
+   obj:*/lib*/ld*.so*
+}
+
+#
+# Suppression patterns for libc.
+#
+
+# Suppress all data races where the topmost frame is inside libc.so. Although
+# this could hide some real data races, unfortunately this is the only way to
+# not report any false positives on stdio functions. The glibc functions
+# manipulating FILE objects use locking primitives that cannot be intercepted
+# easily. See also the definitions of _IO_lock_lock() etc. in the file
+# nptl/sysdeps/pthread/bits/stdio-lock.h in the glibc source tree.
+{
+   drd-libc-stdio
+   drd:ConflictingAccess
+   obj:@GLIBC_LIBC_PATH@
+}
+{
+   drd-libc-thread-cancellation-test
+   drd:ConflictingAccess
+   fun:write
+}
+{
+   drd-libc-random
+   drd:ConflictingAccess
+   fun:random_r
+   fun:random
+}
+
+#
+# Suppression patterns for libstdc++, the implementation of the standard C++
+# library included with the gcc compiler.
+#
+# Note: several versions of the libstdc++ library (4.2.2, 4.3.2, 4.4.0, 4.5.0
+# and their predecessors) contain an implementation of the std::string class
+# that triggers conflicting memory accesses. See also
+# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40518
+#
+
+# {
+#    drd-libstdc++-std::string::string()
+#    drd:ConflictingAccess
+#    fun:_ZNSsC1ERKSs
+# }
+
+{
+   drd-libstdc++-cxa_guard_release
+   drd:CondErr
+   fun:pthread_cond_broadcast@*
+   fun:__cxa_guard_release
+}
+{
+   drd-libstdc++-std::__ostream_insert()
+   drd:ConflictingAccess
+   fun:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
+   fun:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
+}
+{
+   drd-libstdc++-std::ostream::_M_insert<long>()
+   drd:ConflictingAccess
+   ...
+   fun:_ZNSo9_M_insertIlEERSoT_
+}
+
+
+#
+# Suppression patterns for libpthread.
+#
+
+{
+   drd-libpthread-pthread_create
+   drd:ConflictingAccess
+   ...
+   fun:pthread_create*
+}
+{
+   drd-libpthread-pthread_join
+   drd:ConflictingAccess
+   fun:pthread_join
+   fun:pthread_join
+}
+{
+   drd-libpthread-__deallocate_stack
+   drd:ConflictingAccess
+   ...
+   fun:__deallocate_stack
+}
+{
+   drd-libpthread-__free_stacks
+   drd:ConflictingAccess
+   fun:__free_stacks
+}
+{
+   drd-libpthread-__free_tcb
+   drd:ConflictingAccess
+   ...
+   fun:__free_tcb
+}
+{
+   drd-libpthread-__nptl_deallocate_tsd
+   drd:ConflictingAccess
+   fun:__nptl_deallocate_tsd
+}
+{
+   drd-libpthread-pthread_detach
+   drd:ConflictingAccess
+   fun:pthread_detach
+   fun:pthread_detach
+}
+{
+   drd-libpthread-pthread_once
+   drd:ConflictingAccess
+   fun:pthread_once
+}
+{
+   drd-libpthread-pthread_cancel_init
+   drd:ConflictingAccess
+   fun:pthread_cancel_init
+}
+{
+   drd-libpthread-pthread_cancel
+   drd:ConflictingAccess
+   fun:pthread_cancel
+   fun:pthread_cancel_intercept
+}
+{
+   drd-libpthread-_Unwind_ForcedUnwind
+   drd:ConflictingAccess
+   ...
+   fun:_Unwind_ForcedUnwind
+}
+{
+   drd-libpthread-_Unwind_GetCFA
+   drd:ConflictingAccess
+   fun:_Unwind_GetCFA
+}
+{
+   drd-libpthread-_Unwind_Resume
+   drd:ConflictingAccess
+   ...
+   fun:_Unwind_Resume
+}
+{
+   drd-libpthread-?
+   drd:ConflictingAccess
+   obj:*/lib/libgcc_s.so.1
+}
+{
+   drd-libpthread-nanosleep
+   drd:ConflictingAccess
+   fun:nanosleep
+}
+
+#
+# Suppression patterns for libgomp.
+#
+
+# Unfortunately many statements in libgomp trigger conflicting accesses. It is
+# not clear to me which of these are safe and which ones not. See also
+# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40362
+{
+   drd-libgomp
+   drd:ConflictingAccess
+   obj:/usr/lib*/libgomp.so*
+}
+
+#
+# Suppression patterns for libX11.
+#
+
+{
+   drd-libX11-XCreateFontSet
+   drd:CondErr
+   fun:pthread_cond_init*
+   fun:_XReply
+   fun:XListFontsWithInfo
+   obj:/usr/lib*/libX11.so*
+   fun:XCreateOC
+   fun:XCreateFontSet
+}
+
+#
+# Suppression patterns for libxcb.
+#
+
+{
+   drd-libxcb-xcb_wait_for_reply
+   drd:CondErr
+   ...
+   fun:pthread_cond_destroy*
+   fun:xcb_wait_for_reply
+}
+
+#
+# Suppression patterns for libglib.
+#
+
+{
+   drd-libglib-access-g_threads_got_initialized
+   drd:ConflictingAccess
+   ...
+   fun:g_slice_alloc
+   fun:g_ptr_array_sized_new
+}
+{
+   drd-libglib-access-g_threads_got_initialized
+   drd:ConflictingAccess
+   ...
+   fun:_ZN27QEventDispatcherGlibPrivateC1EP13_GMainContext
+   fun:_ZN20QEventDispatcherGlibC1EP7QObject
+   obj:/usr/lib*/libQtCore.so.4.*
+   obj:/usr/lib*/libQtCore.so.4.*
+}
+{
+   drd-libglib-access-g_mem_initialized
+   drd:ConflictingAccess
+   fun:g_malloc0
+}
+{
+   drd-libglib-g_private_get_posix_impl
+   drd:ConflictingAccess
+   fun:g_private_get_posix_impl
+}
+{
+   drd-libglib-g_private_set_posix_impl
+   drd:ConflictingAccess
+   fun:g_private_set_posix_impl
+}
+{
+   drd-libglib-g_get_language_names
+   drd:ConflictingAccess
+   fun:g_slice_free_chain_with_offset
+}
+{
+   drd-libglib-g_main_context_new
+   drd:ConflictingAccess
+   fun:fcntl
+   obj:/usr/lib*/libglib-*.so*
+   fun:g_main_context_new
+}
+
+#
+# Suppression patterns for libQtCore.
+#
+
+{
+   drd-libQtCore-deref-that-calls-QThreadData-destructor
+   drd:ConflictingAccess
+   fun:_ZN11QThreadDataD1Ev
+   obj:/usr/lib*/libQtCore.so.4.*
+}
+{
+   drd-libQtCore-4.0/4.1-Q_GLOBAL_STATIC-connectionList
+   drd:ConflictingAccess
+   obj:/usr/lib*/libQtCore.so.4.*
+   fun:_ZN11QMetaObject8activateEP7QObjectiiPPv
+   fun:_ZN11QMetaObject8activateEP7QObjectPKS_iPPv
+}
+{
+   drd-libQtCore-QObjectPrivate::clearGuards(QObject*)
+   drd:ConflictingAccess
+   fun:_ZN14QReadWriteLock12lockForWriteEv
+   fun:_ZN14QObjectPrivate11clearGuardsEP7QObject
+   fun:_ZN7QObjectD2Ev
+}
+{
+   drd-libQtCore-QObjectPrivate::clearGuards(QObject*)
+   drd:ConflictingAccess
+   fun:_ZN14QReadWriteLock12lockForWriteEv
+   fun:_ZN12QWriteLocker6relockEv
+   fun:_ZN12QWriteLockerC1EP14QReadWriteLock
+   fun:_ZN14QObjectPrivate11clearGuardsEP7QObject
+   fun:_ZN7QObjectD2Ev
+   fun:_ZN24QAbstractEventDispatcherD2Ev
+   fun:_ZN20QEventDispatcherGlibD0Ev
+}
+{
+   drd-libQtCore-QMutexPool::get(void const*)
+   drd:ConflictingAccess
+   fun:_ZN10QMutexPool3getEPKv
+}
+{
+   drd-libQtCore-qt_gettime_is_monotonic()
+   drd:ConflictingAccess
+   fun:_Z23qt_gettime_is_monotonicv
+}
+
+#
+# Suppression patterns for libboost.
+#
+
+# Suppress the races on boost::once_flag::epoch and on
+# boost::detail::this_thread_epoch. See also the source file
+# boost/thread/pthread/once.hpp in the Boost source tree
+# (https://svn.boost.org/trac/boost/browser/trunk/boost/thread/pthread/once.hpp).
+{
+   drd-libboost-boost::call_once<void (*)()>(boost::once_flag&, void (*)())
+   drd:ConflictingAccess
+   ...
+   fun:_ZN5boost9call_onceIPFvvEEEvRNS_9once_flagET_
+}
+{
+   drd-libboost-boost::detail::get_once_per_thread_epoch()
+   drd:ConflictingAccess
+   fun:_ZN5boost6detail25get_once_per_thread_epochEv
+}
+# Suppress the race reports on boost::detail::current_thread_tls_key. See also
+# https://svn.boost.org/trac/boost/ticket/3526 for more information about why
+# the access pattern of current_thread_tls_key is safe.
+{
+   drd-libboost-boost::detail::get_current_thread_data()
+   drd:ConflictingAccess
+   ...
+   fun:_ZN5boost6detail23get_current_thread_dataEv
+}
+{
+   drd-libboost-boost::detail::set_current_thread_data(boost::detail::thread_data_base*)
+   drd:ConflictingAccess
+   ...
+   fun:_ZN5boost6detail23set_current_thread_dataEPNS0_16thread_data_baseE
+}
Index: valgrind-3.17.0/glibc-2.34567-NPTL-helgrind.supp
===================================================================
--- valgrind-3.17.0.orig/glibc-2.34567-NPTL-helgrind.supp
+++ /dev/null
@@ -1,301 +0,0 @@
-
-# FIXME 22 Jan 09: helgrind-glibc2X-005 overlaps with a lot of
-# other stuff.  They should be removed.
-
-##----------------------------------------------------------------------##
-# Suppressions for the Helgrind tool when using 
-# a glibc-2.{3,4,5,6,7,8,9} system
-
-####################################################
-# glibc-2.X specific
-# These are generic cover-alls which catch a lot of stuff
-# in various combinations of ld, libc and libpthread
-#
-# Note this is heavyhanded and not very clever:
-#
-# - suppress anything that has its top frame in ld.so
-#   That's fine, since it's mostly dynamic linking stuff,
-#   which has various deliberate (harmless) races
-#
-# - suppress anything that has its top frame in libc.so.
-#   This really isn't clever, since it could hide some 
-#   legitimate races.  But the problem is, if we don't do
-#   this, then loads of errors to do with stdio are reported, because
-#   H fails to see glibc's internal locking/unlocking of FILE*s
-#   as required by POSIX.  A better solution is needed.
-#
-# - some of the stdio functions in newer glibc manipulate stdio
-#   FILE*s state through mempcpy, which we intercept, so we also need
-#   to suppress such manipulations.
-
-#{
-#   helgrind-glibc2X-001
-#   Helgrind:Race
-#   obj:*/lib*/ld-2.*so*
-#}
-
-# helgrind-glibc2X-002 was merged into helgrind-glibc2X-001
-
-# helgrind-glibc2X-003 was merged into helgrind-glibc2X-001
-
-{
-   helgrind-glibc2X-004
-   Helgrind:Race
-   obj:*/lib*/libc-2.*so*
-}
-
-{
-   helgrind-glibc-io-xsputn-mempcpy
-   Helgrind:Race
-   fun:__GI_mempcpy
-   fun:_IO_*xsputn*
-   obj:*/lib*/libc-2.*so*
-}
-
-{
-   helgrind-glibc2X-005
-   Helgrind:Race
-   obj:*/lib*/libpthread-2.*so*
-}
-
-# helgrind-glibc2X-006 was merged into helgrind-glibc2X-005
-
-# helgrind-glibc2X-007 was merged into helgrind-glibc2X-001
-
-# helgrind-glibc2X-008 was merged into helgrind-glibc2X-004
-
-# helgrind-glibc2X-009 was merged into helgrind-glibc2X-004
-
-# helgrind-glibc2X-010 was merged into helgrind-glibc2X-001
-
-# helgrind-glibc2X-011 was merged into helgrind-glibc2X-004
-
-# helgrind-glibc2X-012 was merged into helgrind-glibc2X-001
-
-# helgrind-glibc2X-013 was merged into helgrind-glibc2X-001
-
-# helgrind-glibc2X-014 was merged into helgrind-glibc2X-001
-
-# helgrind-glibc2X-015 was merged into helgrind-glibc2X-004
-
-# helgrind-glibc2X-016 was merged into helgrind-glibc2X-004
-
-# These are very ugly.  They are needed to suppress errors inside (eg)
-# NPTL's pthread_cond_signal.  Why only one stack frame -- at least we
-# should see the wrapper calling the real functions, right?
-# Unfortunately, no: the real functions are handwritten assembly (in
-# the glibc-2.5 sources) and does not create a proper stack frame.
-# Therefore it's only one level of unwinding before we're back out in
-# user code rather than the 2 levels you'd expect.
-{
-   helgrind-glibc2X-101
-   Helgrind:Race
-   obj:*/lib*/libpthread-2.*so*
-   fun:pthread_*
-}
-{
-   helgrind-glibc2X-102
-   Helgrind:Race
-   fun:mythread_wrapper
-   obj:*/lib*/libpthread-2.*so*
-}
-{
-   helgrind-glibc2X-103
-   Helgrind:Race
-   fun:pthread_cond_*@@GLIBC_2.*
-}
-{
-   helgrind-glibc2X-104
-   Helgrind:Race
-   fun:__lll_mutex_*
-}
-{
-   helgrind-glibc2X-105
-   Helgrind:Race
-   fun:pthread_rwlock_*lock*
-}
-{
-   helgrind-glibc2X-106
-   Helgrind:Race
-   fun:__lll_lock_wait
-}
-{
-   helgrind-glibc2X-107
-   Helgrind:Race
-   obj:*/lib*/libpthread-2.*so*
-   fun:sem_*
-}
-{
-   helgrind-glibc2X-108
-   Helgrind:Race
-   fun:clone
-}
-{
-   helgrind-glibc2X-109
-   Helgrind:Race
-   fun:start_thread
-}
-{
-   helgrind-glibc2X-110
-   Helgrind:Race
-   obj:*/lib*/libc-2.*so*
-   fun:pthread_*
-}
-{
-   helgrind-glibc2X-111
-   Helgrind:Race
-   fun:__lll_*lock_*
-}
-{
-   helgrind-glibc2X-113
-   Helgrind:Race
-   fun:pthread_barrier_wait*
-}
-
-
-####################################################
-# qt4 specific (GNU mangling)
-#
-{
-   helgrind-qt4---QMutex::lock()-QMutex::lock()
-   Helgrind:Race
-   ...
-   fun:_ZN6QMutex4lockEv
-   fun:_ZN6QMutex4lockEv
-}
-
-{                                                               
-   helgrind-qt4---QMutex::unlock()-QMutex::unlock()
-   Helgrind:Race                                                
-   ...
-   fun:_ZN6QMutex6unlockEv                                      
-   fun:_ZN6QMutex6unlockEv
-}
-
-{
-   helgrind-qt4---pthread_setspecific-QThreadPrivate::start(void*)
-   Helgrind:Race
-   fun:pthread_setspecific
-   fun:_ZN14QThreadPrivate5startEPv
-}
-
-
-####################################################
-# Other stuff.
-#
-# pthread_exit apparently calls some kind of unwind
-# mechanism - maybe to remove some number of frames
-# from the thread's stack, so as to get back to the 
-# outermost frame for the thread?  Anyway..
-
-{
-   helgrind---*Unwind*-...-pthread_exit
-   Helgrind:Race
-   fun:*Unwind*
-   ...
-   fun:pthread_exit
-}
-
-{
-   helgrind---...-*Unwind*-*pthread_unwind*
-   Helgrind:Race
-   ...
-   fun:*Unwind*
-   fun:*pthread_unwind*
-}
-
-{
-   helgrind---...-*Unwind*-*pthread_unwind*
-   Helgrind:Race
-   ...
-   fun:_Unwind*
-   ...
-   fun:_Unwind_Backtrace
-}
-
-
-
-
-####################################################
-# To do with thread stack allocation and deallocation?
-#
-{
-   helgrind---free_stacks-__deallocate_stack
-   Helgrind:Race
-   fun:free_stacks
-   fun:__deallocate_stack
-}
-
-{
-   helgrind---__deallocate_stack-start_thread-clone
-   Helgrind:Race
-   fun:__deallocate_stack
-   fun:start_thread
-   fun:clone
-}
-
-
-####################################################
-# To do with pthread_{set,get}specific
-#
-{
-   helgrind---pthread_setspecific
-   Helgrind:Race
-   fun:pthread_setspecific
-}
-
-{
-   helgrind---pthread_getspecific
-   Helgrind:Race
-   fun:pthread_getspecific
-}
-
-
-####################################################
-# To do with dynamic linking
-#
-# helgrind---ld.so-...-dlsym was merged into helgrind-glibc2X-001
-
-{
-   helgrind---_dl_allocate_tls 
-   Helgrind:Race
-   fun:mempcpy
-   fun:_dl_allocate_tls_init
-   ...
-   fun:pthread_create@@GLIBC_2.2*
-   fun:pthread_create_WRK
-   fun:pthread_create@*
-}
-
-{
-   helgrind---_dl_allocate_tls2
-   Helgrind:Race
-   fun:memcpy
-   fun:__mempcpy_inline
-   fun:_dl_allocate_tls_init
-   ...
-   fun:pthread_create@@GLIBC_2.2*
-   fun:pthread_create_WRK
-   fun:pthread_create@*
-}
-
-####################################################
-# To do with GNU libgomp
-#
-{
-   helgrind---libgomp43-1
-   Helgrind:Race
-   fun:gomp_ordered_sync
-}
-
-{
-   helgrind---libgomp43-1
-   Helgrind:Race
-   fun:gomp_ordered_next
-}
-
-{
-   helgrind---libgomp43-1
-   Helgrind:Race
-   fun:gomp_ordered_last
-}
Index: valgrind-3.17.0/glibc-2.X-helgrind.supp.in
===================================================================
--- /dev/null
+++ valgrind-3.17.0/glibc-2.X-helgrind.supp.in
@@ -0,0 +1,303 @@
+# IMPORTANT: DO NOT EDIT glibc-2.X-helgrind.supp, as it is as a generated
+# file.  Instead edit glibc-2.X-helgrind.supp.in.
+
+# FIXME 22 Jan 09: helgrind-glibc2X-005 overlaps with a lot of
+# other stuff.  They should be removed.
+
+##----------------------------------------------------------------------##
+# Suppressions for the Helgrind tool when using 
+# a glibc-2.{3,4,5,6,7,8,9} system
+
+####################################################
+# glibc-2.X specific
+# These are generic cover-alls which catch a lot of stuff
+# in various combinations of ld, libc and libpthread
+#
+# Note this is heavyhanded and not very clever:
+#
+# - suppress anything that has its top frame in ld.so
+#   That's fine, since it's mostly dynamic linking stuff,
+#   which has various deliberate (harmless) races
+#
+# - suppress anything that has its top frame in libc.so.
+#   This really isn't clever, since it could hide some 
+#   legitimate races.  But the problem is, if we don't do
+#   this, then loads of errors to do with stdio are reported, because
+#   H fails to see glibc's internal locking/unlocking of FILE*s
+#   as required by POSIX.  A better solution is needed.
+#
+# - some of the stdio functions in newer glibc manipulate stdio
+#   FILE*s state through mempcpy, which we intercept, so we also need
+#   to suppress such manipulations.
+
+#{
+#   helgrind-glibc2X-001
+#   Helgrind:Race
+#   obj:*/lib*/ld-2.*so*
+#}
+
+# helgrind-glibc2X-002 was merged into helgrind-glibc2X-001
+
+# helgrind-glibc2X-003 was merged into helgrind-glibc2X-001
+
+{
+   helgrind-glibc2X-004
+   Helgrind:Race
+   obj:@GLIBC_LIBC_PATH@
+}
+
+{
+   helgrind-glibc-io-xsputn-mempcpy
+   Helgrind:Race
+   fun:__GI_mempcpy
+   fun:_IO_*xsputn*
+   obj:@GLIBC_LIBC_PATH@
+}
+
+{
+   helgrind-glibc2X-005
+   Helgrind:Race
+   obj:@GLIBC_LIBPTHREAD_PATH@
+}
+
+# helgrind-glibc2X-006 was merged into helgrind-glibc2X-005
+
+# helgrind-glibc2X-007 was merged into helgrind-glibc2X-001
+
+# helgrind-glibc2X-008 was merged into helgrind-glibc2X-004
+
+# helgrind-glibc2X-009 was merged into helgrind-glibc2X-004
+
+# helgrind-glibc2X-010 was merged into helgrind-glibc2X-001
+
+# helgrind-glibc2X-011 was merged into helgrind-glibc2X-004
+
+# helgrind-glibc2X-012 was merged into helgrind-glibc2X-001
+
+# helgrind-glibc2X-013 was merged into helgrind-glibc2X-001
+
+# helgrind-glibc2X-014 was merged into helgrind-glibc2X-001
+
+# helgrind-glibc2X-015 was merged into helgrind-glibc2X-004
+
+# helgrind-glibc2X-016 was merged into helgrind-glibc2X-004
+
+# These are very ugly.  They are needed to suppress errors inside (eg)
+# NPTL's pthread_cond_signal.  Why only one stack frame -- at least we
+# should see the wrapper calling the real functions, right?
+# Unfortunately, no: the real functions are handwritten assembly (in
+# the glibc-2.5 sources) and does not create a proper stack frame.
+# Therefore it's only one level of unwinding before we're back out in
+# user code rather than the 2 levels you'd expect.
+{
+   helgrind-glibc2X-101
+   Helgrind:Race
+   obj:@GLIBC_LIBPTHREAD_PATH@
+   fun:pthread_*
+}
+{
+   helgrind-glibc2X-102
+   Helgrind:Race
+   fun:mythread_wrapper
+   obj:@GLIBC_LIBPTHREAD_PATH@
+}
+{
+   helgrind-glibc2X-103
+   Helgrind:Race
+   fun:pthread_cond_*@@GLIBC_2.*
+}
+{
+   helgrind-glibc2X-104
+   Helgrind:Race
+   fun:__lll_mutex_*
+}
+{
+   helgrind-glibc2X-105
+   Helgrind:Race
+   fun:pthread_rwlock_*lock*
+}
+{
+   helgrind-glibc2X-106
+   Helgrind:Race
+   fun:__lll_lock_wait
+}
+{
+   helgrind-glibc2X-107
+   Helgrind:Race
+   obj:@GLIBC_LIBPTHREAD_PATH@
+   fun:sem_*
+}
+{
+   helgrind-glibc2X-108
+   Helgrind:Race
+   fun:clone
+}
+{
+   helgrind-glibc2X-109
+   Helgrind:Race
+   fun:start_thread
+}
+{
+   helgrind-glibc2X-110
+   Helgrind:Race
+   obj:@GLIBC_LIBC_PATH@
+   fun:pthread_*
+}
+{
+   helgrind-glibc2X-111
+   Helgrind:Race
+   fun:__lll_*lock_*
+}
+{
+   helgrind-glibc2X-113
+   Helgrind:Race
+   fun:pthread_barrier_wait*
+}
+
+
+####################################################
+# qt4 specific (GNU mangling)
+#
+{
+   helgrind-qt4---QMutex::lock()-QMutex::lock()
+   Helgrind:Race
+   ...
+   fun:_ZN6QMutex4lockEv
+   fun:_ZN6QMutex4lockEv
+}
+
+{                                                               
+   helgrind-qt4---QMutex::unlock()-QMutex::unlock()
+   Helgrind:Race                                                
+   ...
+   fun:_ZN6QMutex6unlockEv                                      
+   fun:_ZN6QMutex6unlockEv
+}
+
+{
+   helgrind-qt4---pthread_setspecific-QThreadPrivate::start(void*)
+   Helgrind:Race
+   fun:pthread_setspecific
+   fun:_ZN14QThreadPrivate5startEPv
+}
+
+
+####################################################
+# Other stuff.
+#
+# pthread_exit apparently calls some kind of unwind
+# mechanism - maybe to remove some number of frames
+# from the thread's stack, so as to get back to the 
+# outermost frame for the thread?  Anyway..
+
+{
+   helgrind---*Unwind*-...-pthread_exit
+   Helgrind:Race
+   fun:*Unwind*
+   ...
+   fun:pthread_exit
+}
+
+{
+   helgrind---...-*Unwind*-*pthread_unwind*
+   Helgrind:Race
+   ...
+   fun:*Unwind*
+   fun:*pthread_unwind*
+}
+
+{
+   helgrind---...-*Unwind*-*pthread_unwind*
+   Helgrind:Race
+   ...
+   fun:_Unwind*
+   ...
+   fun:_Unwind_Backtrace
+}
+
+
+
+
+####################################################
+# To do with thread stack allocation and deallocation?
+#
+{
+   helgrind---free_stacks-__deallocate_stack
+   Helgrind:Race
+   fun:free_stacks
+   fun:__deallocate_stack
+}
+
+{
+   helgrind---__deallocate_stack-start_thread-clone
+   Helgrind:Race
+   fun:__deallocate_stack
+   fun:start_thread
+   fun:clone
+}
+
+
+####################################################
+# To do with pthread_{set,get}specific
+#
+{
+   helgrind---pthread_setspecific
+   Helgrind:Race
+   fun:pthread_setspecific
+}
+
+{
+   helgrind---pthread_getspecific
+   Helgrind:Race
+   fun:pthread_getspecific
+}
+
+
+####################################################
+# To do with dynamic linking
+#
+# helgrind---ld.so-...-dlsym was merged into helgrind-glibc2X-001
+
+{
+   helgrind---_dl_allocate_tls 
+   Helgrind:Race
+   fun:mempcpy
+   fun:_dl_allocate_tls_init
+   ...
+   fun:pthread_create@@GLIBC_2.2*
+   fun:pthread_create_WRK
+   fun:pthread_create@*
+}
+
+{
+   helgrind---_dl_allocate_tls2
+   Helgrind:Race
+   fun:memcpy
+   fun:__mempcpy_inline
+   fun:_dl_allocate_tls_init
+   ...
+   fun:pthread_create@@GLIBC_2.2*
+   fun:pthread_create_WRK
+   fun:pthread_create@*
+}
+
+####################################################
+# To do with GNU libgomp
+#
+{
+   helgrind---libgomp43-1
+   Helgrind:Race
+   fun:gomp_ordered_sync
+}
+
+{
+   helgrind---libgomp43-1
+   Helgrind:Race
+   fun:gomp_ordered_next
+}
+
+{
+   helgrind---libgomp43-1
+   Helgrind:Race
+   fun:gomp_ordered_last
+}
