From da8f9c5e1ebe655a1a8e9935dd6560121bca2e74 Mon Sep 17 00:00:00 2001 From: Alexander Kanavin Date: Tue, 19 Oct 2021 17:33:25 +0200 Subject: valgrind: update 3.17.0 -> 3.18.1 Signed-off-by: Alexander Kanavin Signed-off-by: Alexandre Belloni Signed-off-by: Richard Purdie --- .../valgrind/0001-Add-missing-musl.supp.patch | 72 - ...wapcontext-Add-SIGALRM-handler-to-avoid-s.patch | 65 - ...tr_tester.c-Limit-rawmemchr-test-to-glibc.patch | 20 +- .../valgrind/0004-Fix-out-of-tree-builds.patch | 47 +- ...erifywrap.c-Fake-__GLIBC_PREREQ-with-musl.patch | 12 +- .../200b6a5a0ea3e1e154663b0fc575bfe2becf177d.patch | 34 - .../52ed51fc35f8a6148c2940eb46932b02dd3b9b23.patch | 171 --- .../6da22a4d246519cd1a638cfc7eff00cdd74413c4.patch | 43 - .../a1364805fc74b5690f763033c0c9b43f27613572.patch | 1422 -------------------- meta/recipes-devtools/valgrind/valgrind_3.17.0.bb | 260 ---- meta/recipes-devtools/valgrind/valgrind_3.18.1.bb | 253 ++++ 11 files changed, 285 insertions(+), 2114 deletions(-) delete mode 100644 meta/recipes-devtools/valgrind/valgrind/0001-Add-missing-musl.supp.patch delete mode 100644 meta/recipes-devtools/valgrind/valgrind/0001-drd-tests-swapcontext-Add-SIGALRM-handler-to-avoid-s.patch delete mode 100644 meta/recipes-devtools/valgrind/valgrind/200b6a5a0ea3e1e154663b0fc575bfe2becf177d.patch delete mode 100644 meta/recipes-devtools/valgrind/valgrind/52ed51fc35f8a6148c2940eb46932b02dd3b9b23.patch delete mode 100644 meta/recipes-devtools/valgrind/valgrind/6da22a4d246519cd1a638cfc7eff00cdd74413c4.patch delete mode 100644 meta/recipes-devtools/valgrind/valgrind/a1364805fc74b5690f763033c0c9b43f27613572.patch delete mode 100644 meta/recipes-devtools/valgrind/valgrind_3.17.0.bb create mode 100644 meta/recipes-devtools/valgrind/valgrind_3.18.1.bb diff --git a/meta/recipes-devtools/valgrind/valgrind/0001-Add-missing-musl.supp.patch b/meta/recipes-devtools/valgrind/valgrind/0001-Add-missing-musl.supp.patch deleted file mode 100644 index 2a73f7e81f..0000000000 --- a/meta/recipes-devtools/valgrind/valgrind/0001-Add-missing-musl.supp.patch +++ /dev/null @@ -1,72 +0,0 @@ -From 61bc8664f93cd980831c9da4a3e8a385b089a0ab Mon Sep 17 00:00:00 2001 -From: Yi Fan Yu -Date: Tue, 23 Mar 2021 09:32:22 -0700 -Subject: [PATCH] Add missing musl.supp - -3.17 did not ship musl.supp in the tarball. - -This is a workaround until next release. - -Upstream-Status: Backport [dde556d51f8226a6de564a00bf82536bb7042c54] - -Signed-off-by: Yi Fan Yu ---- - musl.supp | 46 ++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 46 insertions(+) - create mode 100644 musl.supp - -diff --git a/musl.supp b/musl.supp -new file mode 100644 -index 000000000..864172a24 ---- /dev/null -+++ b/musl.supp -@@ -0,0 +1,46 @@ -+# Suppressions for musl libc -+# See: https://www.openwall.com/lists/musl/2017/06/15/4 -+ -+{ -+ musl-dynlink-false-positive1 -+ Memcheck:Leak -+ fun:calloc -+ fun:load_direct_deps -+ fun:load_deps -+ fun:load_deps -+ fun:__dls3 -+ fun:__dls2b -+ fun:__dls2 -+} -+ -+{ -+ musl-dynlink-false-positive2 -+ Memcheck:Leak -+ fun:calloc -+ fun:load_direct_deps -+ fun:load_deps -+ fun:load_deps -+ fun:__dls3 -+ fun:__dls2 -+} -+ -+{ -+ musl-dynlink-false-positive3 -+ Memcheck:Leak -+ fun:calloc -+ fun:load_library -+ fun:load_preload -+ fun:__dls3 -+ fun:__dls2b -+ fun:__dls2 -+} -+ -+{ -+ musl-dynlink-false-positive4 -+ Memcheck:Leak -+ fun:calloc -+ fun:load_library -+ fun:load_preload -+ fun:__dls3 -+ fun:__dls2 -+} --- -2.17.1 - diff --git a/meta/recipes-devtools/valgrind/valgrind/0001-drd-tests-swapcontext-Add-SIGALRM-handler-to-avoid-s.patch b/meta/recipes-devtools/valgrind/valgrind/0001-drd-tests-swapcontext-Add-SIGALRM-handler-to-avoid-s.patch deleted file mode 100644 index 371c1701d0..0000000000 --- a/meta/recipes-devtools/valgrind/valgrind/0001-drd-tests-swapcontext-Add-SIGALRM-handler-to-avoid-s.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 4c8c4a9c3a92300e3e6500e5a278ca37514a1fdb Mon Sep 17 00:00:00 2001 -From: Yi Fan Yu -Date: Thu, 1 Apr 2021 15:31:47 -0400 -Subject: [PATCH] drd/tests/swapcontext: Add SIGALRM handler to avoid - stacktrace - -During testing for oe-core build on QEMU, -SIGALRM can trigger during nanosleep. -This results a different stderr output than expected. - -``` -==277== Process terminating with default action of signal 14 (SIGALRM) -==277== at 0x36C74C3943: clock_nanosleep@@GLIBC_2.17 (clock_nanosleep.c:43) -==277== by 0x36C74C8726: nanosleep (nanosleep.c:25) -``` - -This stacktrace printing will not occur -if we add a handler that simply exits. - -https://bugs.kde.org/show_bug.cgi?id=435160 - -Signed-off-by: Yi Fan Yu ---- - drd/tests/swapcontext.c | 5 +++++ - drd/tests/swapcontext.stderr.exp | 4 ---- - 2 files changed, 5 insertions(+), 4 deletions(-) - -diff --git a/drd/tests/swapcontext.c b/drd/tests/swapcontext.c -index 622c70bc5..2cb969a5e 100644 ---- a/drd/tests/swapcontext.c -+++ b/drd/tests/swapcontext.c -@@ -25,6 +25,10 @@ typedef struct thread_local { - size_t nrsw; - } thread_local_t; - -+static void sig_alrm_handler(int signo) { -+ _exit(1); -+} -+ - static void f(void *data, int n) - { - enum { NR_SWITCHES = 200000 }; -@@ -76,6 +80,7 @@ int main(int argc, char *argv[]) - pthread_attr_t attr; - int i, res; - -+ signal(SIGALRM, sig_alrm_handler); - memset(tlocal, 0, sizeof(tlocal)); - - pthread_attr_init(&attr); -diff --git a/drd/tests/swapcontext.stderr.exp b/drd/tests/swapcontext.stderr.exp -index fcb5d5ed4..d18786f80 100644 ---- a/drd/tests/swapcontext.stderr.exp -+++ b/drd/tests/swapcontext.stderr.exp -@@ -1,7 +1,3 @@ - - --Process terminating with default action of signal 14 (SIGALRM) -- at 0x........: swapcontext (in /...libc...) -- by 0x........: f (swapcontext.c:?) -- - ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) --- -2.17.1 - diff --git a/meta/recipes-devtools/valgrind/valgrind/0001-str_tester.c-Limit-rawmemchr-test-to-glibc.patch b/meta/recipes-devtools/valgrind/valgrind/0001-str_tester.c-Limit-rawmemchr-test-to-glibc.patch index 185b8f9e60..8f771ed0bd 100644 --- a/meta/recipes-devtools/valgrind/valgrind/0001-str_tester.c-Limit-rawmemchr-test-to-glibc.patch +++ b/meta/recipes-devtools/valgrind/valgrind/0001-str_tester.c-Limit-rawmemchr-test-to-glibc.patch @@ -1,4 +1,4 @@ -From de692e359801a1f0488c76267e4f904dd2efe754 Mon Sep 17 00:00:00 2001 +From 568224da7e647d00abf14a7160997689d9745c89 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sat, 10 Jun 2017 00:39:07 -0700 Subject: [PATCH] str_tester.c: Limit rawmemchr() test to glibc @@ -6,34 +6,30 @@ Subject: [PATCH] str_tester.c: Limit rawmemchr() test to glibc rawmemchr() is a GNU extention therefore mark it so Signed-off-by: Khem Raj ---- Upstream-Status: Pending - +--- memcheck/tests/str_tester.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/memcheck/tests/str_tester.c b/memcheck/tests/str_tester.c -index 9f7790a..47e4b4a 100644 +index 7c2ff1e..8b82ced 100644 --- a/memcheck/tests/str_tester.c +++ b/memcheck/tests/str_tester.c @@ -504,7 +504,7 @@ test_strchrnul (void) #endif // DDD: better done by testing for the function. --#if !defined(__APPLE__) && !defined(__sun) -+#if !defined(__APPLE__) && !defined(__sun) && defined(__GLIBC__) +-#if !defined(__APPLE__) && !defined(__sun) && !defined(__FreeBSD__) ++#if !defined(__APPLE__) && !defined(__sun) && !defined(__FreeBSD__) && defined(__GLIBC__) static void test_rawmemchr (void) { -@@ -1442,7 +1442,7 @@ main (void) +@@ -1451,7 +1451,7 @@ main (void) test_strchrnul (); # endif --# if !defined(__APPLE__) && !defined(__sun) -+# if !defined(__APPLE__) && !defined(__sun) && defined(__GLIBC__) +-# if !defined(__APPLE__) && !defined(__sun) && !defined(__FreeBSD__) ++# if !defined(__APPLE__) && !defined(__sun) && !defined(__FreeBSD__) && defined(__GLIBC__) /* rawmemchr. */ test_rawmemchr (); # endif --- -2.13.1 - diff --git a/meta/recipes-devtools/valgrind/valgrind/0004-Fix-out-of-tree-builds.patch b/meta/recipes-devtools/valgrind/valgrind/0004-Fix-out-of-tree-builds.patch index 4570f63995..06b19b07c4 100644 --- a/meta/recipes-devtools/valgrind/valgrind/0004-Fix-out-of-tree-builds.patch +++ b/meta/recipes-devtools/valgrind/valgrind/0004-Fix-out-of-tree-builds.patch @@ -1,4 +1,4 @@ -From 8f916dcb395fe5a2429f2867ba4daf8ef3af073a Mon Sep 17 00:00:00 2001 +From 59e3190e9121c5439d54298b083b44c5c3794a7f Mon Sep 17 00:00:00 2001 From: Randy MacLeod Date: Tue, 16 Oct 2018 21:01:04 -0400 Subject: [PATCH] Fix out of tree builds. @@ -16,15 +16,16 @@ Upstream-Status: Pending Signed-off-by: Alexander Kanavin Signed-off-by: Randy MacLeod + --- - configure.ac | 66 ++++++++++++++++++++++++++-------------------------- - 1 file changed, 33 insertions(+), 33 deletions(-) + configure.ac | 62 ++++++++++++++++++++++++++-------------------------- + 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/configure.ac b/configure.ac -index 524230d..54861c5 100755 +index b851798..d360896 100755 --- a/configure.ac +++ b/configure.ac -@@ -396,50 +396,50 @@ case "${host_os}" in +@@ -447,50 +447,50 @@ case "${host_os}" in 9.*) AC_MSG_RESULT([Darwin 9.x (${kernel}) / Mac OS X 10.5 Leopard]) AC_DEFINE([DARWIN_VERS], DARWIN_10_5, [Darwin / Mac OS X version]) @@ -91,7 +92,7 @@ index 524230d..54861c5 100755 ;; 17.*) AC_MSG_RESULT([Darwin 17.x (${kernel}) / macOS 10.13 High Sierra]) -@@ -464,7 +464,7 @@ case "${host_os}" in +@@ -515,7 +515,7 @@ case "${host_os}" in DEFAULT_SUPP="solaris12.supp ${DEFAULT_SUPP}" ;; *) @@ -100,7 +101,7 @@ index 524230d..54861c5 100755 ;; esac ;; -@@ -472,7 +472,7 @@ case "${host_os}" in +@@ -523,7 +523,7 @@ case "${host_os}" in solaris2.12*) AC_MSG_RESULT([ok (${host_os})]) VGCONF_OS="solaris" @@ -109,7 +110,7 @@ index 524230d..54861c5 100755 ;; *) -@@ -1095,29 +1095,29 @@ AC_MSG_CHECKING([the glibc version]) +@@ -1237,15 +1237,15 @@ AC_MSG_CHECKING([the glibc version]) case "${GLIBC_VERSION}" in 2.2) AC_MSG_RESULT(${GLIBC_VERSION} family) @@ -123,44 +124,37 @@ index 524230d..54861c5 100755 2.[[3-6]]) AC_MSG_RESULT(${GLIBC_VERSION} family) - DEFAULT_SUPP="glibc-${GLIBC_VERSION}.supp ${DEFAULT_SUPP}" -- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-helgrind.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" + 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="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" -- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" -+ DEFAULT_SUPP="$srcdir/glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" -+ DEFAULT_SUPP="$srcdir/glibc-2.X-drd.supp ${DEFAULT_SUPP}" - ;; - 2.10|2.11) - AC_MSG_RESULT(${GLIBC_VERSION} family) +@@ -1258,8 +1258,8 @@ 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="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-helgrind.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.X-drd.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.*) AC_MSG_RESULT(${GLIBC_VERSION} family) -@@ -1126,8 +1126,8 @@ case "${GLIBC_VERSION}" in +@@ -1268,8 +1268,8 @@ 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="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-helgrind.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.X-drd.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) AC_MSG_RESULT(Darwin) -@@ -1137,7 +1137,7 @@ case "${GLIBC_VERSION}" in +@@ -1284,7 +1284,7 @@ case "${GLIBC_VERSION}" in bionic) AC_MSG_RESULT(Bionic) AC_DEFINE([BIONIC_LIBC], 1, [Define to 1 if you're using Bionic]) @@ -169,7 +163,7 @@ index 524230d..54861c5 100755 ;; solaris) AC_MSG_RESULT(Solaris) -@@ -1164,8 +1164,8 @@ if test "$VGCONF_OS" != "solaris"; then +@@ -1313,8 +1313,8 @@ if test "$VGCONF_OS" != "solaris"; then # attempt to detect whether such libraries are installed on the # build machine (or even if any X facilities are present); just # add the suppressions antidisirregardless. @@ -180,6 +174,3 @@ index 524230d..54861c5 100755 fi --- -2.17.1 - diff --git a/meta/recipes-devtools/valgrind/valgrind/0005-tc20_verifywrap.c-Fake-__GLIBC_PREREQ-with-musl.patch b/meta/recipes-devtools/valgrind/valgrind/0005-tc20_verifywrap.c-Fake-__GLIBC_PREREQ-with-musl.patch index 6176640e42..02241781d9 100644 --- a/meta/recipes-devtools/valgrind/valgrind/0005-tc20_verifywrap.c-Fake-__GLIBC_PREREQ-with-musl.patch +++ b/meta/recipes-devtools/valgrind/valgrind/0005-tc20_verifywrap.c-Fake-__GLIBC_PREREQ-with-musl.patch @@ -1,30 +1,28 @@ -From b4b9f072c22f96844e02cb9d68f7ff2408680817 Mon Sep 17 00:00:00 2001 +From ace5fe19b3f13039d5d6bd5d99d54c20ea79e09c Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sat, 10 Jun 2017 01:07:59 -0700 -Subject: [PATCH 5/6] tc20_verifywrap.c: Fake __GLIBC_PREREQ with musl +Subject: [PATCH] tc20_verifywrap.c: Fake __GLIBC_PREREQ with musl similar to sun Upstream-Status: Pending Signed-off-by: Khem Raj + --- helgrind/tests/tc20_verifywrap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helgrind/tests/tc20_verifywrap.c b/helgrind/tests/tc20_verifywrap.c -index c110000..a311a49 100644 +index ae97bde..db2eb70 100644 --- a/helgrind/tests/tc20_verifywrap.c +++ b/helgrind/tests/tc20_verifywrap.c @@ -20,7 +20,7 @@ - #if !defined(__APPLE__) + #if !defined(__APPLE__) && !defined(__FreeBSD__) -#if defined(__sun__) +#if defined(__sun__) || (defined(__linux__) && !defined(__GLIBC__)) /* Fake __GLIBC_PREREQ on Solaris. Pretend glibc >= 2.4. */ # define __GLIBC_PREREQ #else --- -2.13.1 - diff --git a/meta/recipes-devtools/valgrind/valgrind/200b6a5a0ea3e1e154663b0fc575bfe2becf177d.patch b/meta/recipes-devtools/valgrind/valgrind/200b6a5a0ea3e1e154663b0fc575bfe2becf177d.patch deleted file mode 100644 index 9a5f6a3f51..0000000000 --- a/meta/recipes-devtools/valgrind/valgrind/200b6a5a0ea3e1e154663b0fc575bfe2becf177d.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 200b6a5a0ea3e1e154663b0fc575bfe2becf177d Mon Sep 17 00:00:00 2001 -From: Mark Wielaard -Date: Wed, 21 Jul 2021 17:55:40 +0200 -Subject: [PATCH] m_debuginfo/debuginfo.c VG_(get_fnname_kind) _start is below - main - -With glibc 2.34 we might see the _start symbol as the frame that -called main instead of directly after __libc_start_main or -generic_start_main. - -Fixes memcheck/tests/badjump[2], memcheck/tests/origin4-many, -helgrind/tests/tc04_free_lock, helgrind/tests/tc09_bad_unlock -and helgrind/tests/tc20_verifywrap. - -Upstream-Status: Backport ---- - coregrind/m_debuginfo/debuginfo.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/coregrind/m_debuginfo/debuginfo.c b/coregrind/m_debuginfo/debuginfo.c -index bc2578b377..e2218f2668 100644 ---- a/coregrind/m_debuginfo/debuginfo.c -+++ b/coregrind/m_debuginfo/debuginfo.c -@@ -2289,6 +2289,7 @@ Vg_FnNameKind VG_(get_fnname_kind) ( const HChar* name ) - VG_STREQN(18, "__libc_start_main.", name) || // gcc optimization - VG_STREQ("generic_start_main", name) || // Yellow Dog doggedness - VG_STREQN(19, "generic_start_main.", name) || // gcc optimization -+ VG_STREQ("_start", name) || - # elif defined(VGO_darwin) - // See readmacho.c for an explanation of this. - VG_STREQ("start_according_to_valgrind", name) || // Darwin, darling --- -2.27.0 - diff --git a/meta/recipes-devtools/valgrind/valgrind/52ed51fc35f8a6148c2940eb46932b02dd3b9b23.patch b/meta/recipes-devtools/valgrind/valgrind/52ed51fc35f8a6148c2940eb46932b02dd3b9b23.patch deleted file mode 100644 index 451a459ea7..0000000000 --- a/meta/recipes-devtools/valgrind/valgrind/52ed51fc35f8a6148c2940eb46932b02dd3b9b23.patch +++ /dev/null @@ -1,171 +0,0 @@ -From 52ed51fc35f8a6148c2940eb46932b02dd3b9b23 Mon Sep 17 00:00:00 2001 -From: Mark Wielaard -Date: Wed, 21 Jul 2021 19:53:13 +0200 -Subject: [PATCH] Generate a ENOSYS (sys_ni_syscall) for clone3 on all linux - arches - -glibc 2.34 will try to use clone3 first before falling back to -the clone syscall. So implement clone3 as sys_ni_syscall which -simply return ENOSYS without producing a warning. - -https://bugs.kde.org/show_bug.cgi?id=439590 - -Upstream-Status: Backport ---- - coregrind/m_syswrap/syswrap-amd64-linux.c | 2 ++ - coregrind/m_syswrap/syswrap-arm-linux.c | 2 ++ - coregrind/m_syswrap/syswrap-arm64-linux.c | 2 ++ - coregrind/m_syswrap/syswrap-mips32-linux.c | 2 ++ - coregrind/m_syswrap/syswrap-mips64-linux.c | 1 + - coregrind/m_syswrap/syswrap-nanomips-linux.c | 1 + - coregrind/m_syswrap/syswrap-ppc32-linux.c | 2 ++ - coregrind/m_syswrap/syswrap-ppc64-linux.c | 2 ++ - coregrind/m_syswrap/syswrap-s390x-linux.c | 2 ++ - coregrind/m_syswrap/syswrap-x86-linux.c | 2 ++ - include/vki/vki-scnums-shared-linux.h | 2 ++ - 11 files changed, 20 insertions(+) - -diff --git a/coregrind/m_syswrap/syswrap-amd64-linux.c b/coregrind/m_syswrap/syswrap-amd64-linux.c -index 45e1f3d1bb..3b2dcb8e30 100644 ---- a/coregrind/m_syswrap/syswrap-amd64-linux.c -+++ b/coregrind/m_syswrap/syswrap-amd64-linux.c -@@ -874,6 +874,8 @@ static SyscallTableEntry syscall_table[] = { - LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426 - LINXY(__NR_io_uring_register, sys_io_uring_register), // 427 - -+ GENX_(__NR_clone3, sys_ni_syscall), // 435 -+ - LINX_(__NR_faccessat2, sys_faccessat2), // 439 - }; - -diff --git a/coregrind/m_syswrap/syswrap-arm-linux.c b/coregrind/m_syswrap/syswrap-arm-linux.c -index 428cb7c6fc..7f41b07491 100644 ---- a/coregrind/m_syswrap/syswrap-arm-linux.c -+++ b/coregrind/m_syswrap/syswrap-arm-linux.c -@@ -1051,6 +1051,8 @@ static SyscallTableEntry syscall_main_table[] = { - LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426 - LINXY(__NR_io_uring_register, sys_io_uring_register), // 427 - -+ GENX_(__NR_clone3, sys_ni_syscall), // 435 -+ - LINX_(__NR_faccessat2, sys_faccessat2), // 439 - }; - -diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c -index 024ece27f5..0d717f44be 100644 ---- a/coregrind/m_syswrap/syswrap-arm64-linux.c -+++ b/coregrind/m_syswrap/syswrap-arm64-linux.c -@@ -830,6 +830,8 @@ static SyscallTableEntry syscall_main_table[] = { - LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426 - LINXY(__NR_io_uring_register, sys_io_uring_register), // 427 - -+ GENX_(__NR_clone3, sys_ni_syscall), // 435 -+ - LINX_(__NR_faccessat2, sys_faccessat2), // 439 - }; - -diff --git a/coregrind/m_syswrap/syswrap-mips32-linux.c b/coregrind/m_syswrap/syswrap-mips32-linux.c -index 62b085ea21..b62129111b 100644 ---- a/coregrind/m_syswrap/syswrap-mips32-linux.c -+++ b/coregrind/m_syswrap/syswrap-mips32-linux.c -@@ -1136,6 +1136,8 @@ static SyscallTableEntry syscall_main_table[] = { - LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426 - LINXY(__NR_io_uring_register, sys_io_uring_register), // 427 - -+ GENX_(__NR_clone3, sys_ni_syscall), // 435 -+ - LINX_ (__NR_faccessat2, sys_faccessat2), // 439 - }; - -diff --git a/coregrind/m_syswrap/syswrap-mips64-linux.c b/coregrind/m_syswrap/syswrap-mips64-linux.c -index b73c03da16..94f38366f0 100644 ---- a/coregrind/m_syswrap/syswrap-mips64-linux.c -+++ b/coregrind/m_syswrap/syswrap-mips64-linux.c -@@ -815,6 +815,7 @@ static SyscallTableEntry syscall_main_table[] = { - LINXY (__NR_io_uring_setup, sys_io_uring_setup), - LINXY (__NR_io_uring_enter, sys_io_uring_enter), - LINXY (__NR_io_uring_register, sys_io_uring_register), -+ GENX_ (__NR_clone3, sys_ni_syscall), - LINX_ (__NR_faccessat2, sys_faccessat2), - }; - -diff --git a/coregrind/m_syswrap/syswrap-nanomips-linux.c b/coregrind/m_syswrap/syswrap-nanomips-linux.c -index 14127b181a..102c155507 100644 ---- a/coregrind/m_syswrap/syswrap-nanomips-linux.c -+++ b/coregrind/m_syswrap/syswrap-nanomips-linux.c -@@ -824,6 +824,7 @@ static SyscallTableEntry syscall_main_table[] = { - LINXY (__NR_io_uring_setup, sys_io_uring_setup), - LINXY (__NR_io_uring_enter, sys_io_uring_enter), - LINXY (__NR_io_uring_register, sys_io_uring_register), -+ GENX_ (__NR_clone3, sys_ni_syscall), - LINX_ (__NR_faccessat2, sys_faccessat2), - }; - -diff --git a/coregrind/m_syswrap/syswrap-ppc32-linux.c b/coregrind/m_syswrap/syswrap-ppc32-linux.c -index aad14f8ba4..1e2efc6777 100644 ---- a/coregrind/m_syswrap/syswrap-ppc32-linux.c -+++ b/coregrind/m_syswrap/syswrap-ppc32-linux.c -@@ -1054,6 +1054,8 @@ static SyscallTableEntry syscall_table[] = { - LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426 - LINXY(__NR_io_uring_register, sys_io_uring_register), // 427 - -+ GENX_(__NR_clone3, sys_ni_syscall), // 435 -+ - LINX_(__NR_faccessat2, sys_faccessat2), // 439 - }; - -diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c -index c0e3f55491..76610e1423 100644 ---- a/coregrind/m_syswrap/syswrap-ppc64-linux.c -+++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c -@@ -1023,6 +1023,8 @@ static SyscallTableEntry syscall_table[] = { - LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426 - LINXY(__NR_io_uring_register, sys_io_uring_register), // 427 - -+ GENX_(__NR_clone3, sys_ni_syscall), // 435 -+ - LINX_(__NR_faccessat2, sys_faccessat2), // 439 - }; - -diff --git a/coregrind/m_syswrap/syswrap-s390x-linux.c b/coregrind/m_syswrap/syswrap-s390x-linux.c -index af6c4eb210..5283c19fe4 100644 ---- a/coregrind/m_syswrap/syswrap-s390x-linux.c -+++ b/coregrind/m_syswrap/syswrap-s390x-linux.c -@@ -864,6 +864,8 @@ static SyscallTableEntry syscall_table[] = { - LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426 - LINXY(__NR_io_uring_register, sys_io_uring_register), // 427 - -+ GENX_(__NR_clone3, sys_ni_syscall), // 435 -+ - LINX_(__NR_faccessat2, sys_faccessat2), // 439 - }; - -diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c -index 67d866497d..418c769750 100644 ---- a/coregrind/m_syswrap/syswrap-x86-linux.c -+++ b/coregrind/m_syswrap/syswrap-x86-linux.c -@@ -1645,6 +1645,8 @@ static SyscallTableEntry syscall_table[] = { - LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426 - LINXY(__NR_io_uring_register, sys_io_uring_register),// 427 - -+ GENX_(__NR_clone3, sys_ni_syscall), // 435 -+ - LINX_(__NR_faccessat2, sys_faccessat2), // 439 - }; - -diff --git a/include/vki/vki-scnums-shared-linux.h b/include/vki/vki-scnums-shared-linux.h -index c8bc31b4b3..6c70c9981d 100644 ---- a/include/vki/vki-scnums-shared-linux.h -+++ b/include/vki/vki-scnums-shared-linux.h -@@ -39,6 +39,8 @@ - #define __NR_fsmount 432 - #define __NR_fspick 433 - -+#define __NR_clone3 435 -+ - #define __NR_faccessat2 439 - - #endif --- -2.27.0 - diff --git a/meta/recipes-devtools/valgrind/valgrind/6da22a4d246519cd1a638cfc7eff00cdd74413c4.patch b/meta/recipes-devtools/valgrind/valgrind/6da22a4d246519cd1a638cfc7eff00cdd74413c4.patch deleted file mode 100644 index fce66b96ae..0000000000 --- a/meta/recipes-devtools/valgrind/valgrind/6da22a4d246519cd1a638cfc7eff00cdd74413c4.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 6da22a4d246519cd1a638cfc7eff00cdd74413c4 Mon Sep 17 00:00:00 2001 -From: Mark Wielaard -Date: Fri, 16 Jul 2021 21:37:21 +0200 -Subject: [PATCH] gdbserver_tests: update filters for newer glibc/gdb - -With newer glibc/gdb we might see a __select call without anything -following on the line. Also when gdb cannot find a file it might -now print "Inappropriate ioctl for device" instead of the message -"No such file or directory" - -Upstream-Status: Backport ---- - gdbserver_tests/filter_gdb | 1 + - gdbserver_tests/filter_vgdb | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/gdbserver_tests/filter_gdb b/gdbserver_tests/filter_gdb -index 3bcd26d86c..4a5b5d7a5b 100755 ---- a/gdbserver_tests/filter_gdb -+++ b/gdbserver_tests/filter_gdb -@@ -111,6 +111,7 @@ s/\(0x........\) in ?? ()$/\1 in syscall .../ - # If select.c sources are present, we can also get a line containing: - # return SYSCALL_CANCEL.... - s/in __select .*/in syscall .../ -+s/in __select$/in syscall .../ - /exceptfds/d - /sysv\/linux\/select\.c/d - /return SYSCALL_CANCEL /d -diff --git a/gdbserver_tests/filter_vgdb b/gdbserver_tests/filter_vgdb -index f8028a39ad..679ca4b31c 100755 ---- a/gdbserver_tests/filter_vgdb -+++ b/gdbserver_tests/filter_vgdb -@@ -18,6 +18,7 @@ sed -e '/relaying data between gdb and process/d' \ - - # filter some debuginfo problems with ld.so and SLES11 - sed -e '/^1 rtld.c: No such file or directory\./d' | -+sed -e '/rtld.c: Inappropriate ioctl for device\./d' | - - # and filter out any remaining empty lines - sed -e '/^$/d' --- -2.27.0 - diff --git a/meta/recipes-devtools/valgrind/valgrind/a1364805fc74b5690f763033c0c9b43f27613572.patch b/meta/recipes-devtools/valgrind/valgrind/a1364805fc74b5690f763033c0c9b43f27613572.patch deleted file mode 100644 index ece88406c6..0000000000 --- a/meta/recipes-devtools/valgrind/valgrind/a1364805fc74b5690f763033c0c9b43f27613572.patch +++ /dev/null @@ -1,1422 +0,0 @@ -From a1364805fc74b5690f763033c0c9b43f27613572 Mon Sep 17 00:00:00 2001 -From: Mark Wielaard -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() -- 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(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() -+ 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(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 -+} diff --git a/meta/recipes-devtools/valgrind/valgrind_3.17.0.bb b/meta/recipes-devtools/valgrind/valgrind_3.17.0.bb deleted file mode 100644 index 3fa483d8bc..0000000000 --- a/meta/recipes-devtools/valgrind/valgrind_3.17.0.bb +++ /dev/null @@ -1,260 +0,0 @@ -SUMMARY = "Valgrind memory debugger and instrumentation framework" -HOMEPAGE = "http://valgrind.org/" -DESCRIPTION = "Valgrind is an instrumentation framework for building dynamic analysis tools. There are Valgrind tools that can automatically detect many memory management and threading bugs, and profile your programs in detail." -BUGTRACKER = "http://valgrind.org/support/bug_reports.html" -LICENSE = "GPLv2 & GPLv2+ & BSD-3-Clause" -LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ - file://include/pub_tool_basics.h;beginline=6;endline=29;md5=41c410e8d3f305aee7aaa666b2e4f366 \ - file://include/valgrind.h;beginline=1;endline=56;md5=ad3b317f3286b6b704575d9efe6ca5df \ - file://COPYING.DOCS;md5=24ea4c7092233849b4394699333b5c56" - -DEPENDS = " \ - ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'boost', '', d)} \ - " - -SRC_URI = "https://sourceware.org/pub/valgrind/valgrind-${PV}.tar.bz2 \ - file://fixed-perl-path.patch \ - file://Added-support-for-PPC-instructions-mfatbu-mfatbl.patch \ - file://run-ptest \ - file://remove-for-aarch64 \ - file://remove-for-all \ - file://taskset_nondeterministic_tests \ - file://0004-Fix-out-of-tree-builds.patch \ - file://0005-Modify-vg_test-wrapper-to-support-PTEST-formats.patch \ - file://0001-Remove-tests-that-fail-to-build-on-some-PPC32-config.patch \ - file://use-appropriate-march-mcpu-mfpu-for-ARM-test-apps.patch \ - file://avoid-neon-for-targets-which-don-t-support-it.patch \ - file://valgrind-make-ld-XXX.so-strlen-intercept-optional.patch \ - file://0001-makefiles-Drop-setting-mcpu-to-cortex-a8-on-arm-arch.patch \ - file://0001-str_tester.c-Limit-rawmemchr-test-to-glibc.patch \ - file://0001-sigqueue-Rename-_sifields-to-__si_fields-on-musl.patch \ - file://0002-context-APIs-are-not-available-on-musl.patch \ - file://0003-correct-include-directive-path-for-config.h.patch \ - file://0005-tc20_verifywrap.c-Fake-__GLIBC_PREREQ-with-musl.patch \ - file://0001-memcheck-arm64-Define-__THROW-if-not-already-defined.patch \ - file://0002-memcheck-x86-Define-__THROW-if-not-defined.patch \ - file://0003-tests-seg_override-Replace-__modify_ldt-with-syscall.patch \ - file://0001-fix-opcode-not-supported-on-mips32-linux.patch \ - file://0001-Guard-against-__GLIBC_PREREQ-for-musl-libc.patch \ - file://0001-Make-local-functions-static-to-avoid-assembler-error.patch \ - file://0001-Return-a-valid-exit_code-from-vg_regtest.patch \ - file://0001-valgrind-filter_xml_frames-do-not-filter-usr.patch \ - file://0001-memcheck-vgtests-remove-fullpath-after-flags.patch \ - file://s390x_vec_op_t.patch \ - file://0001-none-tests-fdleak_cmsg.stderr.exp-adjust-tmp-paths.patch \ - file://0001-memcheck-tests-Fix-timerfd-syscall-test.patch \ - file://0001-Add-missing-musl.supp.patch \ - file://0001-drd-tests-swapcontext-Add-SIGALRM-handler-to-avoid-s.patch \ - file://6da22a4d246519cd1a638cfc7eff00cdd74413c4.patch \ - file://200b6a5a0ea3e1e154663b0fc575bfe2becf177d.patch \ - file://a1364805fc74b5690f763033c0c9b43f27613572.patch \ - file://52ed51fc35f8a6148c2940eb46932b02dd3b9b23.patch \ - " -SRC_URI[md5sum] = "afe11b5572c3121a781433b7c0ab741b" -SRC_URI[sha256sum] = "ad3aec668e813e40f238995f60796d9590eee64a16dff88421430630e69285a2" -UPSTREAM_CHECK_REGEX = "valgrind-(?P\d+(\.\d+)+)\.tar" - -COMPATIBLE_HOST = '(i.86|x86_64|arm|aarch64|mips|powerpc|powerpc64).*-linux' - -# patch 0001-memcheck-vgtests-remove-fullpath-after-flags.patch removes relative path -# argument. Change expected stderr files accordingly. -do_patch:append() { - bb.build.exec_func('do_sed_paths', d) -} - -do_sed_paths() { - sed -i -e 's|tests/||' ${S}/memcheck/tests/badfree3.stderr.exp - sed -i -e 's|tests/||' ${S}/memcheck/tests/varinfo5.stderr.exp -} - -# valgrind supports armv7 and above -COMPATIBLE_HOST:armv4 = 'null' -COMPATIBLE_HOST:armv5 = 'null' -COMPATIBLE_HOST:armv6 = 'null' - -# valgrind fails with powerpc soft-float -COMPATIBLE_HOST:powerpc = "${@bb.utils.contains('TARGET_FPU', 'soft', 'null', '.*-linux', d)}" - -# X32 isn't supported by valgrind at this time -COMPATIBLE_HOST:linux-gnux32 = 'null' -COMPATIBLE_HOST:linux-muslx32 = 'null' - -# Disable for some MIPS variants -COMPATIBLE_HOST:mipsarchr6 = 'null' -COMPATIBLE_HOST:linux-gnun32 = 'null' - -# Disable for powerpc64 with musl -COMPATIBLE_HOST:libc-musl:powerpc64 = 'null' - -# brokenseip is unfortunately required by ptests to pass -inherit autotools-brokensep ptest multilib_header - -EXTRA_OECONF = "--enable-tls --without-mpicc" -EXTRA_OECONF += "${@['--enable-only32bit','--enable-only64bit'][d.getVar('SITEINFO_BITS') != '32']}" - -# valgrind checks host_cpu "armv7*)", so we need to over-ride the autotools.bbclass default --host option -EXTRA_OECONF:append:arm = " --host=armv7${HOST_VENDOR}-${HOST_OS}" - -EXTRA_OEMAKE = "-w" - -CACHED_CONFIGUREVARS += "ac_cv_path_PERL='/usr/bin/env perl'" - -# valgrind likes to control its own optimisation flags. It generally defaults -# to -O2 but uses -O0 for some specific test apps etc. Passing our own flags -# (via CFLAGS) means we interfere with that. Only pass DEBUG_FLAGS to it -# which fixes build path issue in DWARF. -SELECTED_OPTIMIZATION = "${DEBUG_FLAGS}" - -do_configure:prepend () { - rm -rf ${S}/config.h - sed -i -e 's:$(abs_top_builddir):$(pkglibdir)/ptest:g' ${S}/none/tests/Makefile.am - sed -i -e 's:$(top_builddir):$(pkglibdir)/ptest:g' ${S}/memcheck/tests/Makefile.am -} - -do_install:append () { - install -m 644 ${B}/default.supp ${D}/${libexecdir}/valgrind/ - oe_multilib_header valgrind/config.h -} - -VALGRINDARCH ?= "${TARGET_ARCH}" -VALGRINDARCH:aarch64 = "arm64" -VALGRINDARCH:x86-64 = "amd64" -VALGRINDARCH:x86 = "x86" -VALGRINDARCH:mips = "mips32" -VALGRINDARCH:mipsel = "mips32" -VALGRINDARCH:mips64el = "mips64" -VALGRINDARCH:powerpc = "ppc" -VALGRINDARCH:powerpc64 = "ppc64" -VALGRINDARCH:powerpc64le = "ppc64le" - -INHIBIT_PACKAGE_STRIP_FILES = "${PKGD}${libexecdir}/valgrind/vgpreload_memcheck-${VALGRINDARCH}-linux.so" - -RDEPENDS:${PN} += "perl" - -# valgrind needs debug information for ld.so at runtime in order to -# redirect functions like strlen. -RRECOMMENDS:${PN} += "${TCLIBC}-dbg" - -RDEPENDS:${PN}-ptest += " bash coreutils curl file \ - gdb libgomp \ - perl \ - perl-module-file-basename perl-module-file-glob perl-module-getopt-long \ - perl-module-overloading perl-module-cwd perl-module-ipc-open3 \ - perl-module-carp perl-module-symbol \ - procps sed ${PN}-dbg ${PN}-src ${TCLIBC}-src gcc-runtime-dbg" -RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-utils" - -# One of the tests contains a bogus interpreter path on purpose. -# Skip file dependency check -SKIP_FILEDEPS:${PN}-ptest = '1' -INSANE_SKIP:${PN}-ptest = "debug-deps" - -do_compile_ptest() { - oe_runmake check -} - -do_install_ptest() { - chmod +x ${B}/tests/vg_regtest - - # The test application binaries are not automatically installed. - # Grab them from the build directory. - # - # The regression tests require scripts and data files that are not - # copied to the build directory. They must be copied from the - # source directory. - saved_dir=$PWD - for parent_dir in ${S} ${B} ; do - cd $parent_dir - - subdirs=" \ - .in_place \ - cachegrind/tests \ - callgrind/tests \ - dhat/tests \ - drd/tests \ - gdbserver_tests \ - helgrind/tests \ - lackey/tests \ - massif/tests \ - memcheck/tests \ - none/tests \ - tests \ - exp-bbv/tests \ - " - # Get the vg test scripts, filters, and expected files - for dir in $subdirs ; do - find $dir | cpio -pvdu ${D}${PTEST_PATH} - done - cd $saved_dir - done - - # The scripts reference config.h so add it to the top ptest dir. - cp ${B}/config.h ${D}${PTEST_PATH} - install -D ${WORKDIR}/remove-for-aarch64 ${D}${PTEST_PATH} - install -D ${WORKDIR}/remove-for-all ${D}${PTEST_PATH} - install -D ${WORKDIR}/taskset_nondeterministic_tests ${D}${PTEST_PATH} - - # Add an executable need by none/tests/bigcode - mkdir ${D}${PTEST_PATH}/perf - cp ${B}/perf/bigcode ${D}${PTEST_PATH}/perf - - # Add an executable needed by memcheck/tests/vcpu_bz2 - cp ${B}/perf/bz2 ${D}${PTEST_PATH}/perf - - # Make the ptest dir look like the top level valgrind src dir - # This is checked by the gdbserver_tests/make_local_links script - mkdir ${D}${PTEST_PATH}/coregrind - cp ${B}/coregrind/vgdb ${D}${PTEST_PATH}/coregrind - - # Add an executable needed by massif tests - cp ${B}/massif/ms_print ${D}${PTEST_PATH}/massif/ms_print - - find ${D}${PTEST_PATH} \ - \( \ - -name "Makefile*" \ - -o -name "*.o" \ - \) \ - -exec rm {} \; - - # These files need to be newer so touch them. - touch ${D}${PTEST_PATH}/cachegrind/tests/a.c -r ${D}${PTEST_PATH}/cachegrind/tests/cgout-test - - # find *_annotate in ${bindir} for yocto build - sed -i s:\.\./\.\./cachegrind/cg_annotate:${bindir}/cg_annotate: ${D}${PTEST_PATH}/cachegrind/tests/ann1.vgtest - sed -i s:\.\./\.\./cachegrind/cg_annotate:${bindir}/cg_annotate: ${D}${PTEST_PATH}/cachegrind/tests/ann2.vgtest - - sed -i s:\.\./\.\./callgrind/callgrind_annotate:${bindir}/callgrind_annotate: ${D}${PTEST_PATH}/callgrind/tests/ann1.vgtest - sed -i s:\.\./\.\./callgrind/callgrind_annotate:${bindir}/callgrind_annotate: ${D}${PTEST_PATH}/callgrind/tests/ann2.vgtest - - # point the expanded @abs_top_builddir@ of the host to PTEST_PATH - sed -i s:${S}:${PTEST_PATH}:g \ - ${D}${PTEST_PATH}/memcheck/tests/linux/debuginfod-check.vgtest - - # handle multilib - sed -i s:@libdir@:${libdir}:g ${D}${PTEST_PATH}/run-ptest - sed -i s:@libexecdir@:${libexecdir}:g ${D}${PTEST_PATH}/run-ptest - sed -i s:@bindir@:${bindir}:g ${D}${PTEST_PATH}/run-ptest - - # This test fails on the host as well, using both 3.15 and git master (as of Jan 24 2020) - # https://bugs.kde.org/show_bug.cgi?id=402833 - rm ${D}${PTEST_PATH}/memcheck/tests/overlap.vgtest - - # This is known failure see https://bugs.kde.org/show_bug.cgi?id=435732 - rm ${D}${PTEST_PATH}/memcheck/tests/leak_cpp_interior.vgtest - - # As the binary isn't stripped or debug-splitted, the source file isn't fetched - # via dwarfsrcfiles either, so it needs to be installed manually. - mkdir -p ${D}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/${BP}/none/tests/ - install ${S}/none/tests/tls.c ${D}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/${BP}/none/tests/ -} - -# avoid stripping some generated binaries otherwise some of the tests will fail -# run-strip-reloc.sh, run-strip-strmerge.sh and so on will fail -INHIBIT_PACKAGE_STRIP_FILES += "\ - ${PKGD}${PTEST_PATH}/none/tests/tls \ - ${PKGD}${PTEST_PATH}/none/tests/tls.so \ - ${PKGD}${PTEST_PATH}/none/tests/tls2.so \ - ${PKGD}${PTEST_PATH}/helgrind/tests/tc09_bad_unlock \ - ${PKGD}${PTEST_PATH}/memcheck/tests/manuel1 \ - ${PKGD}${PTEST_PATH}/drd/tests/pth_detached3 \ -" diff --git a/meta/recipes-devtools/valgrind/valgrind_3.18.1.bb b/meta/recipes-devtools/valgrind/valgrind_3.18.1.bb new file mode 100644 index 0000000000..6fc2f36868 --- /dev/null +++ b/meta/recipes-devtools/valgrind/valgrind_3.18.1.bb @@ -0,0 +1,253 @@ +SUMMARY = "Valgrind memory debugger and instrumentation framework" +HOMEPAGE = "http://valgrind.org/" +DESCRIPTION = "Valgrind is an instrumentation framework for building dynamic analysis tools. There are Valgrind tools that can automatically detect many memory management and threading bugs, and profile your programs in detail." +BUGTRACKER = "http://valgrind.org/support/bug_reports.html" +LICENSE = "GPLv2 & GPLv2+ & BSD-3-Clause" +LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://include/pub_tool_basics.h;beginline=6;endline=29;md5=41c410e8d3f305aee7aaa666b2e4f366 \ + file://include/valgrind.h;beginline=1;endline=56;md5=ad3b317f3286b6b704575d9efe6ca5df \ + file://COPYING.DOCS;md5=24ea4c7092233849b4394699333b5c56" + +DEPENDS = " \ + ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'boost', '', d)} \ + " + +SRC_URI = "https://sourceware.org/pub/valgrind/valgrind-${PV}.tar.bz2 \ + file://fixed-perl-path.patch \ + file://Added-support-for-PPC-instructions-mfatbu-mfatbl.patch \ + file://run-ptest \ + file://remove-for-aarch64 \ + file://remove-for-all \ + file://taskset_nondeterministic_tests \ + file://0004-Fix-out-of-tree-builds.patch \ + file://0005-Modify-vg_test-wrapper-to-support-PTEST-formats.patch \ + file://0001-Remove-tests-that-fail-to-build-on-some-PPC32-config.patch \ + file://use-appropriate-march-mcpu-mfpu-for-ARM-test-apps.patch \ + file://avoid-neon-for-targets-which-don-t-support-it.patch \ + file://valgrind-make-ld-XXX.so-strlen-intercept-optional.patch \ + file://0001-makefiles-Drop-setting-mcpu-to-cortex-a8-on-arm-arch.patch \ + file://0001-str_tester.c-Limit-rawmemchr-test-to-glibc.patch \ + file://0001-sigqueue-Rename-_sifields-to-__si_fields-on-musl.patch \ + file://0002-context-APIs-are-not-available-on-musl.patch \ + file://0003-correct-include-directive-path-for-config.h.patch \ + file://0005-tc20_verifywrap.c-Fake-__GLIBC_PREREQ-with-musl.patch \ + file://0001-memcheck-arm64-Define-__THROW-if-not-already-defined.patch \ + file://0002-memcheck-x86-Define-__THROW-if-not-defined.patch \ + file://0003-tests-seg_override-Replace-__modify_ldt-with-syscall.patch \ + file://0001-fix-opcode-not-supported-on-mips32-linux.patch \ + file://0001-Guard-against-__GLIBC_PREREQ-for-musl-libc.patch \ + file://0001-Make-local-functions-static-to-avoid-assembler-error.patch \ + file://0001-Return-a-valid-exit_code-from-vg_regtest.patch \ + file://0001-valgrind-filter_xml_frames-do-not-filter-usr.patch \ + file://0001-memcheck-vgtests-remove-fullpath-after-flags.patch \ + file://s390x_vec_op_t.patch \ + file://0001-none-tests-fdleak_cmsg.stderr.exp-adjust-tmp-paths.patch \ + file://0001-memcheck-tests-Fix-timerfd-syscall-test.patch \ + " +SRC_URI[sha256sum] = "00859aa13a772eddf7822225f4b46ee0d39afbe071d32778da4d99984081f7f5" +UPSTREAM_CHECK_REGEX = "valgrind-(?P\d+(\.\d+)+)\.tar" + +COMPATIBLE_HOST = '(i.86|x86_64|arm|aarch64|mips|powerpc|powerpc64).*-linux' + +# patch 0001-memcheck-vgtests-remove-fullpath-after-flags.patch removes relative path +# argument. Change expected stderr files accordingly. +do_patch:append() { + bb.build.exec_func('do_sed_paths', d) +} + +do_sed_paths() { + sed -i -e 's|tests/||' ${S}/memcheck/tests/badfree3.stderr.exp + sed -i -e 's|tests/||' ${S}/memcheck/tests/varinfo5.stderr.exp +} + +# valgrind supports armv7 and above +COMPATIBLE_HOST:armv4 = 'null' +COMPATIBLE_HOST:armv5 = 'null' +COMPATIBLE_HOST:armv6 = 'null' + +# valgrind fails with powerpc soft-float +COMPATIBLE_HOST:powerpc = "${@bb.utils.contains('TARGET_FPU', 'soft', 'null', '.*-linux', d)}" + +# X32 isn't supported by valgrind at this time +COMPATIBLE_HOST:linux-gnux32 = 'null' +COMPATIBLE_HOST:linux-muslx32 = 'null' + +# Disable for some MIPS variants +COMPATIBLE_HOST:mipsarchr6 = 'null' +COMPATIBLE_HOST:linux-gnun32 = 'null' + +# Disable for powerpc64 with musl +COMPATIBLE_HOST:libc-musl:powerpc64 = 'null' + +# brokenseip is unfortunately required by ptests to pass +inherit autotools-brokensep ptest multilib_header + +EXTRA_OECONF = "--enable-tls --without-mpicc" +EXTRA_OECONF += "${@['--enable-only32bit','--enable-only64bit'][d.getVar('SITEINFO_BITS') != '32']}" + +# valgrind checks host_cpu "armv7*)", so we need to over-ride the autotools.bbclass default --host option +EXTRA_OECONF:append:arm = " --host=armv7${HOST_VENDOR}-${HOST_OS}" + +EXTRA_OEMAKE = "-w" + +CACHED_CONFIGUREVARS += "ac_cv_path_PERL='/usr/bin/env perl'" + +# valgrind likes to control its own optimisation flags. It generally defaults +# to -O2 but uses -O0 for some specific test apps etc. Passing our own flags +# (via CFLAGS) means we interfere with that. Only pass DEBUG_FLAGS to it +# which fixes build path issue in DWARF. +SELECTED_OPTIMIZATION = "${DEBUG_FLAGS}" + +do_configure:prepend () { + rm -rf ${S}/config.h + sed -i -e 's:$(abs_top_builddir):$(pkglibdir)/ptest:g' ${S}/none/tests/Makefile.am + sed -i -e 's:$(top_builddir):$(pkglibdir)/ptest:g' ${S}/memcheck/tests/Makefile.am +} + +do_install:append () { + install -m 644 ${B}/default.supp ${D}/${libexecdir}/valgrind/ + oe_multilib_header valgrind/config.h +} + +VALGRINDARCH ?= "${TARGET_ARCH}" +VALGRINDARCH:aarch64 = "arm64" +VALGRINDARCH:x86-64 = "amd64" +VALGRINDARCH:x86 = "x86" +VALGRINDARCH:mips = "mips32" +VALGRINDARCH:mipsel = "mips32" +VALGRINDARCH:mips64el = "mips64" +VALGRINDARCH:powerpc = "ppc" +VALGRINDARCH:powerpc64 = "ppc64" +VALGRINDARCH:powerpc64le = "ppc64le" + +INHIBIT_PACKAGE_STRIP_FILES = "${PKGD}${libexecdir}/valgrind/vgpreload_memcheck-${VALGRINDARCH}-linux.so" + +RDEPENDS:${PN} += "perl" + +# valgrind needs debug information for ld.so at runtime in order to +# redirect functions like strlen. +RRECOMMENDS:${PN} += "${TCLIBC}-dbg" + +RDEPENDS:${PN}-ptest += " bash coreutils curl file \ + gdb libgomp \ + perl \ + perl-module-file-basename perl-module-file-glob perl-module-getopt-long \ + perl-module-overloading perl-module-cwd perl-module-ipc-open3 \ + perl-module-carp perl-module-symbol \ + procps sed ${PN}-dbg ${PN}-src ${TCLIBC}-src gcc-runtime-dbg" +RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-utils" + +# One of the tests contains a bogus interpreter path on purpose. +# Skip file dependency check +SKIP_FILEDEPS:${PN}-ptest = '1' +INSANE_SKIP:${PN}-ptest = "debug-deps" + +do_compile_ptest() { + oe_runmake check +} + +do_install_ptest() { + chmod +x ${B}/tests/vg_regtest + + # The test application binaries are not automatically installed. + # Grab them from the build directory. + # + # The regression tests require scripts and data files that are not + # copied to the build directory. They must be copied from the + # source directory. + saved_dir=$PWD + for parent_dir in ${S} ${B} ; do + cd $parent_dir + + subdirs=" \ + .in_place \ + cachegrind/tests \ + callgrind/tests \ + dhat/tests \ + drd/tests \ + gdbserver_tests \ + helgrind/tests \ + lackey/tests \ + massif/tests \ + memcheck/tests \ + none/tests \ + tests \ + exp-bbv/tests \ + " + # Get the vg test scripts, filters, and expected files + for dir in $subdirs ; do + find $dir | cpio -pvdu ${D}${PTEST_PATH} + done + cd $saved_dir + done + + # The scripts reference config.h so add it to the top ptest dir. + cp ${B}/config.h ${D}${PTEST_PATH} + install -D ${WORKDIR}/remove-for-aarch64 ${D}${PTEST_PATH} + install -D ${WORKDIR}/remove-for-all ${D}${PTEST_PATH} + install -D ${WORKDIR}/taskset_nondeterministic_tests ${D}${PTEST_PATH} + + # Add an executable need by none/tests/bigcode + mkdir ${D}${PTEST_PATH}/perf + cp ${B}/perf/bigcode ${D}${PTEST_PATH}/perf + + # Add an executable needed by memcheck/tests/vcpu_bz2 + cp ${B}/perf/bz2 ${D}${PTEST_PATH}/perf + + # Make the ptest dir look like the top level valgrind src dir + # This is checked by the gdbserver_tests/make_local_links script + mkdir ${D}${PTEST_PATH}/coregrind + cp ${B}/coregrind/vgdb ${D}${PTEST_PATH}/coregrind + + # Add an executable needed by massif tests + cp ${B}/massif/ms_print ${D}${PTEST_PATH}/massif/ms_print + + find ${D}${PTEST_PATH} \ + \( \ + -name "Makefile*" \ + -o -name "*.o" \ + \) \ + -exec rm {} \; + + # These files need to be newer so touch them. + touch ${D}${PTEST_PATH}/cachegrind/tests/a.c -r ${D}${PTEST_PATH}/cachegrind/tests/cgout-test + + # find *_annotate in ${bindir} for yocto build + sed -i s:\.\./\.\./cachegrind/cg_annotate:${bindir}/cg_annotate: ${D}${PTEST_PATH}/cachegrind/tests/ann1.vgtest + sed -i s:\.\./\.\./cachegrind/cg_annotate:${bindir}/cg_annotate: ${D}${PTEST_PATH}/cachegrind/tests/ann2.vgtest + + sed -i s:\.\./\.\./callgrind/callgrind_annotate:${bindir}/callgrind_annotate: ${D}${PTEST_PATH}/callgrind/tests/ann1.vgtest + sed -i s:\.\./\.\./callgrind/callgrind_annotate:${bindir}/callgrind_annotate: ${D}${PTEST_PATH}/callgrind/tests/ann2.vgtest + + # point the expanded @abs_top_builddir@ of the host to PTEST_PATH + sed -i s:${S}:${PTEST_PATH}:g \ + ${D}${PTEST_PATH}/memcheck/tests/linux/debuginfod-check.vgtest + + # handle multilib + sed -i s:@libdir@:${libdir}:g ${D}${PTEST_PATH}/run-ptest + sed -i s:@libexecdir@:${libexecdir}:g ${D}${PTEST_PATH}/run-ptest + sed -i s:@bindir@:${bindir}:g ${D}${PTEST_PATH}/run-ptest + + # This test fails on the host as well, using both 3.15 and git master (as of Jan 24 2020) + # https://bugs.kde.org/show_bug.cgi?id=402833 + rm ${D}${PTEST_PATH}/memcheck/tests/overlap.vgtest + + # This is known failure see https://bugs.kde.org/show_bug.cgi?id=435732 + rm ${D}${PTEST_PATH}/memcheck/tests/leak_cpp_interior.vgtest + + # As the binary isn't stripped or debug-splitted, the source file isn't fetched + # via dwarfsrcfiles either, so it needs to be installed manually. + mkdir -p ${D}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/${BP}/none/tests/ + install ${S}/none/tests/tls.c ${D}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/${BP}/none/tests/ +} + +# avoid stripping some generated binaries otherwise some of the tests will fail +# run-strip-reloc.sh, run-strip-strmerge.sh and so on will fail +INHIBIT_PACKAGE_STRIP_FILES += "\ + ${PKGD}${PTEST_PATH}/none/tests/tls \ + ${PKGD}${PTEST_PATH}/none/tests/tls.so \ + ${PKGD}${PTEST_PATH}/none/tests/tls2.so \ + ${PKGD}${PTEST_PATH}/helgrind/tests/tc09_bad_unlock \ + ${PKGD}${PTEST_PATH}/memcheck/tests/manuel1 \ + ${PKGD}${PTEST_PATH}/drd/tests/pth_detached3 \ +" -- cgit 1.2.3-korg