commit: 1d76aa204945dc2626c7bdd16144f3844c9e5480 Author: Sam James <sam <AT> gentoo <DOT> org> AuthorDate: Mon Aug 28 06:31:05 2023 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Mon Aug 28 06:37:13 2023 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1d76aa20
dev-util/valgrind: backport two fixes (suppressions w/ new glibc, memcpy false positive) 1) Fix suppressions w/ >=glibc-2.34 (sort of >=glibc-2.38) This might be a glibc-2.38 thing wrt why I started hitting it now but I suspect it's actually because of 1f0fd3e2aee01e0c09e7103c8af4183b57faef49 which enabled ISA magic. This breaks <glibc-2.34 in lieu of a proper upstream fix but those versions are masked in Gentoo anyway. 2) Add a workaround (same as Fedora) for false positive "overlapping memcpy" errors with _FORTIFY_SOURCE's memcpy_chk. Bug: https://bugs.kde.org/show_bug.cgi?id=402833 Bug: https://bugs.kde.org/show_bug.cgi?id=453084 Bug: https://bugs.kde.org/show_bug.cgi?id=464671 Signed-off-by: Sam James <sam <AT> gentoo.org> .../valgrind-3.21.0-glibc-2.34-suppressions.patch | 197 +++++++++++++++++++++ .../valgrind-3.21.0-memcpy-fortify_source.patch | 26 +++ ...grind-9999.ebuild => valgrind-3.21.0-r2.ebuild} | 6 +- dev-util/valgrind/valgrind-9999.ebuild | 2 + 4 files changed, 228 insertions(+), 3 deletions(-) diff --git a/dev-util/valgrind/files/valgrind-3.21.0-glibc-2.34-suppressions.patch b/dev-util/valgrind/files/valgrind-3.21.0-glibc-2.34-suppressions.patch new file mode 100644 index 000000000000..c4111326cfa2 --- /dev/null +++ b/dev-util/valgrind/files/valgrind-3.21.0-glibc-2.34-suppressions.patch @@ -0,0 +1,197 @@ +commit e04914e10126d3a8de13302e958bbfd5e83a6637 +Author: Romain Geissler <[email protected]> +Date: Mon Jan 30 16:09:47 2023 +0000 + + Fragile temporary fix for https://bugs.kde.org/show_bug.cgi?id=464671: avoid using @GLIBC_VERSION@ with our recent toolchains. + + This is fragile as it might a bit too many things (especially ld*.so, which maybe shall be written "ld-linux-*.so" to be a bit more robust) + and also it doesn't work for glibc < 2.34. + + Ideally something similar to GLIBC_LIBC_PATH shall be introduced for ld.so and libdl.so, so that + it covers both glibc < 2.34 and glibc >= 2.34. + +--- a/glibc-2.X.supp.in ++++ b/glibc-2.X.supp.in +@@ -39,74 +39,74 @@ + { + dl-hack3-cond-1 + Memcheck:Cond +- obj:*/lib*/ld-@GLIBC_VERSION@*.so* +- obj:*/lib*/ld-@GLIBC_VERSION@*.so* +- obj:*/lib*/ld-@GLIBC_VERSION@*.so* ++ obj:*/lib*/ld*.so* ++ obj:*/lib*/ld*.so* ++ obj:*/lib*/ld*.so* + } + { + dl-hack3-cond-2 + Memcheck:Cond +- obj:*/lib*/ld-@GLIBC_VERSION@*.so* +- obj:*/lib*/ld-@GLIBC_VERSION@*.so* +- obj:*/lib*/libc-@GLIBC_VERSION@*.so* ++ obj:*/lib*/ld*.so* ++ obj:*/lib*/ld*.so* ++ obj:@GLIBC_LIBC_PATH@ + } + { + dl-hack3-cond-3 + Memcheck:Cond +- obj:*/lib*/ld-@GLIBC_VERSION@*.so* +- obj:*/lib*/libc-@GLIBC_VERSION@*.so* +- obj:*/lib*/libc-@GLIBC_VERSION@*.so* ++ obj:*/lib*/ld*.so* ++ obj:@GLIBC_LIBC_PATH@ ++ obj:@GLIBC_LIBC_PATH@ + } + { + dl-hack3-cond-4 + Memcheck:Cond +- obj:*/lib*/ld-@GLIBC_VERSION@*.so* +- obj:*/lib*/ld-@GLIBC_VERSION@*.so* +- obj:*/lib*/libdl-@GLIBC_VERSION@*.so* ++ obj:*/lib*/ld*.so* ++ obj:*/lib*/ld*.so* ++ obj:@GLIBC_LIBC_PATH@ + } + + { + dl-hack4-64bit-addr-1 + Memcheck:Addr8 +- obj:*/lib*/ld-@GLIBC_VERSION@*.so* +- obj:*/lib*/ld-@GLIBC_VERSION@*.so* +- obj:*/lib*/ld-@GLIBC_VERSION@*.so* ++ obj:*/lib*/ld*.so* ++ obj:*/lib*/ld*.so* ++ obj:*/lib*/ld*.so* + } + { + dl-hack4-64bit-addr-2 + Memcheck:Addr8 +- obj:*/lib*/ld-@GLIBC_VERSION@*.so* +- obj:*/lib*/ld-@GLIBC_VERSION@*.so* +- obj:*/lib*/libc-@GLIBC_VERSION@*.so* ++ obj:*/lib*/ld*.so* ++ obj:*/lib*/ld*.so* ++ obj:@GLIBC_LIBC_PATH@ + } + { + dl-hack4-64bit-addr-3 + Memcheck:Addr8 +- obj:*/lib*/ld-@GLIBC_VERSION@*.so* +- obj:*/lib*/ld-@GLIBC_VERSION@*.so* +- obj:*/lib*/libdl-@GLIBC_VERSION@*.so* ++ obj:*/lib*/ld*.so* ++ obj:*/lib*/ld*.so* ++ obj:@GLIBC_LIBC_PATH@ + } + + { + dl-hack5-32bit-addr-1 + Memcheck:Addr4 +- obj:*/lib*/ld-@GLIBC_VERSION@*.so +- obj:*/lib*/ld-@GLIBC_VERSION@*.so +- obj:*/lib*/ld-@GLIBC_VERSION@*.so ++ obj:*/lib*/ld*.so ++ obj:*/lib*/ld*.so ++ obj:*/lib*/ld*.so + } + { + dl-hack5-32bit-addr-3 + Memcheck:Addr4 +- obj:*/lib*/ld-@GLIBC_VERSION@*.so +- obj:*/lib*/ld-@GLIBC_VERSION@*.so +- obj:*/lib*/libdl-@GLIBC_VERSION@*.so* ++ obj:*/lib*/ld*.so ++ obj:*/lib*/ld*.so ++ obj:@GLIBC_LIBC_PATH@ + } + { + dl-hack5-32bit-addr-4 + Memcheck:Addr4 +- obj:*/lib*/ld-@GLIBC_VERSION@*.so +- obj:*/lib*/libdl-@GLIBC_VERSION@*.so* +- obj:*/lib*/ld-@GLIBC_VERSION@*.so ++ obj:*/lib*/ld*.so ++ obj:@GLIBC_LIBC_PATH@ ++ obj:*/lib*/ld*.so + } + + +@@ -124,7 +124,7 @@ + glibc-2.5.x-on-SUSE-10.2-(PPC)-2a + Memcheck:Cond + fun:index +- obj:*ld-@GLIBC_VERSION@.*.so ++ obj:*/lib*/ld*.so* + } + { + glibc-2.5.x-on-SuSE-10.2-(PPC)-2b +@@ -136,7 +136,7 @@ + glibc-2.5.5-on-SuSE-10.2-(PPC)-2c + Memcheck:Addr4 + fun:index +- obj:*ld-@GLIBC_VERSION@.*.so ++ obj:*/lib*/ld*.so* + } + { + glibc-2.3.5-on-SuSE-10.1-(PPC)-3 +@@ -149,9 +149,9 @@ + { + glibc-@[email protected](x86) + Memcheck:Addr4 +- obj:*/lib/ld-@GLIBC_VERSION@*.so +- obj:*/lib/ld-@GLIBC_VERSION@*.so +- obj:*/lib/ld-@GLIBC_VERSION@*.so ++ obj:*/lib/ld*.so ++ obj:*/lib/ld*.so ++ obj:*/lib/ld*.so + } + + { +@@ -168,9 +168,9 @@ + Memcheck:Param + socketcall.sendto(msg) + fun:__sendto_nocancel +- obj:/*libc-@GLIBC_VERSION@*.so +- obj:/*libc-@GLIBC_VERSION@*.so +- obj:/*libc-@GLIBC_VERSION@*.so ++ obj:@GLIBC_LIBC_PATH@ ++ obj:@GLIBC_LIBC_PATH@ ++ obj:@GLIBC_LIBC_PATH@ + } + { + glibc24-64bit-padding-1c +@@ -180,7 +180,7 @@ + fun:__nscd_get_map_ref + fun:nscd_get*_r + fun:*nscd* +- obj:/*libc-@GLIBC_VERSION@*.so ++ obj:@GLIBC_LIBC_PATH@ + } + + +@@ -199,18 +199,18 @@ + Memcheck:Param + socketcall.sendto(msg) + fun:send +- obj:/*libc-@GLIBC_VERSION@*.so +- obj:/*libc-@GLIBC_VERSION@*.so +- obj:/*libc-@GLIBC_VERSION@*.so ++ obj:@GLIBC_LIBC_PATH@ ++ obj:@GLIBC_LIBC_PATH@ ++ obj:@GLIBC_LIBC_PATH@ + } + { + X11-64bit-padding-4b + Memcheck:Param + socketcall.send(msg) + fun:send +- obj:/*libc-@GLIBC_VERSION@*.so +- obj:/*libc-@GLIBC_VERSION@*.so +- obj:/*libc-@GLIBC_VERSION@*.so ++ obj:@GLIBC_LIBC_PATH@ ++ obj:@GLIBC_LIBC_PATH@ ++ obj:@GLIBC_LIBC_PATH@ + } + + ##----------------------------------------------------------------------## diff --git a/dev-util/valgrind/files/valgrind-3.21.0-memcpy-fortify_source.patch b/dev-util/valgrind/files/valgrind-3.21.0-memcpy-fortify_source.patch new file mode 100644 index 000000000000..87acc9ff9f55 --- /dev/null +++ b/dev-util/valgrind/files/valgrind-3.21.0-memcpy-fortify_source.patch @@ -0,0 +1,26 @@ +Avoid false positives w/ overlapping memcpy args with _FORTIFY_SOURCE's +memcpy_chk. + +https://src.fedoraproject.org/rpms/valgrind/raw/rawhide/f/valgrind-3.21.0-no-memcpy-replace-check.patch +https://bugs.kde.org/show_bug.cgi?id=402833 +https://bugs.kde.org/show_bug.cgi?id=453084 +--- a/shared/vg_replace_strmem.c ++++ b/shared/vg_replace_strmem.c +@@ -1128,7 +1128,7 @@ static inline void my_exit ( int x ) + MEMMOVE_OR_MEMCPY(20181, soname, fnname, 0) + + #define MEMCPY(soname, fnname) \ +- MEMMOVE_OR_MEMCPY(20180, soname, fnname, 1) ++ MEMMOVE_OR_MEMCPY(20180, soname, fnname, 0) /* See KDE bug #402833 */ + + #if defined(VGO_linux) + /* For older memcpy we have to use memmove-like semantics and skip +@@ -1714,8 +1714,6 @@ static inline void my_exit ( int x ) + RECORD_COPY(len); \ + if (len == 0) \ + return dst; \ +- if (is_overlap(dst, src, len, len)) \ +- RECORD_OVERLAP_ERROR("memcpy_chk", dst, src, len); \ + if ( dst > src ) { \ + d = (HChar *)dst + len - 1; \ + s = (const HChar *)src + len - 1; \ diff --git a/dev-util/valgrind/valgrind-9999.ebuild b/dev-util/valgrind/valgrind-3.21.0-r2.ebuild similarity index 96% copy from dev-util/valgrind/valgrind-9999.ebuild copy to dev-util/valgrind/valgrind-3.21.0-r2.ebuild index a32a0da1588d..8a4f5d8f4003 100644 --- a/dev-util/valgrind/valgrind-9999.ebuild +++ b/dev-util/valgrind/valgrind-3.21.0-r2.ebuild @@ -32,6 +32,8 @@ PATCHES=( # Respect CFLAGS, LDFLAGS "${FILESDIR}"/${PN}-3.7.0-respect-flags.patch "${FILESDIR}"/${PN}-3.15.0-Build-ldst_multiple-test-with-fno-pie.patch + "${FILESDIR}"/${PN}-3.21.0-glibc-2.34-suppressions.patch + "${FILESDIR}"/${PN}-3.21.0-memcpy-fortify_source.patch ) src_prepare() { @@ -57,9 +59,7 @@ src_prepare() { } src_configure() { - local myconf=( - --with-gdbscripts-dir="${EPREFIX}"/usr/share/gdb/auto-load - ) + local myconf=() # Respect ar, bug #468114 tc-export AR diff --git a/dev-util/valgrind/valgrind-9999.ebuild b/dev-util/valgrind/valgrind-9999.ebuild index a32a0da1588d..c1a57f63331b 100644 --- a/dev-util/valgrind/valgrind-9999.ebuild +++ b/dev-util/valgrind/valgrind-9999.ebuild @@ -32,6 +32,8 @@ PATCHES=( # Respect CFLAGS, LDFLAGS "${FILESDIR}"/${PN}-3.7.0-respect-flags.patch "${FILESDIR}"/${PN}-3.15.0-Build-ldst_multiple-test-with-fno-pie.patch + "${FILESDIR}"/${PN}-3.21.0-glibc-2.34-suppressions.patch + "${FILESDIR}"/${PN}-3.21.0-memcpy-fortify_source.patch ) src_prepare() {
