From dfc60185faeb5d4f9d8828d42b7f0d3b57fbeda5 Mon Sep 17 00:00:00 2001 From: eabdullin Date: Wed, 14 May 2025 17:38:01 +0000 Subject: [PATCH] import UBI valgrind-3.24.0-3.el10 --- .gitignore | 2 +- .valgrind.metadata | 1 - 0001-Prepare-NEWS-for-branch-3.24-fixes.patch | 31 + ...exec_valgrind-Fix-off-by-one-error-w.patch | 37 + ...exec_valgrind-Fix-another-off-by-one.patch | 36 + ...leak-filter-for-write-on-write-on-li.patch | 27 + ...-patterns-for-missing-main-frame-for.patch | 491 ++++++++++++ ...onal-exp-ppc64le-files-to-EXTRA_DIST.patch | 41 + ...landlock_create_ruleset-444-landlock.patch | 358 +++++++++ ...ts-tc17_sembar.c-Remove-bool-typedef.patch | 35 + ...ntext.c-Rename-typedef-struct-thread.patch | 38 + ...4814.c-sa_handler-take-an-int-as-arg.patch | 34 + ...ve_mount-fsopen-fsconfig-fsmount-fsp.patch | 398 ++++++++++ ...cognize-new-DWARF5-DW_LANG-constants.patch | 144 ++++ ...Use-is-not-a-valid-CoreError-type-in.patch | 147 ++++ 0014-linux-support-EVIOCGRAB-ioctl.patch | 60 ++ SOURCES/valgrind-3.22.0-rodata.patch | 122 --- sources | 1 + ...tch => valgrind-3.16.0-some-Wl-z-now.patch | 0 ...valgrind-3.16.0-some-stack-protector.patch | 0 ...lgrind-3.9.0-cachegrind-improvements.patch | 0 ...pp.patch => valgrind-3.9.0-ldso-supp.patch | 0 SPECS/valgrind.spec => valgrind.spec | 737 +++++++++++++----- 23 files changed, 2410 insertions(+), 330 deletions(-) delete mode 100644 .valgrind.metadata create mode 100644 0001-Prepare-NEWS-for-branch-3.24-fixes.patch create mode 100644 0002-vgdb.c-fork_and_exec_valgrind-Fix-off-by-one-error-w.patch create mode 100644 0003-vgdb.c-fork_and_exec_valgrind-Fix-another-off-by-one.patch create mode 100644 0004-regtest-add-a-fdleak-filter-for-write-on-write-on-li.patch create mode 100644 0005-Add-exp-and-supp-patterns-for-missing-main-frame-for.patch create mode 100644 0006-Add-additional-exp-ppc64le-files-to-EXTRA_DIST.patch create mode 100644 0007-Add-support-for-landlock_create_ruleset-444-landlock.patch create mode 100644 0008-helgrind-tests-tc17_sembar.c-Remove-bool-typedef.patch create mode 100644 0009-drd-tests-swapcontext.c-Rename-typedef-struct-thread.patch create mode 100644 0010-none-tests-bug234814.c-sa_handler-take-an-int-as-arg.patch create mode 100644 0011-Add-open_tree-move_mount-fsopen-fsconfig-fsmount-fsp.patch create mode 100644 0012-Recognize-new-DWARF5-DW_LANG-constants.patch create mode 100644 0013-Bug-498317-FdBadUse-is-not-a-valid-CoreError-type-in.patch create mode 100644 0014-linux-support-EVIOCGRAB-ioctl.patch delete mode 100644 SOURCES/valgrind-3.22.0-rodata.patch create mode 100644 sources rename SOURCES/valgrind-3.16.0-some-Wl-z-now.patch => valgrind-3.16.0-some-Wl-z-now.patch (100%) rename SOURCES/valgrind-3.16.0-some-stack-protector.patch => valgrind-3.16.0-some-stack-protector.patch (100%) rename SOURCES/valgrind-3.9.0-cachegrind-improvements.patch => valgrind-3.9.0-cachegrind-improvements.patch (100%) rename SOURCES/valgrind-3.9.0-ldso-supp.patch => valgrind-3.9.0-ldso-supp.patch (100%) rename SPECS/valgrind.spec => valgrind.spec (74%) diff --git a/.gitignore b/.gitignore index 49d7e90..4d5965d 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/valgrind-3.22.0.tar.bz2 +valgrind-3.24.0.tar.bz2 diff --git a/.valgrind.metadata b/.valgrind.metadata deleted file mode 100644 index c2dab07..0000000 --- a/.valgrind.metadata +++ /dev/null @@ -1 +0,0 @@ -60894cbf59d480c1794674da24a8406518a8df59 SOURCES/valgrind-3.22.0.tar.bz2 diff --git a/0001-Prepare-NEWS-for-branch-3.24-fixes.patch b/0001-Prepare-NEWS-for-branch-3.24-fixes.patch new file mode 100644 index 0000000..12402a0 --- /dev/null +++ b/0001-Prepare-NEWS-for-branch-3.24-fixes.patch @@ -0,0 +1,31 @@ +From cc09f61e56e90c9d3a0e7231cc69b2a499d1205f Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Sat, 23 Nov 2024 02:09:27 +0100 +Subject: [PATCH 01/11] Prepare NEWS for branch 3.24 fixes + +--- + NEWS | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/NEWS b/NEWS +index 49b4647d4295..8362e1d2df41 100644 +--- a/NEWS ++++ b/NEWS +@@ -1,3 +1,14 @@ ++Branch 3.24 ++~~~~~~~~~~~ ++ ++* ==================== FIXED BUGS ==================== ++ ++The following bugs have been fixed or resolved on this branch. ++ ++To see details of a given bug, visit ++ https://bugs.kde.org/show_bug.cgi?id=XXXXXX ++where XXXXXX is the bug number as listed above. ++ + Release 3.24.0 (31 Oct 2024) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +-- +2.47.0 + diff --git a/0002-vgdb.c-fork_and_exec_valgrind-Fix-off-by-one-error-w.patch b/0002-vgdb.c-fork_and_exec_valgrind-Fix-off-by-one-error-w.patch new file mode 100644 index 0000000..30fd79d --- /dev/null +++ b/0002-vgdb.c-fork_and_exec_valgrind-Fix-off-by-one-error-w.patch @@ -0,0 +1,37 @@ +From 2cb0bee2d7722b57956f66a0795b5b9106f88afc Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Tue, 12 Nov 2024 13:23:03 +0100 +Subject: [PATCH 02/11] vgdb.c (fork_and_exec_valgrind): Fix off-by-one error + write + +commit 646978d9adc5 ("vgdb: Handle EINTR and EAGAIN more +consistently") introduced an off-by-one issue trying to write back the +error from child to parent. + +Instead of +1 it should have been +written (which initially is zero). + +This is in an "should never happen" path, so hopefully didn't really +cause issues. But if it did happen the parent would have gotten the +wrong error code. + +(cherry picked from commit f4fe5faf3d0f45b3824bbb9070232682df52a582) +--- + coregrind/vgdb.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/coregrind/vgdb.c b/coregrind/vgdb.c +index 786ead160d34..112f23fe6ba1 100644 +--- a/coregrind/vgdb.c ++++ b/coregrind/vgdb.c +@@ -1368,7 +1368,7 @@ int fork_and_exec_valgrind (int argc, char **argv, const char *working_dir, + // We try to write the result to the parent, but always exit. + size_t written = 0; + while (written < sizeof (int)) { +- ssize_t nrw = write (pipefd[1], ((char *) &err) + 1, ++ ssize_t nrw = write (pipefd[1], ((char *) &err) + written, + sizeof (int) - written); + if (nrw == -1) { + if (errno == EINTR || errno == EAGAIN) +-- +2.47.0 + diff --git a/0003-vgdb.c-fork_and_exec_valgrind-Fix-another-off-by-one.patch b/0003-vgdb.c-fork_and_exec_valgrind-Fix-another-off-by-one.patch new file mode 100644 index 0000000..d04870f --- /dev/null +++ b/0003-vgdb.c-fork_and_exec_valgrind-Fix-another-off-by-one.patch @@ -0,0 +1,36 @@ +From 8b08da73cf3d72439c4f750c96ed2f088ef1bbec Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Tue, 12 Nov 2024 13:34:09 +0100 +Subject: [PATCH 03/11] vgdb.c (fork_and_exec_valgrind): Fix another off-by-one + error write + +commit 646978d9adc5 ("vgdb: Handle EINTR and EAGAIN more +consistently") introduced another off-by-one issue trying to write +back the error from child to parent. + +Instead of +1 it should have been +written (which initially is zero). + +This is when the child needs to do a chdir and that chdir fails. If +that happens the parent would have gotten the wrong error code. + +(cherry picked from commit 747ca4eb5fed5dd58a14391a997bb9e658e3b1c8) +--- + coregrind/vgdb.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/coregrind/vgdb.c b/coregrind/vgdb.c +index 112f23fe6ba1..cc945c8dfafa 100644 +--- a/coregrind/vgdb.c ++++ b/coregrind/vgdb.c +@@ -1289,7 +1289,7 @@ int fork_and_exec_valgrind (int argc, char **argv, const char *working_dir, + // We try to write the result to the parent, but always exit. + size_t written = 0; + while (written < sizeof (int)) { +- int nrw = write (pipefd[1], ((char *)&err) + 1, ++ int nrw = write (pipefd[1], ((char *)&err) + written, + sizeof (int) - written); + if (nrw == -1) { + if (errno == EINTR || errno == EAGAIN) +-- +2.47.0 + diff --git a/0004-regtest-add-a-fdleak-filter-for-write-on-write-on-li.patch b/0004-regtest-add-a-fdleak-filter-for-write-on-write-on-li.patch new file mode 100644 index 0000000..2a8838a --- /dev/null +++ b/0004-regtest-add-a-fdleak-filter-for-write-on-write-on-li.patch @@ -0,0 +1,27 @@ +From 7e79bb6e6b80eb43138cbbb64737433f9e036cd4 Mon Sep 17 00:00:00 2001 +From: Paul Floyd +Date: Thu, 21 Nov 2024 08:44:04 +0100 +Subject: [PATCH 04/11] regtest: add a fdleak filter for write on write on + linux arm64 + +(cherry picked from commit 9150b3c7cfad2fdbeb7cf707175c359ee12d8f75) +--- + none/tests/filter_fdleak | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/none/tests/filter_fdleak b/none/tests/filter_fdleak +index d26937bccd38..72923aa730c8 100755 +--- a/none/tests/filter_fdleak ++++ b/none/tests/filter_fdleak +@@ -19,6 +19,8 @@ perl -p -e 's/socket\.c:[1-9][0-9]*/in \/...libc.../' | + # arm systems substitute open for creat + perl -p -e 's/open \(open64\.c:[1-9][0-9]*\)/creat (in \/...libc...)/' | + perl -p -e "s/: open \(/: creat (/" | ++# arm64 write resolved to file:line with debuginfo ++perl -p -e "s/write\.c:[1-9][0-9]*/in \/...libc.../" | + + # FreeBSD specific fdleak filters + perl -p -e 's/ _close / close /;s/ _openat / creat /;s/internet/AF_INET socket 4: 127.0.0.1:... <-> 127.0.0.1:.../' | +-- +2.47.0 + diff --git a/0005-Add-exp-and-supp-patterns-for-missing-main-frame-for.patch b/0005-Add-exp-and-supp-patterns-for-missing-main-frame-for.patch new file mode 100644 index 0000000..22efd08 --- /dev/null +++ b/0005-Add-exp-and-supp-patterns-for-missing-main-frame-for.patch @@ -0,0 +1,491 @@ +From ba15b8fe7d6fabfb73424a616de18a752a56430a Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Sat, 23 Nov 2024 21:28:13 +0100 +Subject: [PATCH 05/11] Add exp and supp patterns for missing main frame for + ppc64le + +In some cases on ppc64le we are missing the main frame. +Add alternative .exp-ppc64le variants for socket_close_xml, +fdleak_cmsg_xml and fdleak_ipv4_xml. And extra suppressions +without a main frame for fdleak_cmsg_supp. + +See also commit 04d30049b "Filter away "main" differences in filter_fdleak" + +(cherry picked from commit e6960c2e41b103ab8d393cbe13dc6473fb89bffc) +--- + none/tests/fdleak_cmsg_supp.supp | 47 ++++++ + none/tests/fdleak_cmsg_xml.stderr.exp-ppc64le | 147 ++++++++++++++++++ + none/tests/fdleak_ipv4_xml.stderr.exp-ppc64le | 139 +++++++++++++++++ + .../tests/socket_close_xml.stderr.exp-ppc64le | 98 ++++++++++++ + 4 files changed, 431 insertions(+) + create mode 100644 none/tests/fdleak_cmsg_xml.stderr.exp-ppc64le + create mode 100644 none/tests/fdleak_ipv4_xml.stderr.exp-ppc64le + create mode 100644 none/tests/socket_close_xml.stderr.exp-ppc64le + +diff --git a/none/tests/fdleak_cmsg_supp.supp b/none/tests/fdleak_cmsg_supp.supp +index 92fbacabdb78..a169fd888bcc 100644 +--- a/none/tests/fdleak_cmsg_supp.supp ++++ b/none/tests/fdleak_cmsg_supp.supp +@@ -12,6 +12,13 @@ + fun:server + fun:main + } ++{ ++ sup2-ppc64le ++ CoreError:FdNotClosed ++ fun:socket ++ fun:server ++ #fun:main ++} + { + sup3 + CoreError:FdNotClosed +@@ -42,3 +49,43 @@ + fun:client + fun:main + } ++{ ++ sup6-ppc64le ++ CoreError:FdNotClosed ++ fun:socket ++ fun:client ++ #fun:main ++} ++{ ++ sup7 ++ CoreError:FdNotClosed ++ fun:_so_socket ++ fun:__xnet_socket ++ fun:client ++ fun:main ++} ++{ ++ sup8 ++ CoreError:FdNotClosed ++ fun:__so_recvmsg ++ fun:__xnet_recvmsg ++ fun:client ++ fun:main ++} ++{ ++ sup9 ++ CoreError:FdNotClosed ++ fun:_so_socket ++ fun:__xnet_socket ++ fun:server ++ fun:main ++} ++{ ++ sup10 ++ CoreError:FdNotClosed ++ fun:__so_accept ++ fun:accept ++ fun:server ++ fun:main ++} ++ +diff --git a/none/tests/fdleak_cmsg_xml.stderr.exp-ppc64le b/none/tests/fdleak_cmsg_xml.stderr.exp-ppc64le +new file mode 100644 +index 000000000000..6294094eb92e +--- /dev/null ++++ b/none/tests/fdleak_cmsg_xml.stderr.exp-ppc64le +@@ -0,0 +1,147 @@ ++ ++ ++ ++ ++5 ++none ++ ++ ++ Nulgrind, the minimal Valgrind tool ++ Copyright... ++ Using Valgrind... ++ Command: ./fdleak_cmsg ++ ++ ++... ++... ++none ++ ++ ++ ++ ... ++ --command-line-only=yes ++ --memcheck:leak-check=no ++ --tool=none ++ --track-fds=all ++ --xml=yes ++ --xml-fd=2 ++ --child-silent-after-fork=yes ++ ++ ++ ... ++ ++ ++ ++ ++ RUNNING ++ ++ ++ ++ ++ ++ FINISHED ++ ++ ++ ++ ++ 0x........ ++ ... ++ FdNotClosed ++ 5 ++ ... ++ ... ++ ++ ++ 0x........ ++ ... ++ client ++ ... ++ fdleak_cmsg.c ++ 133 ++ ++ ++ 0x........ ++ ... ++ main ++ ... ++ fdleak_cmsg.c ++ 174 ++ ++ ++ ++ ++ ++ 0x........ ++ ... ++ FdNotClosed ++ 4 ++ ... ++ ... ++ ++ ++ 0x........ ++ ... ++ client ++ ... ++ fdleak_cmsg.c ++ 133 ++ ++ ++ 0x........ ++ ... ++ main ++ ... ++ fdleak_cmsg.c ++ 174 ++ ++ ++ ++ ++ ++ 0x........ ++ ... ++ FdNotClosed ++ 3 ++ ... ++ ++ ++ 0x........ ++ ... ++ client ++ ... ++ fdleak_cmsg.c ++ 112 ++ ++ ++ ++ ++ ++ 0x........ ++ ... ++ FdNotClosed ++ 2 ++ ... ++ ... ++ ++ ++ ++ 0x........ ++ ... ++ FdNotClosed ++ 1 ++ ... ++ ... ++ ++ ++ ++ 0x........ ++ ... ++ FdNotClosed ++ 0 ++ ... ++ ... ++ ++ ++ ++ ++ +diff --git a/none/tests/fdleak_ipv4_xml.stderr.exp-ppc64le b/none/tests/fdleak_ipv4_xml.stderr.exp-ppc64le +new file mode 100644 +index 000000000000..df413b62895c +--- /dev/null ++++ b/none/tests/fdleak_ipv4_xml.stderr.exp-ppc64le +@@ -0,0 +1,139 @@ ++ ++ ++ ++ ++5 ++none ++ ++ ++ Nulgrind, the minimal Valgrind tool ++ Copyright... ++ Using Valgrind... ++ Command: ./fdleak_ipv4 ++ ++ ++... ++... ++none ++ ++ ++ ++ ... ++ --command-line-only=yes ++ --memcheck:leak-check=no ++ --tool=none ++ --track-fds=yes ++ --xml=yes ++ --xml-fd=2 ++ --child-silent-after-fork=yes ++ ++ ++ ... ++ ++ ++ ++ ++ RUNNING ++ ++ ++ ++ ++ 0x........ ++ ... ++ FdBadClose ++ 4 ++ ... ++ ++ ++ 0x........ ++ ... ++ client ++ ... ++ fdleak_ipv4.c ++ 70 ++ ++ ++ 0x........ ++ ... ++ main ++ ... ++ fdleak_ipv4.c ++ 90 ++ ++ ++ Previously closed ++ ++ ++ 0x........ ++ ... ++ client ++ ... ++ fdleak_ipv4.c ++ 69 ++ ++ ++ 0x........ ++ ... ++ main ++ ... ++ fdleak_ipv4.c ++ 90 ++ ++ ++ Originally opened ++ ++ ++ 0x........ ++ ... ++ client ++ ... ++ fdleak_ipv4.c ++ 68 ++ ++ ++ 0x........ ++ ... ++ main ++ ... ++ fdleak_ipv4.c ++ 90 ++ ++ ++ ++ ++ ++ ++ FINISHED ++ ++ ++ ++ ++ 0x........ ++ ... ++ FdNotClosed ++ 3 ++ ... ++ ++ ++ 0x........ ++ ... ++ client ++ ... ++ fdleak_ipv4.c ++ 51 ++ ++ ++ ++ ++ ++ ++ 1 ++ 0x........ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/none/tests/socket_close_xml.stderr.exp-ppc64le b/none/tests/socket_close_xml.stderr.exp-ppc64le +new file mode 100644 +index 000000000000..2f2bc9831e79 +--- /dev/null ++++ b/none/tests/socket_close_xml.stderr.exp-ppc64le +@@ -0,0 +1,98 @@ ++ ++ ++ ++ ++5 ++none ++ ++ ++ Nulgrind, the minimal Valgrind tool ++ Copyright... ++ Using Valgrind... ++ Command: ./socket_close ++ ++ ++... ++... ++none ++ ++ ++ ++ ... ++ --command-line-only=yes ++ --memcheck:leak-check=no ++ --tool=none ++ -q ++ --track-fds=yes ++ --xml=yes ++ --xml-fd=2 ++ ++ ++ ... ++ ++ ++ ++ ++ RUNNING ++ ++ ++ ++Open socket 3 ++close socket_fd 3 ++and close the socket again 3 ++ ++ 0x........ ++ ... ++ FdBadClose ++ 3 ++ ... ++ ++ ++ 0x........ ++ ... ++ main ++ ... ++ socket_close.c ++ 40 ++ ++ ++ Previously closed ++ ++ ++ 0x........ ++ ... ++ main ++ ... ++ socket_close.c ++ 36 ++ ++ ++ Originally opened ++ ++ ++ 0x........ ++ ... ++ open_socket ++ ... ++ socket_close.c ++ 17 ++ ++ ++ ++ ++ ++ ++ FINISHED ++ ++ ++ ++ ++ ++ 1 ++ 0x........ ++ ++ ++ ++ ++ ++ +-- +2.47.0 + diff --git a/0006-Add-additional-exp-ppc64le-files-to-EXTRA_DIST.patch b/0006-Add-additional-exp-ppc64le-files-to-EXTRA_DIST.patch new file mode 100644 index 0000000..2a483ba --- /dev/null +++ b/0006-Add-additional-exp-ppc64le-files-to-EXTRA_DIST.patch @@ -0,0 +1,41 @@ +From 42f196574aebea451c7e4138b476e042ba302745 Mon Sep 17 00:00:00 2001 +From: Paul Floyd +Date: Sun, 24 Nov 2024 08:10:51 +0100 +Subject: [PATCH 06/11] Add additional exp-ppc64le files to EXTRA_DIST + +(cherry picked from commit 7241959ebb88a588eebe5a9fd35d1642db71474b) +--- + none/tests/Makefile.am | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/none/tests/Makefile.am b/none/tests/Makefile.am +index 59be79e57920..53a6e1f6bc95 100644 +--- a/none/tests/Makefile.am ++++ b/none/tests/Makefile.am +@@ -135,6 +135,7 @@ EXTRA_DIST = \ + faultstatus.vgtest faultstatus.stderr.exp faultstatus.stderr.exp-s390x \ + fcntl_setown.vgtest fcntl_setown.stdout.exp fcntl_setown.stderr.exp \ + fdleak_cmsg.stderr.exp fdleak_cmsg.vgtest \ ++ fdleak_cmsg_xml.stderr.exp-ppc64le \ + fdleak_cmsg_xml.stderr.exp fdleak_cmsg_xml.vgtest \ + fdleak_cmsg_supp.stderr.exp fdleak_cmsg_supp.supp \ + fdleak_cmsg_supp.vgtest \ +@@ -149,6 +150,7 @@ EXTRA_DIST = \ + fdleak_fcntl.stderr.exp fdleak_fcntl.vgtest \ + fdleak_fcntl_xml.stderr.exp fdleak_fcntl_xml.vgtest \ + fdleak_ipv4.stderr.exp fdleak_ipv4.stdout.exp fdleak_ipv4.vgtest \ ++ fdleak_ipv4_xml.stderr.exp-ppc64le \ + fdleak_ipv4_xml.stderr.exp fdleak_ipv4_xml.stdout.exp \ + fdleak_ipv4_xml.vgtest fdleak_ipv4_xml.stderr.exp-nomain \ + fdleak_open.stderr.exp fdleak_open.vgtest \ +@@ -248,6 +250,7 @@ EXTRA_DIST = \ + process_vm_readv_writev.stderr.exp process_vm_readv_writev.vgtest \ + sigprocmask.stderr.exp sigprocmask.vgtest \ + socket_close.stderr.exp socket_close.vgtest \ ++ socket_close_xml.stderr.exp-ppc64le \ + socket_close_xml.stderr.exp socket_close_xml.vgtest \ + file_dclose.stderr.exp file_dclose.vgtest \ + file_dclose_xml.stderr.exp file_dclose_xml.vgtest \ +-- +2.47.0 + diff --git a/0007-Add-support-for-landlock_create_ruleset-444-landlock.patch b/0007-Add-support-for-landlock_create_ruleset-444-landlock.patch new file mode 100644 index 0000000..28377de --- /dev/null +++ b/0007-Add-support-for-landlock_create_ruleset-444-landlock.patch @@ -0,0 +1,358 @@ +From 3d72dd780be97bd19331403da60908f295712fc7 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Mon, 8 Jul 2024 11:05:47 +0200 +Subject: [PATCH 07/11] Add support for landlock_create_ruleset (444), + landlock_add_rule (445) and landlock_restrict_self (446) syscalls + +- add support for landlock_create_ruleset (444) syscall +- add support for landlock_add_rule (445) syscall +- add support for landlock_restrict_self (446) syscall + +https://bugs.kde.org/show_bug.cgi?id=489913 + +Signed-off-by: Peter Seiderer + +(cherry picked from commit b1453546fe7396e7d4b4b2fc8ec7e64b71d18611) +--- + NEWS | 2 + + coregrind/m_syswrap/priv_syswrap-linux.h | 5 ++ + coregrind/m_syswrap/syswrap-amd64-linux.c | 4 ++ + coregrind/m_syswrap/syswrap-arm-linux.c | 4 ++ + coregrind/m_syswrap/syswrap-arm64-linux.c | 4 ++ + coregrind/m_syswrap/syswrap-linux.c | 48 ++++++++++++++++++++ + coregrind/m_syswrap/syswrap-mips32-linux.c | 4 ++ + coregrind/m_syswrap/syswrap-mips64-linux.c | 5 +- + coregrind/m_syswrap/syswrap-nanomips-linux.c | 3 ++ + coregrind/m_syswrap/syswrap-ppc32-linux.c | 4 ++ + coregrind/m_syswrap/syswrap-ppc64-linux.c | 4 ++ + coregrind/m_syswrap/syswrap-s390x-linux.c | 4 ++ + coregrind/m_syswrap/syswrap-x86-linux.c | 4 ++ + include/Makefile.am | 3 +- + include/pub_tool_vki.h | 1 + + include/vki/vki-linux-landlock.h | 37 +++++++++++++++ + include/vki/vki-scnums-shared-linux.h | 4 ++ + 17 files changed, 138 insertions(+), 2 deletions(-) + create mode 100644 include/vki/vki-linux-landlock.h + +diff --git a/NEWS b/NEWS +index 8362e1d2df41..68cd0c6fa603 100644 +--- a/NEWS ++++ b/NEWS +@@ -5,6 +5,8 @@ Branch 3.24 + + The following bugs have been fixed or resolved on this branch. + ++489913 WARNING: unhandled amd64-linux syscall: 444 (landlock_create_ruleset) ++ + To see details of a given bug, visit + https://bugs.kde.org/show_bug.cgi?id=XXXXXX + where XXXXXX is the bug number as listed above. +diff --git a/coregrind/m_syswrap/priv_syswrap-linux.h b/coregrind/m_syswrap/priv_syswrap-linux.h +index d50cdcc981b9..221439a0ec33 100644 +--- a/coregrind/m_syswrap/priv_syswrap-linux.h ++++ b/coregrind/m_syswrap/priv_syswrap-linux.h +@@ -328,6 +328,11 @@ DECL_TEMPLATE(linux, sys_pidfd_open); + DECL_TEMPLATE(linux, sys_close_range); + DECL_TEMPLATE(linux, sys_openat2); + ++// Linux-specific (new in Linux 5.13) ++DECL_TEMPLATE(linux, sys_landlock_create_ruleset) ++DECL_TEMPLATE(linux, sys_landlock_add_rule) ++DECL_TEMPLATE(linux, sys_landlock_restrict_self) ++ + // Linux-specific (new in Linux 5.14) + DECL_TEMPLATE(linux, sys_memfd_secret); + +diff --git a/coregrind/m_syswrap/syswrap-amd64-linux.c b/coregrind/m_syswrap/syswrap-amd64-linux.c +index 2230baf772b0..9488d3090e80 100644 +--- a/coregrind/m_syswrap/syswrap-amd64-linux.c ++++ b/coregrind/m_syswrap/syswrap-amd64-linux.c +@@ -887,6 +887,10 @@ static SyscallTableEntry syscall_table[] = { + + LINXY(__NR_epoll_pwait2, sys_epoll_pwait2), // 441 + ++ LINXY(__NR_landlock_create_ruleset, sys_landlock_create_ruleset), // 444 ++ LINX_(__NR_landlock_add_rule, sys_landlock_add_rule), // 445 ++ LINX_(__NR_landlock_restrict_self, sys_landlock_restrict_self), // 446 ++ + LINXY(__NR_memfd_secret, sys_memfd_secret), // 447 + + LINX_(__NR_fchmodat2, sys_fchmodat2), // 452 +diff --git a/coregrind/m_syswrap/syswrap-arm-linux.c b/coregrind/m_syswrap/syswrap-arm-linux.c +index d326fdb9eeda..65f64af99bb7 100644 +--- a/coregrind/m_syswrap/syswrap-arm-linux.c ++++ b/coregrind/m_syswrap/syswrap-arm-linux.c +@@ -1062,6 +1062,10 @@ static SyscallTableEntry syscall_main_table[] = { + + LINXY(__NR_epoll_pwait2, sys_epoll_pwait2), // 441 + ++ LINXY(__NR_landlock_create_ruleset, sys_landlock_create_ruleset), // 444 ++ LINX_(__NR_landlock_add_rule, sys_landlock_add_rule), // 445 ++ LINX_(__NR_landlock_restrict_self, sys_landlock_restrict_self), // 446 ++ + LINX_(__NR_fchmodat2, sys_fchmodat2), // 452 + }; + +diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c +index 05e0e421fa6c..151ae0640b10 100644 +--- a/coregrind/m_syswrap/syswrap-arm64-linux.c ++++ b/coregrind/m_syswrap/syswrap-arm64-linux.c +@@ -840,6 +840,10 @@ static SyscallTableEntry syscall_main_table[] = { + + LINXY(__NR_epoll_pwait2, sys_epoll_pwait2), // 441 + ++ LINXY(__NR_landlock_create_ruleset, sys_landlock_create_ruleset), // 444 ++ LINX_(__NR_landlock_add_rule, sys_landlock_add_rule), // 445 ++ LINX_(__NR_landlock_restrict_self, sys_landlock_restrict_self), // 446 ++ + LINXY(__NR_memfd_secret, sys_memfd_secret), // 447 + + LINX_(__NR_fchmodat2, sys_fchmodat2), // 452 +diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c +index eec8388224ba..70ae837a9454 100644 +--- a/coregrind/m_syswrap/syswrap-linux.c ++++ b/coregrind/m_syswrap/syswrap-linux.c +@@ -4163,6 +4163,54 @@ POST(sys_memfd_create) + } + } + ++PRE(sys_landlock_create_ruleset) ++{ ++ PRINT("sys_landlock_create_ruleset ( %#" FMT_REGWORD "x, %lu, %lu )", ++ ARG1, ARG2, ARG3); ++ PRE_REG_READ3(long, "landlock_create_ruleset", ++ const struct vki_landlock_ruleset_attr*, attr, ++ vki_size_t, size, vki_uint32_t, flags); ++ PRE_MEM_READ( "landlock_create_ruleset(value)", ARG1, ARG2 ); ++ ++ /* XXX Alternatively we could always fail with EOPNOTSUPP ++ since the rules might interfere with valgrind itself. */ ++} ++ ++POST(sys_landlock_create_ruleset) ++{ ++ /* Returns either the abi version or a file descriptor. */ ++ if (ARG3 != VKI_LANDLOCK_CREATE_RULESET_VERSION) { ++ if (!ML_(fd_allowed)(RES, "landlock_create_ruleset", tid, True)) { ++ VG_(close)(RES); ++ SET_STATUS_Failure( VKI_EMFILE ); ++ } else { ++ if (VG_(clo_track_fds)) ++ ML_(record_fd_open_nameless)(tid, RES); ++ } ++ } ++} ++ ++PRE(sys_landlock_add_rule) ++{ ++ PRINT("sys_landlock_add_rule ( %ld, %lu, %#" FMT_REGWORD "x, %lu )", ++ SARG1, ARG2, ARG3, ARG4); ++ PRE_REG_READ4(long, "landlock_add_rule", ++ int, ruleset_fd, enum vki_landlock_rule_type, rule_type, ++ const void*, rule_attr, vki_uint32_t, flags); ++ if (!ML_(fd_allowed)(ARG1, "landlock_add_rule", tid, False)) ++ SET_STATUS_Failure(VKI_EBADF); ++ /* XXX Depending on rule_type we should also check the given rule_attr. */ ++} ++ ++PRE(sys_landlock_restrict_self) ++{ ++ PRINT("sys_landlock_restrict_self ( %ld, %lu )", SARG1, ARG2); ++ PRE_REG_READ2(long, "landlock_create_ruleset", ++ int, ruleset_fd, vki_uint32_t, flags); ++ if (!ML_(fd_allowed)(ARG1, "landlock_restrict_self", tid, False)) ++ SET_STATUS_Failure(VKI_EBADF); ++} ++ + PRE(sys_memfd_secret) + { + PRINT("sys_memfd_secret ( %#" FMT_REGWORD "x )", ARG1); +diff --git a/coregrind/m_syswrap/syswrap-mips32-linux.c b/coregrind/m_syswrap/syswrap-mips32-linux.c +index 421344213676..757b637ba986 100644 +--- a/coregrind/m_syswrap/syswrap-mips32-linux.c ++++ b/coregrind/m_syswrap/syswrap-mips32-linux.c +@@ -1147,6 +1147,10 @@ static SyscallTableEntry syscall_main_table[] = { + + LINXY(__NR_epoll_pwait2, sys_epoll_pwait2), // 441 + ++ LINXY(__NR_landlock_create_ruleset, sys_landlock_create_ruleset), // 444 ++ LINX_(__NR_landlock_add_rule, sys_landlock_add_rule), // 445 ++ LINX_(__NR_landlock_restrict_self, sys_landlock_restrict_self), // 446 ++ + LINX_(__NR_fchmodat2, sys_fchmodat2), // 452 + }; + +diff --git a/coregrind/m_syswrap/syswrap-mips64-linux.c b/coregrind/m_syswrap/syswrap-mips64-linux.c +index e9bb5c54c59c..f0c5f7e04f4e 100644 +--- a/coregrind/m_syswrap/syswrap-mips64-linux.c ++++ b/coregrind/m_syswrap/syswrap-mips64-linux.c +@@ -824,7 +824,10 @@ static SyscallTableEntry syscall_main_table[] = { + LINXY (__NR_openat2, sys_openat2), + LINXY (__NR_pidfd_getfd, sys_pidfd_getfd), + LINX_ (__NR_faccessat2, sys_faccessat2), +- LINXY(__NR_epoll_pwait2, sys_epoll_pwait2), ++ LINXY (__NR_epoll_pwait2, sys_epoll_pwait2), ++ LINXY (__NR_landlock_create_ruleset, sys_landlock_create_ruleset), ++ LINX_ (__NR_landlock_add_rule, sys_landlock_add_rule), ++ LINX_ (__NR_landlock_restrict_self, sys_landlock_restrict_self), + LINX_ (__NR_fchmodat2, sys_fchmodat2), + }; + +diff --git a/coregrind/m_syswrap/syswrap-nanomips-linux.c b/coregrind/m_syswrap/syswrap-nanomips-linux.c +index 36a5c0ca002d..f466aca147e0 100644 +--- a/coregrind/m_syswrap/syswrap-nanomips-linux.c ++++ b/coregrind/m_syswrap/syswrap-nanomips-linux.c +@@ -831,6 +831,9 @@ static SyscallTableEntry syscall_main_table[] = { + LINXY(__NR_pidfd_getfd, sys_pidfd_getfd), + LINX_ (__NR_faccessat2, sys_faccessat2), + LINXY (__NR_epoll_pwait2, sys_epoll_pwait2), ++ LINXY (__NR_landlock_create_ruleset,sys_landlock_create_ruleset), ++ LINX_ (__NR_landlock_add_rule, sys_landlock_add_rule), ++ LINX_ (__NR_landlock_restrict_self, sys_landlock_restrict_self), + LINX_ (__NR_fchmodat2, sys_fchmodat2), + }; + +diff --git a/coregrind/m_syswrap/syswrap-ppc32-linux.c b/coregrind/m_syswrap/syswrap-ppc32-linux.c +index f7a90c753060..634f288ce0d1 100644 +--- a/coregrind/m_syswrap/syswrap-ppc32-linux.c ++++ b/coregrind/m_syswrap/syswrap-ppc32-linux.c +@@ -1069,6 +1069,10 @@ static SyscallTableEntry syscall_table[] = { + + LINXY (__NR_epoll_pwait2, sys_epoll_pwait2), // 441 + ++ LINXY(__NR_landlock_create_ruleset, sys_landlock_create_ruleset), // 444 ++ LINX_(__NR_landlock_add_rule, sys_landlock_add_rule), // 445 ++ LINX_(__NR_landlock_restrict_self, sys_landlock_restrict_self), // 446 ++ + LINX_ (__NR_fchmodat2, sys_fchmodat2), // 452 + }; + +diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c +index 8de95624fa7c..2c2def330ad7 100644 +--- a/coregrind/m_syswrap/syswrap-ppc64-linux.c ++++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c +@@ -1035,6 +1035,10 @@ static SyscallTableEntry syscall_table[] = { + + LINXY (__NR_epoll_pwait2, sys_epoll_pwait2), // 441 + ++ LINXY(__NR_landlock_create_ruleset, sys_landlock_create_ruleset), // 444 ++ LINX_(__NR_landlock_add_rule, sys_landlock_add_rule), // 445 ++ LINX_(__NR_landlock_restrict_self, sys_landlock_restrict_self), // 446 ++ + LINX_ (__NR_fchmodat2, sys_fchmodat2), // 452 + }; + +diff --git a/coregrind/m_syswrap/syswrap-s390x-linux.c b/coregrind/m_syswrap/syswrap-s390x-linux.c +index 8a1be8cbef54..ca571f0f1a7c 100644 +--- a/coregrind/m_syswrap/syswrap-s390x-linux.c ++++ b/coregrind/m_syswrap/syswrap-s390x-linux.c +@@ -875,6 +875,10 @@ static SyscallTableEntry syscall_table[] = { + + LINXY(__NR_epoll_pwait2, sys_epoll_pwait2), // 441 + ++ LINXY(__NR_landlock_create_ruleset, sys_landlock_create_ruleset), // 444 ++ LINX_(__NR_landlock_add_rule, sys_landlock_add_rule), // 445 ++ LINX_(__NR_landlock_restrict_self, sys_landlock_restrict_self), // 446 ++ + LINXY(__NR_memfd_secret, sys_memfd_secret), // 447 + + LINX_ (__NR_fchmodat2, sys_fchmodat2), // 452 +diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c +index 31243a0db373..a23743743abe 100644 +--- a/coregrind/m_syswrap/syswrap-x86-linux.c ++++ b/coregrind/m_syswrap/syswrap-x86-linux.c +@@ -1656,6 +1656,10 @@ static SyscallTableEntry syscall_table[] = { + + LINXY(__NR_epoll_pwait2, sys_epoll_pwait2), // 441 + ++ LINXY(__NR_landlock_create_ruleset, sys_landlock_create_ruleset), // 444 ++ LINX_(__NR_landlock_add_rule, sys_landlock_add_rule), // 445 ++ LINX_(__NR_landlock_restrict_self, sys_landlock_restrict_self), // 446 ++ + LINXY(__NR_memfd_secret, sys_memfd_secret), // 447 + + LINX_(__NR_fchmodat2, sys_fchmodat2), // 452 +diff --git a/include/Makefile.am b/include/Makefile.am +index 8012d73749b3..5d5162a46eb6 100644 +--- a/include/Makefile.am ++++ b/include/Makefile.am +@@ -107,4 +107,5 @@ nobase_pkginclude_HEADERS = \ + vki/vki-xen-xsm.h \ + vki/vki-xen-x86.h \ + vki/vki-linux-drm.h \ +- vki/vki-linux-io_uring.h ++ vki/vki-linux-io_uring.h \ ++ vki/vki-linux-landlock.h +diff --git a/include/pub_tool_vki.h b/include/pub_tool_vki.h +index 24f99cc09f16..7b6e71e11eb4 100644 +--- a/include/pub_tool_vki.h ++++ b/include/pub_tool_vki.h +@@ -47,6 +47,7 @@ + # include "vki/vki-linux.h" + # include "vki/vki-linux-drm.h" + # include "vki/vki-linux-io_uring.h" ++# include "vki/vki-linux-landlock.h" + #elif defined(VGO_darwin) + # include "vki/vki-darwin.h" + #elif defined(VGO_solaris) +diff --git a/include/vki/vki-linux-landlock.h b/include/vki/vki-linux-landlock.h +new file mode 100644 +index 000000000000..e549ae93eff9 +--- /dev/null ++++ b/include/vki/vki-linux-landlock.h +@@ -0,0 +1,37 @@ ++/* ++ This file is part of Valgrind, a dynamic binary instrumentation framework. ++ ++ Copyright (C) 2024 Peter Seiderer ++ ++ This program is free software; you can redistribute it and/or ++ modify it under the terms of the GNU General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, see . ++ ++ The GNU General Public License is contained in the file COPYING. ++*/ ++#ifndef __VKI_LANDLOCK_H ++#define __VKI_LANDLOCK_H ++ ++// Derived from linux-6.9.7/include/uapi/linux/landlock.h ++struct vki_landlock_ruleset_attr { ++ __vki_u64 handled_access_fs; ++ __vki_u64 handled_access_net; ++}; ++ ++enum vki_landlock_rule_type { ++ VKI_LANDLOCK_RULE_PATH_BENEATH = 1, ++ VKI_LANDLOCK_RULE_NET_PORT, ++}; ++ ++#define VKI_LANDLOCK_CREATE_RULESET_VERSION 1 ++ ++#endif +diff --git a/include/vki/vki-scnums-shared-linux.h b/include/vki/vki-scnums-shared-linux.h +index 068a2cd12bd6..20346ca71678 100644 +--- a/include/vki/vki-scnums-shared-linux.h ++++ b/include/vki/vki-scnums-shared-linux.h +@@ -48,6 +48,10 @@ + + #define __NR_epoll_pwait2 441 + ++#define __NR_landlock_create_ruleset 444 ++#define __NR_landlock_add_rule 445 ++#define __NR_landlock_restrict_self 446 ++ + #define __NR_memfd_secret 447 + + #define __NR_fchmodat2 452 +-- +2.47.0 + diff --git a/0008-helgrind-tests-tc17_sembar.c-Remove-bool-typedef.patch b/0008-helgrind-tests-tc17_sembar.c-Remove-bool-typedef.patch new file mode 100644 index 0000000..5a02dda --- /dev/null +++ b/0008-helgrind-tests-tc17_sembar.c-Remove-bool-typedef.patch @@ -0,0 +1,35 @@ +From 459fa5b82df0d07cf871fc7359a060410052b82e Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Sat, 23 Nov 2024 22:37:14 +0100 +Subject: [PATCH 08/11] helgrind/tests/tc17_sembar.c: Remove bool typedef + +Since C23 bool is a keyword. Also bool wasn't actually used. + +tc17_sembar.c:45:14: error: both 'long' and '_Bool' in declaration specifiers + 45 | typedef long bool; + | ^~~~ +tc17_sembar.c:45:1: warning: useless type name in empty declaration + 45 | typedef long bool; + | ^~~~~~~ + +(cherry picked from commit 932bf2c027579c8d933b57ed80bb5842b390bdb3) +--- + helgrind/tests/tc17_sembar.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/helgrind/tests/tc17_sembar.c b/helgrind/tests/tc17_sembar.c +index 36412a07e206..ee40160b082d 100644 +--- a/helgrind/tests/tc17_sembar.c ++++ b/helgrind/tests/tc17_sembar.c +@@ -42,7 +42,7 @@ typedef struct + sem_t* xxx; + } gomp_barrier_t; + +-typedef long bool; ++ + + void + gomp_barrier_init (gomp_barrier_t *bar, unsigned count) +-- +2.47.0 + diff --git a/0009-drd-tests-swapcontext.c-Rename-typedef-struct-thread.patch b/0009-drd-tests-swapcontext.c-Rename-typedef-struct-thread.patch new file mode 100644 index 0000000..b940eba --- /dev/null +++ b/0009-drd-tests-swapcontext.c-Rename-typedef-struct-thread.patch @@ -0,0 +1,38 @@ +From c08e155fdf6641a569053b3a70c52bfae09dd34c Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Sat, 23 Nov 2024 22:48:03 +0100 +Subject: [PATCH 09/11] drd/tests/swapcontext.c: Rename typedef struct + thread_local to threadlocal + +Since C23 thread_local is a keyword (thread storage duration). + +swapcontext.c:23:16: error: expected '{' before 'thread_local' + 23 | typedef struct thread_local { + | ^~~~~~~~~~~~ +swapcontext.c:23:16: warning: 'thread_local' is not at beginning of declaration [-Wold-style-declaration] +swapcontext.c:23:16: error: 'thread_local' used with 'typedef' +swapcontext.c:26:3: warning: data definition has no type or storage class + 26 | } thread_local_t; + | ^~~~~~~~~~~~~~ + +(cherry picked from commit 907b985725805f1537396a6d76539bf490cc6c7e) +--- + drd/tests/swapcontext.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drd/tests/swapcontext.c b/drd/tests/swapcontext.c +index 2cb969a5eafa..ec191968cab1 100644 +--- a/drd/tests/swapcontext.c ++++ b/drd/tests/swapcontext.c +@@ -20,7 +20,7 @@ + + #define STACKSIZE (PTHREAD_STACK_MIN + 4096) + +-typedef struct thread_local { ++typedef struct threadlocal { + ucontext_t uc[3]; + size_t nrsw; + } thread_local_t; +-- +2.47.0 + diff --git a/0010-none-tests-bug234814.c-sa_handler-take-an-int-as-arg.patch b/0010-none-tests-bug234814.c-sa_handler-take-an-int-as-arg.patch new file mode 100644 index 0000000..5ae9012 --- /dev/null +++ b/0010-none-tests-bug234814.c-sa_handler-take-an-int-as-arg.patch @@ -0,0 +1,34 @@ +From 53d667789d369042b1fe45f72102ecb5c16e5d12 Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Sat, 23 Nov 2024 22:59:21 +0100 +Subject: [PATCH 10/11] none/tests/bug234814.c: sa_handler take an int as + argument + +GCC15 will turn this warning into an error: + +bug234814.c: In function 'main': +bug234814.c:20:18: error: assignment to '__sighandler_t' {aka 'void (*)(int)'} from incompatible pointer type 'void (*)(void)' [-Wincompatible-pointer-types] + 20 | sa.sa_handler = mysigbus; + | ^ + +(cherry picked from commit 8f6cef269b91739f6a2e7f3b4b1e0a429db3e748) +--- + none/tests/bug234814.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/none/tests/bug234814.c b/none/tests/bug234814.c +index 16b561fde6b0..11e0f6779162 100644 +--- a/none/tests/bug234814.c ++++ b/none/tests/bug234814.c +@@ -9,7 +9,7 @@ const char kSigbus[] = "I caught the SIGBUS signal!\n"; + + int GLOB = 3; + +-void mysigbus() { ++void mysigbus(int signum) { + write(1, kSigbus, sizeof(kSigbus)-1); + GLOB--; + return; +-- +2.47.0 + diff --git a/0011-Add-open_tree-move_mount-fsopen-fsconfig-fsmount-fsp.patch b/0011-Add-open_tree-move_mount-fsopen-fsconfig-fsmount-fsp.patch new file mode 100644 index 0000000..a1be881 --- /dev/null +++ b/0011-Add-open_tree-move_mount-fsopen-fsconfig-fsmount-fsp.patch @@ -0,0 +1,398 @@ +From 349b57d3a8c8d2df23128d4b03eca91b629629e1 Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Tue, 26 Nov 2024 19:00:34 +0100 +Subject: [PATCH 11/11] Add open_tree, move_mount, fsopen, fsconfig, fsmount, + fspick linux syswraps + +Shared linux syscalls implementing various file system mount tasks. +Since linux kernel version 5.2. + +Check arguments and track file descriptors. + +https://bugs.kde.org/show_bug.cgi?id=494246 + +(cherry picked from commit 4044bcea0427853fc44a3d02a0fc0b2a81935452) +--- + NEWS | 1 + + coregrind/m_syswrap/priv_syswrap-linux.h | 8 + + coregrind/m_syswrap/syswrap-amd64-linux.c | 6 + + coregrind/m_syswrap/syswrap-arm-linux.c | 7 +- + coregrind/m_syswrap/syswrap-arm64-linux.c | 7 +- + coregrind/m_syswrap/syswrap-linux.c | 146 +++++++++++++++++++ + coregrind/m_syswrap/syswrap-mips32-linux.c | 7 +- + coregrind/m_syswrap/syswrap-mips64-linux.c | 6 + + coregrind/m_syswrap/syswrap-nanomips-linux.c | 6 + + coregrind/m_syswrap/syswrap-ppc32-linux.c | 7 +- + coregrind/m_syswrap/syswrap-ppc64-linux.c | 7 +- + coregrind/m_syswrap/syswrap-s390x-linux.c | 7 +- + coregrind/m_syswrap/syswrap-x86-linux.c | 7 +- + 13 files changed, 215 insertions(+), 7 deletions(-) + +diff --git a/NEWS b/NEWS +index 68cd0c6fa603..7f1334aa0f07 100644 +--- a/NEWS ++++ b/NEWS +@@ -6,6 +6,7 @@ Branch 3.24 + The following bugs have been fixed or resolved on this branch. + + 489913 WARNING: unhandled amd64-linux syscall: 444 (landlock_create_ruleset) ++494246 syscall fsopen not wrapped + + To see details of a given bug, visit + https://bugs.kde.org/show_bug.cgi?id=XXXXXX +diff --git a/coregrind/m_syswrap/priv_syswrap-linux.h b/coregrind/m_syswrap/priv_syswrap-linux.h +index 221439a0ec33..1bdd9a94ec19 100644 +--- a/coregrind/m_syswrap/priv_syswrap-linux.h ++++ b/coregrind/m_syswrap/priv_syswrap-linux.h +@@ -321,6 +321,14 @@ DECL_TEMPLATE(linux, sys_io_uring_setup); + DECL_TEMPLATE(linux, sys_io_uring_enter); + DECL_TEMPLATE(linux, sys_io_uring_register); + ++// open_tree and friends (shared linux syscalls) ++DECL_TEMPLATE(linux, sys_open_tree); ++DECL_TEMPLATE(linux, sys_move_mount); ++DECL_TEMPLATE(linux, sys_fsopen); ++DECL_TEMPLATE(linux, sys_fsconfig); ++DECL_TEMPLATE(linux, sys_fsmount); ++DECL_TEMPLATE(linux, sys_fspick); ++ + // Linux-specific (new in Linux 5.3) + DECL_TEMPLATE(linux, sys_pidfd_open); + +diff --git a/coregrind/m_syswrap/syswrap-amd64-linux.c b/coregrind/m_syswrap/syswrap-amd64-linux.c +index 9488d3090e80..bdba41826ad8 100644 +--- a/coregrind/m_syswrap/syswrap-amd64-linux.c ++++ b/coregrind/m_syswrap/syswrap-amd64-linux.c +@@ -877,6 +877,12 @@ static SyscallTableEntry syscall_table[] = { + LINXY(__NR_io_uring_setup, sys_io_uring_setup), // 425 + LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426 + LINXY(__NR_io_uring_register, sys_io_uring_register), // 427 ++ LINXY(__NR_open_tree, sys_open_tree), // 428 ++ LINX_(__NR_move_mount, sys_move_mount), // 429 ++ LINXY(__NR_fsopen, sys_fsopen), // 430 ++ LINX_(__NR_fsconfig, sys_fsconfig), // 431 ++ LINXY(__NR_fsmount, sys_fsmount), // 432 ++ LINXY(__NR_fspick, sys_fspick), // 433 + + LINXY(__NR_pidfd_open, sys_pidfd_open), // 434 + GENX_(__NR_clone3, sys_ni_syscall), // 435 +diff --git a/coregrind/m_syswrap/syswrap-arm-linux.c b/coregrind/m_syswrap/syswrap-arm-linux.c +index 65f64af99bb7..108e1f91e5e9 100644 +--- a/coregrind/m_syswrap/syswrap-arm-linux.c ++++ b/coregrind/m_syswrap/syswrap-arm-linux.c +@@ -1052,7 +1052,12 @@ static SyscallTableEntry syscall_main_table[] = { + LINXY(__NR_io_uring_setup, sys_io_uring_setup), // 425 + LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426 + LINXY(__NR_io_uring_register, sys_io_uring_register), // 427 +- ++ LINXY(__NR_open_tree, sys_open_tree), // 428 ++ LINX_(__NR_move_mount, sys_move_mount), // 429 ++ LINXY(__NR_fsopen, sys_fsopen), // 430 ++ LINX_(__NR_fsconfig, sys_fsconfig), // 431 ++ LINXY(__NR_fsmount, sys_fsmount), // 432 ++ LINXY(__NR_fspick, sys_fspick), // 433 + LINXY(__NR_pidfd_open, sys_pidfd_open), // 434 + GENX_(__NR_clone3, sys_ni_syscall), // 435 + LINXY(__NR_close_range, sys_close_range), // 436 +diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c +index 151ae0640b10..23b0b6b51c10 100644 +--- a/coregrind/m_syswrap/syswrap-arm64-linux.c ++++ b/coregrind/m_syswrap/syswrap-arm64-linux.c +@@ -830,7 +830,12 @@ static SyscallTableEntry syscall_main_table[] = { + LINXY(__NR_io_uring_setup, sys_io_uring_setup), // 425 + LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426 + LINXY(__NR_io_uring_register, sys_io_uring_register), // 427 +- ++ LINXY(__NR_open_tree, sys_open_tree), // 428 ++ LINX_(__NR_move_mount, sys_move_mount), // 429 ++ LINXY(__NR_fsopen, sys_fsopen), // 430 ++ LINX_(__NR_fsconfig, sys_fsconfig), // 431 ++ LINXY(__NR_fsmount, sys_fsmount), // 432 ++ LINXY(__NR_fspick, sys_fspick), // 433 + LINXY(__NR_pidfd_open, sys_pidfd_open), // 434 + GENX_(__NR_clone3, sys_ni_syscall), // 435 + LINXY(__NR_close_range, sys_close_range), // 436 +diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c +index 70ae837a9454..57672f167126 100644 +--- a/coregrind/m_syswrap/syswrap-linux.c ++++ b/coregrind/m_syswrap/syswrap-linux.c +@@ -13836,6 +13836,152 @@ POST(sys_pidfd_getfd) + } + } + ++/* int open_tree (int dfd, const char *filename, unsigned int flags) */ ++PRE(sys_open_tree) ++{ ++ PRINT("sys_open_tree ( %ld, %#" FMT_REGWORD "x(%s), %ld", ++ SARG1, ARG2, (HChar*)(Addr)ARG2, SARG3); ++ PRE_REG_READ3(long, "open_tree", ++ int, dfd, const char *, filename, int, flags); ++ PRE_MEM_RASCIIZ( "open_tree(filename)", ARG2); ++ /* For absolute filenames, dfd is ignored. If dfd is AT_FDCWD, ++ filename is relative to cwd. When comparing dfd against AT_FDCWD, ++ be sure only to compare the bottom 32 bits. */ ++ if (ML_(safe_to_deref)( (void*)(Addr)ARG2, 1 ) ++ && *(Char *)(Addr)ARG2 != '/' ++ && ((Int)ARG1) != ((Int)VKI_AT_FDCWD) ++ && !ML_(fd_allowed)(ARG1, "open_tree", tid, False)) ++ SET_STATUS_Failure( VKI_EBADF ); ++} ++ ++POST(sys_open_tree) ++{ ++ if (!ML_(fd_allowed)(RES, "open_tree", tid, True)) { ++ VG_(close)(RES); ++ SET_STATUS_Failure( VKI_EMFILE ); ++ } else { ++ if (VG_(clo_track_fds)) ++ ML_(record_fd_open_with_given_name)(tid, RES, (HChar*)(Addr)ARG2); ++ } ++} ++ ++/* int move_mount (int from_dfd, const char *from_pathname, ++ int to_dfd, const char *to_pathname, ++ unsigned int flags) */ ++PRE(sys_move_mount) ++{ ++ PRINT("sys_move_mount ( %ld, %#" FMT_REGWORD "x(%s), " ++ "%ld, %#" FMT_REGWORD "x(%s), %ld", ++ SARG1, ARG2, (HChar*)(Addr)ARG2, ++ SARG3, ARG4, (HChar*)(Addr)ARG4, SARG5); ++ PRE_REG_READ5(long, "mount_move", ++ int, from_dfd, const char *, from_pathname, ++ int, to_dfd, const char*, to_pathname, int, flags); ++ PRE_MEM_RASCIIZ( "mount_move(from_pathname)", ARG2); ++ /* For absolute filenames, from_dfd is ignored. If from_dfd is AT_FDCWD, ++ from_pathname is relative to cwd. When comparing from_dfd against ++ AT_FDCWD, be sure only to compare the bottom 32 bits. */ ++ if (ML_(safe_to_deref)( (void*)(Addr)ARG2, 1 ) ++ && *(Char *)(Addr)ARG2 != '/' ++ && ((Int)ARG1) != ((Int)VKI_AT_FDCWD) ++ && !ML_(fd_allowed)(ARG1, "mount_move", tid, False)) ++ SET_STATUS_Failure( VKI_EBADF ); ++ PRE_MEM_RASCIIZ( "mount_move(from_pathname)", ARG4); ++ /* For absolute filenames, to_dfd is ignored. If to_dfd is AT_FDCWD, ++ to_pathname is relative to cwd. When comparing to_dfd against ++ AT_FDCWD, be sure only to compare the bottom 32 bits. */ ++ if (ML_(safe_to_deref)( (void*)(Addr)ARG4, 1 ) ++ && *(Char *)(Addr)ARG4 != '/' ++ && ((Int)ARG4) != ((Int)VKI_AT_FDCWD) ++ && !ML_(fd_allowed)(ARG3, "mount_move", tid, False)) ++ SET_STATUS_Failure( VKI_EBADF ); ++} ++ ++/* int fsopen (const char *fs_name, unsigned int flags) */ ++PRE(sys_fsopen) ++{ ++ PRINT("sys_fsopen ( %#" FMT_REGWORD "x(%s), %ld", ++ ARG1, (HChar*)(Addr)ARG1, SARG2); ++ PRE_REG_READ2(long, "fsopen", const char *, fs_name, int, flags); ++ PRE_MEM_RASCIIZ( "fsopen(filename)", ARG1); ++} ++ ++POST(sys_fsopen) ++{ ++ if (!ML_(fd_allowed)(RES, "fsopen", tid, True)) { ++ VG_(close)(RES); ++ SET_STATUS_Failure( VKI_EMFILE ); ++ } else { ++ if (VG_(clo_track_fds)) ++ ML_(record_fd_open_with_given_name)(tid, RES, (HChar*)(Addr)ARG1); ++ } ++} ++ ++/* int fsmount (int fd, unsigned int flags, unsigned int ms_flags) */ ++PRE(sys_fsmount) ++{ ++ PRINT("sys_fsmount ( %ld, %ld, %ld", SARG1, SARG2, SARG3); ++ PRE_REG_READ3(long, "fsmount", int, fd, int, flags, int, ms_flags); ++ if (!ML_(fd_allowed)(ARG1, "fsmount", tid, False)) ++ SET_STATUS_Failure( VKI_EBADF ); ++} ++ ++POST(sys_fsmount) ++{ ++ if (!ML_(fd_allowed)(RES, "fsmount", tid, True)) { ++ VG_(close)(RES); ++ SET_STATUS_Failure( VKI_EMFILE ); ++ } else { ++ if (VG_(clo_track_fds)) ++ ML_(record_fd_open_nameless)(tid, RES); ++ } ++} ++ ++/* int fsconfig (int fd, unsigned int cmd, const char *key, ++ const void *value, int aux) */ ++PRE(sys_fsconfig) ++{ ++ PRINT("sys_fsconfig ( %ld, %ld, %#" FMT_REGWORD "x(%s), " ++ "%#" FMT_REGWORD "x, %ld )", ++ SARG1, SARG2, ARG3, (HChar*)(Addr)ARG3, ARG4, SARG6); ++ PRE_REG_READ5(long, "fsconfig", int, fd, int, cmd, ++ const char *, key, const void *, value, int, aux); ++ if (ARG3) ++ PRE_MEM_RASCIIZ( "fsconfig(key)", ARG3); ++ if (!ML_(fd_allowed)(ARG1, "fsconfig", tid, False)) ++ SET_STATUS_Failure( VKI_EBADF ); ++ /* XXX we could also check the value based on the cmd FSCONFIG_... */ ++} ++ ++/* int fspick (int dfd, const char *path, unsigned int flags) */ ++PRE(sys_fspick) ++{ ++ PRINT("sys_fspick ( %ld, %#" FMT_REGWORD "x(%s), %ld", ++ SARG1, ARG2, (HChar*)(Addr)ARG2, SARG3); ++ PRE_REG_READ3(long, "fspick", ++ int, dfd, const char *, filename, int, flags); ++ PRE_MEM_RASCIIZ( "fspick(path)", ARG2); ++ /* For absolute filenames, dfd is ignored. If dfd is AT_FDCWD, ++ path is relative to cwd. When comparing dfd against AT_FDCWD, ++ be sure only to compare the bottom 32 bits. */ ++ if (ML_(safe_to_deref)( (void*)(Addr)ARG2, 1 ) ++ && *(Char *)(Addr)ARG2 != '/' ++ && ((Int)ARG1) != ((Int)VKI_AT_FDCWD) ++ && !ML_(fd_allowed)(ARG1, "fspick", tid, False)) ++ SET_STATUS_Failure( VKI_EBADF ); ++} ++ ++POST(sys_fspick) ++{ ++ if (!ML_(fd_allowed)(RES, "fspick", tid, True)) { ++ VG_(close)(RES); ++ SET_STATUS_Failure( VKI_EMFILE ); ++ } else { ++ if (VG_(clo_track_fds)) ++ ML_(record_fd_open_with_given_name)(tid, RES, (HChar*)(Addr)ARG2); ++ } ++} ++ + #undef PRE + #undef POST + +diff --git a/coregrind/m_syswrap/syswrap-mips32-linux.c b/coregrind/m_syswrap/syswrap-mips32-linux.c +index 757b637ba986..39ba911aa5e4 100644 +--- a/coregrind/m_syswrap/syswrap-mips32-linux.c ++++ b/coregrind/m_syswrap/syswrap-mips32-linux.c +@@ -1137,7 +1137,12 @@ static SyscallTableEntry syscall_main_table[] = { + LINXY(__NR_io_uring_setup, sys_io_uring_setup), // 425 + LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426 + LINXY(__NR_io_uring_register, sys_io_uring_register), // 427 +- ++ LINXY(__NR_open_tree, sys_open_tree), // 428 ++ LINX_(__NR_move_mount, sys_move_mount), // 429 ++ LINXY(__NR_fsopen, sys_fsopen), // 430 ++ LINX_(__NR_fsconfig, sys_fsconfig), // 431 ++ LINXY(__NR_fsmount, sys_fsmount), // 432 ++ LINXY(__NR_fspick, sys_fspick), // 433 + LINXY(__NR_pidfd_open, sys_pidfd_open), // 434 + GENX_(__NR_clone3, sys_ni_syscall), // 435 + LINXY(__NR_close_range, sys_close_range), // 436 +diff --git a/coregrind/m_syswrap/syswrap-mips64-linux.c b/coregrind/m_syswrap/syswrap-mips64-linux.c +index f0c5f7e04f4e..d603924c5566 100644 +--- a/coregrind/m_syswrap/syswrap-mips64-linux.c ++++ b/coregrind/m_syswrap/syswrap-mips64-linux.c +@@ -818,6 +818,12 @@ 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), ++ LINXY (__NR_open_tree, sys_open_tree), ++ LINX_ (__NR_move_mount, sys_move_mount), ++ LINXY (__NR_fsopen, sys_fsopen), ++ LINX_ (__NR_fsconfig, sys_fsconfig), ++ LINXY (__NR_fsmount, sys_fsmount), ++ LINXY (__NR_fspick, sys_fspick), + LINXY (__NR_pidfd_open, sys_pidfd_open), + GENX_ (__NR_clone3, sys_ni_syscall), + LINXY (__NR_close_range, sys_close_range), +diff --git a/coregrind/m_syswrap/syswrap-nanomips-linux.c b/coregrind/m_syswrap/syswrap-nanomips-linux.c +index f466aca147e0..853495e981b1 100644 +--- a/coregrind/m_syswrap/syswrap-nanomips-linux.c ++++ b/coregrind/m_syswrap/syswrap-nanomips-linux.c +@@ -824,6 +824,12 @@ 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), ++ LINXY (__NR_open_tree, sys_open_tree), ++ LINX_ (__NR_move_mount, sys_move_mount), ++ LINXY (__NR_fsopen, sys_fsopen), ++ LINX_ (__NR_fsconfig, sys_fsconfig), ++ LINXY (__NR_fsmount, sys_fsmount), ++ LINXY (__NR_fspick, sys_fspick), + LINXY (__NR_pidfd_open, sys_pidfd_open), + GENX_ (__NR_clone3, sys_ni_syscall), + LINXY (__NR_close_range, sys_close_range), +diff --git a/coregrind/m_syswrap/syswrap-ppc32-linux.c b/coregrind/m_syswrap/syswrap-ppc32-linux.c +index 634f288ce0d1..24d8eb213190 100644 +--- a/coregrind/m_syswrap/syswrap-ppc32-linux.c ++++ b/coregrind/m_syswrap/syswrap-ppc32-linux.c +@@ -1059,7 +1059,12 @@ static SyscallTableEntry syscall_table[] = { + LINXY(__NR_io_uring_setup, sys_io_uring_setup), // 425 + LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426 + LINXY(__NR_io_uring_register, sys_io_uring_register), // 427 +- ++ LINXY(__NR_open_tree, sys_open_tree), // 428 ++ LINX_(__NR_move_mount, sys_move_mount), // 429 ++ LINXY(__NR_fsopen, sys_fsopen), // 430 ++ LINX_(__NR_fsconfig, sys_fsconfig), // 431 ++ LINXY(__NR_fsmount, sys_fsmount), // 432 ++ LINXY(__NR_fspick, sys_fspick), // 433 + LINXY(__NR_pidfd_open, sys_pidfd_open), // 434 + GENX_(__NR_clone3, sys_ni_syscall), // 435 + LINXY(__NR_close_range, sys_close_range), // 436 +diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c +index 2c2def330ad7..2a3ed8b92481 100644 +--- a/coregrind/m_syswrap/syswrap-ppc64-linux.c ++++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c +@@ -1025,7 +1025,12 @@ static SyscallTableEntry syscall_table[] = { + LINXY(__NR_io_uring_setup, sys_io_uring_setup), // 425 + LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426 + LINXY(__NR_io_uring_register, sys_io_uring_register), // 427 +- ++ LINXY(__NR_open_tree, sys_open_tree), // 428 ++ LINX_(__NR_move_mount, sys_move_mount), // 429 ++ LINXY(__NR_fsopen, sys_fsopen), // 430 ++ LINX_(__NR_fsconfig, sys_fsconfig), // 431 ++ LINXY(__NR_fsmount, sys_fsmount), // 432 ++ LINXY(__NR_fspick, sys_fspick), // 433 + LINXY(__NR_pidfd_open, sys_pidfd_open), // 434 + GENX_(__NR_clone3, sys_ni_syscall), // 435 + LINXY(__NR_close_range, sys_close_range), // 436 +diff --git a/coregrind/m_syswrap/syswrap-s390x-linux.c b/coregrind/m_syswrap/syswrap-s390x-linux.c +index ca571f0f1a7c..893306bbdae3 100644 +--- a/coregrind/m_syswrap/syswrap-s390x-linux.c ++++ b/coregrind/m_syswrap/syswrap-s390x-linux.c +@@ -865,7 +865,12 @@ static SyscallTableEntry syscall_table[] = { + LINXY(__NR_io_uring_setup, sys_io_uring_setup), // 425 + LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426 + LINXY(__NR_io_uring_register, sys_io_uring_register), // 427 +- ++ LINXY(__NR_open_tree, sys_open_tree), // 428 ++ LINX_(__NR_move_mount, sys_move_mount), // 429 ++ LINXY(__NR_fsopen, sys_fsopen), // 430 ++ LINX_(__NR_fsconfig, sys_fsconfig), // 431 ++ LINXY(__NR_fsmount, sys_fsmount), // 432 ++ LINXY(__NR_fspick, sys_fspick), // 433 + LINXY(__NR_pidfd_open, sys_pidfd_open), // 434 + GENX_(__NR_clone3, sys_ni_syscall), // 435 + LINXY(__NR_close_range, sys_close_range), // 436 +diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c +index a23743743abe..50384817dbe5 100644 +--- a/coregrind/m_syswrap/syswrap-x86-linux.c ++++ b/coregrind/m_syswrap/syswrap-x86-linux.c +@@ -1646,7 +1646,12 @@ static SyscallTableEntry syscall_table[] = { + LINXY(__NR_io_uring_setup, sys_io_uring_setup), // 425 + LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426 + LINXY(__NR_io_uring_register, sys_io_uring_register),// 427 +- ++ LINXY(__NR_open_tree, sys_open_tree), // 428 ++ LINX_(__NR_move_mount, sys_move_mount), // 429 ++ LINXY(__NR_fsopen, sys_fsopen), // 430 ++ LINX_(__NR_fsconfig, sys_fsconfig), // 431 ++ LINXY(__NR_fsmount, sys_fsmount), // 432 ++ LINXY(__NR_fspick, sys_fspick), // 433 + LINXY(__NR_pidfd_open, sys_pidfd_open), // 434 + GENX_(__NR_clone3, sys_ni_syscall), // 435 + LINXY(__NR_close_range, sys_close_range), // 436 +-- +2.47.0 + diff --git a/0012-Recognize-new-DWARF5-DW_LANG-constants.patch b/0012-Recognize-new-DWARF5-DW_LANG-constants.patch new file mode 100644 index 0000000..ef89578 --- /dev/null +++ b/0012-Recognize-new-DWARF5-DW_LANG-constants.patch @@ -0,0 +1,144 @@ +From a2c30f44ac39eb36baa4e831b041fe7cdf25e481 Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Fri, 6 Dec 2024 15:39:25 +0100 +Subject: [PATCH 12/14] Recognize new DWARF5 DW_LANG constants + +When using --read-var-info=yes readdwarf3 will try to read and +interpret the CU DW_AT_langauge attribute. Since DWARF5 was released a +number if new language constants have been introduced. See +https://dwarfstd.org/languages.html + +GCC15 might start emitting some of these when switching to C23 by +default. + +When valgrind --read-var-info=yes encounters an unknown DW_LANG +constant it will produce an error and stop processing any further +DWARF. + +Recognize all currently known language constants. In particular +recognize DW_LANG_C17, DW_LANG_C23, DW_LANG_C_plus_plus_17, +DW_LANG_C_plus_plus_20, DW_LANG_C_plus_plus_23, DW_LANG_Fortran18, +DW_LANG_Fortran23, DW_LANG_Ada2005, DW_LANG_Ada2012 and DW_LANG_Rust. + +https://bugs.kde.org/show_bug.cgi?id=497130 + +(cherry picked from commit 7136316123c54aba37fdab166e1bf860e452a4ae) +--- + NEWS | 1 + + coregrind/m_debuginfo/priv_d3basics.h | 31 +++++++++++++++++++++++++++ + coregrind/m_debuginfo/readdwarf3.c | 27 +++++++++++++++++++++-- + 3 files changed, 57 insertions(+), 2 deletions(-) + +diff --git a/NEWS b/NEWS +index 7f1334aa0f07..a25f9b663098 100644 +--- a/NEWS ++++ b/NEWS +@@ -7,6 +7,7 @@ The following bugs have been fixed or resolved on this branch. + + 489913 WARNING: unhandled amd64-linux syscall: 444 (landlock_create_ruleset) + 494246 syscall fsopen not wrapped ++497130 Recognize new DWARF5 DW_LANG constants + + To see details of a given bug, visit + https://bugs.kde.org/show_bug.cgi?id=XXXXXX +diff --git a/coregrind/m_debuginfo/priv_d3basics.h b/coregrind/m_debuginfo/priv_d3basics.h +index 3f6e5c72c9e4..34c98728711c 100644 +--- a/coregrind/m_debuginfo/priv_d3basics.h ++++ b/coregrind/m_debuginfo/priv_d3basics.h +@@ -179,6 +179,7 @@ typedef enum dwarf_source_language + /* DWARF 4. */ + DW_LANG_Python = 0x0014, + /* DWARF 5. */ ++ DW_LANG_OpenCL = 0x0015, + DW_LANG_Go = 0x0016, + DW_LANG_Modula3 = 0x0017, + DW_LANG_Haskell = 0x0018, +@@ -195,6 +196,36 @@ typedef enum dwarf_source_language + DW_LANG_Fortran08 = 0x0023, + DW_LANG_RenderScript = 0x0024, + DW_LANG_BLISS = 0x0025, ++ /* Language codes added since DWARF 5. ++ https://dwarfstd.org/languages.html */ ++ DW_LANG_Kotlin = 0x0026, ++ DW_LANG_Zig = 0x0027, ++ DW_LANG_Crystal = 0x0028, ++ DW_LANG_C_plus_plus_17 = 0x002a, ++ DW_LANG_C_plus_plus_20 = 0x002b, ++ DW_LANG_C17 = 0x002c, ++ DW_LANG_Fortran18 = 0x002d, ++ DW_LANG_Ada2005 = 0x002e, ++ DW_LANG_Ada2012 = 0x002f, ++ DW_LANG_HIP = 0x0030, ++ DW_LANG_Assembly = 0x0031, ++ DW_LANG_C_sharp = 0x0032, ++ DW_LANG_Mojo = 0x0033, ++ DW_LANG_GLSL = 0x0034, ++ DW_LANG_GLSL_ES = 0x0035, ++ DW_LANG_HLSL = 0x0036, ++ DW_LANG_OpenCL_CPP = 0x0037, ++ DW_LANG_CPP_for_OpenCL = 0x0038, ++ DW_LANG_SYCL = 0x0039, ++ DW_LANG_C_plus_plus_23 = 0x003a, ++ DW_LANG_Odin = 0x003b, ++ DW_LANG_P4 = 0x003c, ++ DW_LANG_Metal = 0x003d, ++ DW_LANG_C23 = 0x003e, ++ DW_LANG_Fortran23 = 0x003f, ++ DW_LANG_Ruby = 0x0040, ++ DW_LANG_Move = 0x0041, ++ DW_LANG_Hylo = 0x0042, + /* MIPS. */ + DW_LANG_Mips_Assembler = 0x8001, + /* UPC. */ +diff --git a/coregrind/m_debuginfo/readdwarf3.c b/coregrind/m_debuginfo/readdwarf3.c +index a4b75a8c532b..735896f7c0d3 100644 +--- a/coregrind/m_debuginfo/readdwarf3.c ++++ b/coregrind/m_debuginfo/readdwarf3.c +@@ -3972,19 +3972,42 @@ static void parse_type_DIE ( /*MOD*/XArray* /* of TyEnt */ tyents, + case DW_LANG_C_plus_plus: case DW_LANG_ObjC: + case DW_LANG_ObjC_plus_plus: case DW_LANG_UPC: + case DW_LANG_Upc: case DW_LANG_C99: case DW_LANG_C11: ++ case DW_LANG_C17: case DW_LANG_C23: + case DW_LANG_C_plus_plus_11: case DW_LANG_C_plus_plus_14: ++ case DW_LANG_C_plus_plus_17: case DW_LANG_C_plus_plus_20: ++ case DW_LANG_C_plus_plus_23: + parser->language = 'C'; break; + case DW_LANG_Fortran77: case DW_LANG_Fortran90: + case DW_LANG_Fortran95: case DW_LANG_Fortran03: +- case DW_LANG_Fortran08: ++ case DW_LANG_Fortran08: case DW_LANG_Fortran18: ++ case DW_LANG_Fortran23: + parser->language = 'F'; break; + case DW_LANG_Ada83: case DW_LANG_Ada95: ++ case DW_LANG_Ada2005: case DW_LANG_Ada2012: + parser->language = 'A'; break; + case DW_LANG_Cobol74: + case DW_LANG_Cobol85: case DW_LANG_Pascal83: + case DW_LANG_Modula2: case DW_LANG_Java: + case DW_LANG_PLI: +- case DW_LANG_D: case DW_LANG_Python: case DW_LANG_Go: ++ case DW_LANG_D: case DW_LANG_Python: ++ case DW_LANG_OpenCL: case DW_LANG_Go: ++ case DW_LANG_Modula3: case DW_LANG_Haskell: ++ case DW_LANG_OCaml: case DW_LANG_Rust: case DW_LANG_Swift: ++ case DW_LANG_Julia: case DW_LANG_Dylan: ++ case DW_LANG_RenderScript: case DW_LANG_BLISS: ++ case DW_LANG_Kotlin: case DW_LANG_Zig: ++ case DW_LANG_Crystal: case DW_LANG_HIP: ++ case DW_LANG_Assembly: case DW_LANG_C_sharp: ++ case DW_LANG_Mojo: case DW_LANG_GLSL: ++ case DW_LANG_GLSL_ES: case DW_LANG_HLSL: ++ case DW_LANG_OpenCL_CPP: case DW_LANG_CPP_for_OpenCL: ++ case DW_LANG_SYCL: ++ case DW_LANG_Odin: ++ case DW_LANG_P4: ++ case DW_LANG_Metal: ++ case DW_LANG_Ruby: ++ case DW_LANG_Move: ++ case DW_LANG_Hylo: + case DW_LANG_Mips_Assembler: + parser->language = '?'; break; + default: +-- +2.47.1 + diff --git a/0013-Bug-498317-FdBadUse-is-not-a-valid-CoreError-type-in.patch b/0013-Bug-498317-FdBadUse-is-not-a-valid-CoreError-type-in.patch new file mode 100644 index 0000000..6c8c3f7 --- /dev/null +++ b/0013-Bug-498317-FdBadUse-is-not-a-valid-CoreError-type-in.patch @@ -0,0 +1,147 @@ +From febe1ccef09f70777b086f938c03f3e71989a7c8 Mon Sep 17 00:00:00 2001 +From: Paul Floyd +Date: Tue, 7 Jan 2025 08:05:20 +0100 +Subject: [PATCH 13/14] Bug 498317 - FdBadUse is not a valid CoreError type in + a suppression even though it's generated by --gen-suppressions=yes + +https://bugs.kde.org/show_bug.cgi?id=498317 + +(cherry picked from commit 47bdc4a6f3de8e2071561d349fdd5f830388c489) +--- + NEWS | 2 ++ + coregrind/m_errormgr.c | 7 +++++-- + coregrind/m_syswrap/syswrap-freebsd.c | 4 ++++ + none/tests/freebsd/Makefile.am | 4 +++- + none/tests/freebsd/bug498317.c | 7 +++++++ + none/tests/freebsd/bug498317.stderr.exp | 0 + none/tests/freebsd/bug498317.supp | 8 ++++++++ + none/tests/freebsd/bug498317.vgtest | 2 ++ + 9 files changed, 32 insertions(+), 3 deletions(-) + create mode 100644 none/tests/freebsd/bug498317.c + create mode 100644 none/tests/freebsd/bug498317.stderr.exp + create mode 100644 none/tests/freebsd/bug498317.supp + create mode 100644 none/tests/freebsd/bug498317.vgtest + +diff --git a/NEWS b/NEWS +index a25f9b663098..2fb8ce5c724b 100644 +--- a/NEWS ++++ b/NEWS +@@ -8,6 +8,8 @@ The following bugs have been fixed or resolved on this branch. + 489913 WARNING: unhandled amd64-linux syscall: 444 (landlock_create_ruleset) + 494246 syscall fsopen not wrapped + 497130 Recognize new DWARF5 DW_LANG constants ++498317 FdBadUse is not a valid CoreError type in a suppression ++ even though it's generated by --gen-suppressions=yes + + To see details of a given bug, visit + https://bugs.kde.org/show_bug.cgi?id=XXXXXX +diff --git a/coregrind/m_errormgr.c b/coregrind/m_errormgr.c +index 4bbcea02474c..2ce919482f77 100644 +--- a/coregrind/m_errormgr.c ++++ b/coregrind/m_errormgr.c +@@ -206,7 +206,8 @@ typedef + // example should new core errors ever be added. + ThreadSupp = -1, /* Matches ThreadErr */ + FdBadCloseSupp = -2, +- FdNotClosedSupp = -3 ++ FdNotClosedSupp = -3, ++ FdBadUseSupp = -4 + } + CoreSuppKind; + +@@ -1033,7 +1034,7 @@ static Bool core_error_matches_suppression(const Error* err, const Supp* su) + return err->ekind == FdBadClose; + case FdNotClosedSupp: + return err->ekind == FdNotClosed; +- case FdBadUse: ++ case FdBadUseSupp: + return err->ekind == FdBadUse; + default: + VG_(umsg)("FATAL: unknown core suppression kind: %d\n", su->skind ); +@@ -1522,6 +1523,8 @@ static void load_one_suppressions_file ( Int clo_suppressions_i ) + supp->skind = FdBadCloseSupp; + else if (VG_STREQ(supp_name, "FdNotClosed")) + supp->skind = FdNotClosedSupp; ++ else if (VG_STREQ(supp_name, "FdBadUse")) ++ supp->skind = FdBadUseSupp; + else + BOMB("unknown core suppression type"); + } +diff --git a/coregrind/m_syswrap/syswrap-freebsd.c b/coregrind/m_syswrap/syswrap-freebsd.c +index 685eb6be076c..a2b79545594e 100644 +--- a/coregrind/m_syswrap/syswrap-freebsd.c ++++ b/coregrind/m_syswrap/syswrap-freebsd.c +@@ -1400,6 +1400,10 @@ PRE(sys_fcntl) + PRINT("sys_fcntl[UNKNOWN] ( %lu, %lu, %lu )", ARG1,ARG2,ARG3); + I_die_here; + } ++ ++ if (!ML_(fd_allowed)(ARG1, "fcntl", tid, False)) { ++ SET_STATUS_Failure (VKI_EBADF); ++ } + } + + POST(sys_fcntl) +diff --git a/none/tests/freebsd/Makefile.am b/none/tests/freebsd/Makefile.am +index fe4f8db69824..1ccfefb57fe2 100644 +--- a/none/tests/freebsd/Makefile.am ++++ b/none/tests/freebsd/Makefile.am +@@ -11,6 +11,8 @@ EXTRA_DIST = \ + auxv.stderr.exp-freebsd131 \ + auxv.stderr.exp-freebsd14 \ + auxv.stderr.exp-arm64 \ ++ bug498317.vgtest bug498317.stderr.exp \ ++ bug498317.supp \ + cp.vgtest \ + cp.stderr.exp \ + osrel.vgtest \ +@@ -61,7 +63,7 @@ EXTRA_DIST = \ + usrstack.stdout.exp + + check_PROGRAMS = \ +- auxv osrel swapcontext hello_world fexecve 452275 usrstack \ ++ auxv bug498317 osrel swapcontext hello_world fexecve 452275 usrstack \ + proc_pid_file sanity_level_thread umtx_shm_creat + + AM_CFLAGS += $(AM_FLAG_M3264_PRI) +diff --git a/none/tests/freebsd/bug498317.c b/none/tests/freebsd/bug498317.c +new file mode 100644 +index 000000000000..36a1a5a1365e +--- /dev/null ++++ b/none/tests/freebsd/bug498317.c +@@ -0,0 +1,7 @@ ++#include ++ ++int main(void) { ++ fcntl(-1, F_GETFD); ++ return 0; ++} ++ +diff --git a/none/tests/freebsd/bug498317.stderr.exp b/none/tests/freebsd/bug498317.stderr.exp +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/none/tests/freebsd/bug498317.supp b/none/tests/freebsd/bug498317.supp +new file mode 100644 +index 000000000000..b3a99447c2a4 +--- /dev/null ++++ b/none/tests/freebsd/bug498317.supp +@@ -0,0 +1,8 @@ ++{ ++ test suppression of FdBadUse ++ CoreError:FdBadUse ++ fun:_fcntl ++ fun:fcntl ++ fun:main ++} ++ +diff --git a/none/tests/freebsd/bug498317.vgtest b/none/tests/freebsd/bug498317.vgtest +new file mode 100644 +index 000000000000..6579ebce8c56 +--- /dev/null ++++ b/none/tests/freebsd/bug498317.vgtest +@@ -0,0 +1,2 @@ ++prog: bug498317 ++vgopts: -q +-- +2.47.1 + diff --git a/0014-linux-support-EVIOCGRAB-ioctl.patch b/0014-linux-support-EVIOCGRAB-ioctl.patch new file mode 100644 index 0000000..8213dc0 --- /dev/null +++ b/0014-linux-support-EVIOCGRAB-ioctl.patch @@ -0,0 +1,60 @@ +From b732f86998e39ca8714330f487804428b54c481c Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Wed, 8 Jan 2025 16:52:03 +0100 +Subject: [PATCH 14/14] linux: support EVIOCGRAB ioctl + +EVIOCGRAB just takes an int argument. + +https://bugs.kde.org/show_bug.cgi?id=498143 + +(cherry picked from commit 59eb5a4af60d4beb2c6910a1fa6cdf8d1f3a56f2) +--- + NEWS | 1 + + coregrind/m_syswrap/syswrap-linux.c | 4 ++++ + include/vki/vki-linux.h | 3 +++ + 3 files changed, 8 insertions(+) + +diff --git a/NEWS b/NEWS +index 2fb8ce5c724b..7f9e005c59f4 100644 +--- a/NEWS ++++ b/NEWS +@@ -10,6 +10,7 @@ The following bugs have been fixed or resolved on this branch. + 497130 Recognize new DWARF5 DW_LANG constants + 498317 FdBadUse is not a valid CoreError type in a suppression + even though it's generated by --gen-suppressions=yes ++498143 False positive on EVIOCGRAB ioctl + + To see details of a given bug, visit + https://bugs.kde.org/show_bug.cgi?id=XXXXXX +diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c +index 57672f167126..87ab82e6e342 100644 +--- a/coregrind/m_syswrap/syswrap-linux.c ++++ b/coregrind/m_syswrap/syswrap-linux.c +@@ -10397,6 +10397,10 @@ PRE(sys_ioctl) + break; + } + ++ case VKI_EVIOCGRAB: ++ /* This just takes an int argument. */ ++ break; ++ + default: + /* EVIOC* are variable length and return size written on success */ + switch (ARG2 & ~(_VKI_IOC_SIZEMASK << _VKI_IOC_SIZESHIFT)) { +diff --git a/include/vki/vki-linux.h b/include/vki/vki-linux.h +index 006f16d92201..d4e1908e1e9c 100644 +--- a/include/vki/vki-linux.h ++++ b/include/vki/vki-linux.h +@@ -3226,6 +3226,9 @@ struct vki_getcpu_cache { + + #define VKI_EVIOCGBIT(ev,len) _VKI_IOC(_VKI_IOC_READ, 'E', 0x20 + ev, len) /* get event bits */ + ++#define VKI_EVIOCGRAB _VKI_IOW('E', 0x90, int) ++/* grab device */ ++ + /* + * Event types + */ +-- +2.47.1 + diff --git a/SOURCES/valgrind-3.22.0-rodata.patch b/SOURCES/valgrind-3.22.0-rodata.patch deleted file mode 100644 index 47f31ed..0000000 --- a/SOURCES/valgrind-3.22.0-rodata.patch +++ /dev/null @@ -1,122 +0,0 @@ -commit 1d00e5ce0fb069911c4b525ec38289fb5d9021b0 -Author: Paul Floyd -Date: Sat Nov 18 08:49:34 2023 +0100 - - Bug 476548 - valgrind 3.22.0 fails on assertion when loading debuginfo file produced by mold - - (cherry picked from commit 9ea4ae66707a4dcc6f4328e11911652e4418c585) - -diff --git a/coregrind/m_debuginfo/image.c b/coregrind/m_debuginfo/image.c -index 02e509071..445f95555 100644 ---- a/coregrind/m_debuginfo/image.c -+++ b/coregrind/m_debuginfo/image.c -@@ -1221,6 +1221,20 @@ Int ML_(img_strcmp_c)(DiImage* img, DiOffT off1, const HChar* str2) - } - } - -+Int ML_(img_strcmp_n)(DiImage* img, DiOffT off1, const HChar* str2, Word n) -+{ -+ ensure_valid(img, off1, 1, "ML_(img_strcmp_c)"); -+ while (n) { -+ UChar c1 = get(img, off1); -+ UChar c2 = *(const UChar*)str2; -+ if (c1 < c2) return -1; -+ if (c1 > c2) return 1; -+ if (c1 == 0) return 0; -+ off1++; str2++; --n; -+ } -+ return 0; -+} -+ - UChar ML_(img_get_UChar)(DiImage* img, DiOffT offset) - { - ensure_valid(img, offset, 1, "ML_(img_get_UChar)"); -diff --git a/coregrind/m_debuginfo/priv_image.h b/coregrind/m_debuginfo/priv_image.h -index a49846f14..c91e49f01 100644 ---- a/coregrind/m_debuginfo/priv_image.h -+++ b/coregrind/m_debuginfo/priv_image.h -@@ -115,6 +115,10 @@ Int ML_(img_strcmp)(DiImage* img, DiOffT off1, DiOffT off2); - cast to HChar before comparison. */ - Int ML_(img_strcmp_c)(DiImage* img, DiOffT off1, const HChar* str2); - -+/* Do strncmp of a C string in the image vs a normal one. Chars are -+ cast to HChar before comparison. */ -+Int ML_(img_strcmp_n)(DiImage* img, DiOffT off1, const HChar* str2, Word n); -+ - /* Do strlen of a C string in the image. */ - SizeT ML_(img_strlen)(DiImage* img, DiOffT off); - -diff --git a/coregrind/m_debuginfo/readelf.c b/coregrind/m_debuginfo/readelf.c -index fb64ed976..46f8c8343 100644 ---- a/coregrind/m_debuginfo/readelf.c -+++ b/coregrind/m_debuginfo/readelf.c -@@ -2501,8 +2501,7 @@ Bool ML_(read_elf_object) ( struct _DebugInfo* di ) - di->rodata_avma += inrw1->bias; - di->rodata_bias = inrw1->bias; - di->rodata_debug_bias = inrw1->bias; -- } -- else { -+ } else { - BAD(".rodata"); /* should not happen? */ - } - di->rodata_present = True; -@@ -2977,6 +2976,46 @@ Bool ML_(read_elf_object) ( struct _DebugInfo* di ) - return retval; - } - -+static void find_rodata(Word i, Word shnum, DiImage* dimg, struct _DebugInfo* di, DiOffT shdr_dioff, -+ UWord shdr_dent_szB, DiOffT shdr_strtab_dioff, PtrdiffT rw_dbias) -+{ -+ ElfXX_Shdr a_shdr; -+ ElfXX_Shdr a_extra_shdr; -+ ML_(img_get)(&a_shdr, dimg, -+ INDEX_BIS(shdr_dioff, i, shdr_dent_szB), -+ sizeof(a_shdr)); -+ if (di->rodata_present && -+ 0 == ML_(img_strcmp_c)(dimg, shdr_strtab_dioff -+ + a_shdr.sh_name, ".rodata")) { -+ Word sh_size = a_shdr.sh_size; -+ Word j; -+ Word next_addr = a_shdr.sh_addr + a_shdr.sh_size; -+ for (j = i + 1; j < shnum; ++j) { -+ ML_(img_get)(&a_extra_shdr, dimg, -+ INDEX_BIS(shdr_dioff, j, shdr_dent_szB), -+ sizeof(a_shdr)); -+ if (0 == ML_(img_strcmp_n)(dimg, shdr_strtab_dioff -+ + a_extra_shdr.sh_name, ".rodata", 7)) { -+ if (a_extra_shdr.sh_addr == -+ VG_ROUNDUP(next_addr, a_extra_shdr.sh_addralign)) { -+ sh_size = VG_ROUNDUP(sh_size, a_extra_shdr.sh_addralign) + a_extra_shdr.sh_size; -+ } -+ next_addr = a_extra_shdr.sh_addr + a_extra_shdr.sh_size; -+ } else { -+ break; -+ } -+ } -+ vg_assert(di->rodata_size == sh_size); -+ vg_assert(di->rodata_avma + a_shdr.sh_addr + rw_dbias); -+ di->rodata_debug_svma = a_shdr.sh_addr; -+ di->rodata_debug_bias = di->rodata_bias + -+ di->rodata_svma - di->rodata_debug_svma; -+ TRACE_SYMTAB("acquiring .rodata debug svma = %#lx .. %#lx\n", -+ di->rodata_debug_svma, -+ di->rodata_debug_svma + di->rodata_size - 1); -+ TRACE_SYMTAB("acquiring .rodata debug bias = %#lx\n", (UWord)di->rodata_debug_bias); -+ } -+} - Bool ML_(read_elf_debug) ( struct _DebugInfo* di ) - { - Word i, j; -@@ -3391,7 +3430,11 @@ Bool ML_(read_elf_debug) ( struct _DebugInfo* di ) - FIND(text, rx) - FIND(data, rw) - FIND(sdata, rw) -- FIND(rodata, rw) -+ // https://bugs.kde.org/show_bug.cgi?id=476548 -+ // special handling for rodata as adjacent -+ // rodata sections may have been merged in ML_(read_elf_object) -+ //FIND(rodata, rw) -+ find_rodata(i, ehdr_dimg.e_shnum, dimg, di, shdr_dioff, shdr_dent_szB, shdr_strtab_dioff, rw_dbias); - FIND(bss, rw) - FIND(sbss, rw) - diff --git a/sources b/sources new file mode 100644 index 0000000..6713bf4 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (valgrind-3.24.0.tar.bz2) = 6c131ff93d1f432d8362a47285cc377cba224ebca4f18e922c6156f7736d43020ece14d8fd16913498ab00fd18c85e2042a7d5351c3901e80413c584ebb406f3 diff --git a/SOURCES/valgrind-3.16.0-some-Wl-z-now.patch b/valgrind-3.16.0-some-Wl-z-now.patch similarity index 100% rename from SOURCES/valgrind-3.16.0-some-Wl-z-now.patch rename to valgrind-3.16.0-some-Wl-z-now.patch diff --git a/SOURCES/valgrind-3.16.0-some-stack-protector.patch b/valgrind-3.16.0-some-stack-protector.patch similarity index 100% rename from SOURCES/valgrind-3.16.0-some-stack-protector.patch rename to valgrind-3.16.0-some-stack-protector.patch diff --git a/SOURCES/valgrind-3.9.0-cachegrind-improvements.patch b/valgrind-3.9.0-cachegrind-improvements.patch similarity index 100% rename from SOURCES/valgrind-3.9.0-cachegrind-improvements.patch rename to valgrind-3.9.0-cachegrind-improvements.patch diff --git a/SOURCES/valgrind-3.9.0-ldso-supp.patch b/valgrind-3.9.0-ldso-supp.patch similarity index 100% rename from SOURCES/valgrind-3.9.0-ldso-supp.patch rename to valgrind-3.9.0-ldso-supp.patch diff --git a/SPECS/valgrind.spec b/valgrind.spec similarity index 74% rename from SPECS/valgrind.spec rename to valgrind.spec index 577f680..b180cca 100644 --- a/SPECS/valgrind.spec +++ b/valgrind.spec @@ -2,12 +2,18 @@ Summary: Dynamic analysis tools to detect memory or thread bugs and profile Name: %{?scl_prefix}valgrind -Version: 3.22.0 +Version: 3.24.0 Release: 3%{?dist} Epoch: 1 -License: GPLv2+ + +# This ignores licenses that are only found in the test or perf sources +# we only care about those license statements found in sources that end +# up in the binary packages. One piece of code for which we don't have +# a license specifier is in coregrind/m_main.c for some Hacker's Delight +# public domain code, which is only compiled into Darwin binaries, which +# we don't create. Also some subpackages have their own license tags. +License: GPL-2.0-or-later AND bzip2-1.0.6 AND GFDL-1.2-or-later AND (GPL-2.0-or-later AND LGPL-2.0-or-later) AND (GPL-2.0-or-later AND ISC) AND (GPL-2.0-or-later AND Unlicense) AND (GPL-2.0-or-later AND Zlib) AND (GPL-2.0-or-later WITH GCC-exception-2.0) AND (LGPL-2.0-or-later WITH GCC-exception-2.0) AND (GPL-2.0-or-later AND BSD-3-Clause) AND (GPL-2.0-or-later AND (MIT OR NCSA)) AND CMU-Mach AND (GPL-2.0-or-later AND X11 AND BSD-3-Clause) AND X11 AND (GPL-2.0-or-later AND LGPL-2.0-or-later) AND (GPL-2.0-or-later AND (GPL-2.0-or-later OR MPL-2.0)) AND (GPL-2.0-or-later WITH Autoconf-exception-generic) AND (GPL-3.0-or-later WITH Autoconf-exception-generic-3.0) AND FSFULLR AND FSFAP AND FSFUL AND FSFULLRWD URL: https://www.valgrind.org/ -Group: Development/Debuggers # Are we building for a Software Collection? %{?scl:%global is_scl 1} @@ -15,7 +21,7 @@ Group: Development/Debuggers # We never want the openmpi subpackage when building a software collecton. # We always want it for fedora. -# We only want it for older rhel. But not s390x for too old rhel. +# We only want it for older rhel. # And on fedora > 39 i386 dropped openmpi. %if %{is_scl} %global build_openmpi 0 @@ -31,11 +37,7 @@ Group: Development/Debuggers %if 0%{?rhel} > 7 %global build_openmpi 0 %else - %ifarch s390x - %global build_openmpi (%{?rhel} > 6) - %else - %global build_openmpi 1 - %endif + %global build_openmpi 1 %endif %endif %endif @@ -55,17 +57,11 @@ Group: Development/Debuggers # Whether to run the full regtest or only a limited set # The full regtest includes gdb_server integration tests # and experimental tools. -# Only run full regtests on fedora, but not on older rhel -# or when creating scl, the gdb_server tests might hang. +# Don't run them when creating scl, the gdb_server tests might hang. %if %{is_scl} %global run_full_regtest 0 %else - %if 0%{?fedora} - %global run_full_regtest 1 - %endif - %if 0%{?rhel} - %global run_full_regtest (%rhel >= 7) - %endif + %global run_full_regtest 1 %endif # Generating minisymtabs doesn't really work for the staticly linked @@ -89,9 +85,21 @@ Patch3: valgrind-3.16.0-some-stack-protector.patch # Add some -Wl,z,now. Patch4: valgrind-3.16.0-some-Wl-z-now.patch -# valgrind 3.22.0 fails on assertion when loading debuginfo -# https://bugs.kde.org/show_bug.cgi?id=476548 -Patch5: valgrind-3.22.0-rodata.patch +# VALGRIND_3_24_BRANCH patches +Patch5: 0001-Prepare-NEWS-for-branch-3.24-fixes.patch +Patch6: 0002-vgdb.c-fork_and_exec_valgrind-Fix-off-by-one-error-w.patch +Patch7: 0003-vgdb.c-fork_and_exec_valgrind-Fix-another-off-by-one.patch +Patch8: 0004-regtest-add-a-fdleak-filter-for-write-on-write-on-li.patch +Patch9: 0005-Add-exp-and-supp-patterns-for-missing-main-frame-for.patch +Patch10: 0006-Add-additional-exp-ppc64le-files-to-EXTRA_DIST.patch +Patch11: 0007-Add-support-for-landlock_create_ruleset-444-landlock.patch +Patch12: 0008-helgrind-tests-tc17_sembar.c-Remove-bool-typedef.patch +Patch13: 0009-drd-tests-swapcontext.c-Rename-typedef-struct-thread.patch +Patch14: 0010-none-tests-bug234814.c-sa_handler-take-an-int-as-arg.patch +Patch15: 0011-Add-open_tree-move_mount-fsopen-fsconfig-fsmount-fsp.patch +Patch16: 0012-Recognize-new-DWARF5-DW_LANG-constants.patch +Patch17: 0013-Bug-498317-FdBadUse-is-not-a-valid-CoreError-type-in.patch +Patch18: 0014-linux-support-EVIOCGRAB-ioctl.patch BuildRequires: make BuildRequires: glibc-devel @@ -131,24 +139,12 @@ BuildRequires: elfutils-debuginfod-client Recommends: elfutils-debuginfod-client %endif -# Optional subpackages -Recommends: %{?scl_prefix}valgrind-docs = %{epoch}:%{version}-%{release} -Recommends: %{?scl_prefix}valgrind-scripts = %{epoch}:%{version}-%{release} -Recommends: %{?scl_prefix}valgrind-gdb = %{epoch}:%{version}-%{release} - +# For running the testsuite. # Some of the python scripts require python 3.9+ -BuildRequires: python3.11 -BuildRequires: python3.11-rpm-macros +BuildRequires: python3-devel %{?scl:Requires:%scl_runtime} -# We need to fixup selinux file context when doing a scl build. -# In RHEL6 we might need to fix up the labels even though the -# meta package sets up a fs equivalence. See post. -%if 0%{?rhel} == 6 -%{?scl:Requires(post): /sbin/restorecon} -%endif - # We could use %%valgrind_arches as defined in redhat-rpm-config # But that is really for programs using valgrind, it defines the # set of architectures that valgrind works correctly on. @@ -202,48 +198,19 @@ profiler (callgrind), and a heap profiler (massif). %package devel Summary: Development files for valgrind aware programs -Group: Development/Debuggers -# These are just the header files, so strictly speaking you don't -# need valgrind itself unless you are testing your builds. This used -# to be a Requires, so people might depend on the package pulling in -# the core valgrind package, so make it at least a weak dependency. -Recommends: %{?scl_prefix}valgrind = %{epoch}:%{version}-%{release} +# This is really Hybrid-BSD +# https://fedoraproject.org/wiki/Licensing:BSD#Hybrid_BSD_(half_BSD,_half_zlib) +# But that doesnt have a SPDX identifier yet +# https://gitlab.com/fedora/legal/fedora-license-data/-/issues/422 +License: bzip2-1.0.6 +Requires: %{?scl_prefix}valgrind = %{epoch}:%{version}-%{release} %description devel Header files and libraries for development of valgrind aware programs. -%package docs -Summary: Documentation for valgrind tools, scripts and gdb integration -License: GFDL-1.2-or-later - -%description docs -Documentation in html and pdf, plus man pages for valgrind tools and scripts. - -%package scripts -Summary: Scripts for post-processing valgrind tool output -License: GPL-2.0-or-later -# Most scripts can be used as is for post-processing a valgrind tool run. -# But callgrind_control uses vgdb. -Recommends: %{?scl_prefix}valgrind-gdb = %{epoch}:%{version}-%{release} - -%description scripts -Perl and Python scripts for post-processing valgrind tool output. - -%package gdb -Summary: Tools for integrating valgrind and gdb -License: GPL-2.0-or-later -Requires: %{?scl_prefix}valgrind = %{epoch}:%{version}-%{release} -# vgdb can be used without gdb, just to control valgrind. -# But normally you use it together with both valgrind and gdb. -Recommends: gdb - -%description gdb -Tools and support files for integrating valgrind and gdb. - %if %{build_tools_devel} %package tools-devel Summary: Development files for building valgrind tools. -Group: Development/Debuggers Requires: %{?scl_prefix}valgrind-devel = %{epoch}:%{version}-%{release} Provides: %{name}-static = %{epoch}:%{version}-%{release} @@ -254,7 +221,8 @@ Header files and libraries for development of valgrind tools. %if %{build_openmpi} %package openmpi Summary: OpenMPI support for valgrind -Group: Development/Debuggers +# See above, Hybrid-BSD like. +License: bzip2-1.0.6 Requires: %{?scl_prefix}valgrind = %{epoch}:%{version}-%{release} %description openmpi @@ -268,29 +236,36 @@ Valgrind User Manual for details. %patch -P1 -p1 %patch -P2 -p1 - -# Old rhel gcc doesn't have -fstack-protector-strong. -%if 0%{?fedora} || 0%{?rhel} >= 7 %patch -P3 -p1 %patch -P4 -p1 -%endif %patch -P5 -p1 +%patch -P6 -p1 +%patch -P7 -p1 +%patch -P8 -p1 +%patch -P9 -p1 +%patch -P10 -p1 +%patch -P11 -p1 +%patch -P12 -p1 +%patch -P13 -p1 +%patch -P14 -p1 +%patch -P15 -p1 +%patch -P16 -p1 +%patch -P17 -p1 +%patch -P18 -p1 %build +# LTO triggers undefined symbols in valgrind. But valgrind has a +# --enable-lto configure time option that we will use instead. +%define _lto_cflags %{nil} # Some patches (might) touch Makefile.am or configure.ac files. # Just always autoreconf so we don't need patches to prebuild files. ./autogen.sh -# Old openmpi-devel has version depended paths for mpicc. %if %{build_openmpi} -%if 0%{?fedora} >= 13 || 0%{?rhel} >= 6 %define mpiccpath %{!?scl:%{_libdir}}%{?scl:%{_root_libdir}}/openmpi/bin/mpicc %else -%define mpiccpath %{!?scl:%{_libdir}}%{?scl:%{_root_libdir}}/openmpi/*/bin/mpicc -%endif -%else # We explicitly don't want the libmpi wrapper. So make sure that configure # doesn't pick some random mpi compiler that happens to be installed. %define mpiccpath /bin/false @@ -342,13 +317,14 @@ export LDFLAGS --with-mpicc=%{mpiccpath} \ %{only_arch} \ GDB=%{_bindir}/gdb \ - --without-gdbscripts-dir + --with-gdbscripts-dir=%{_datadir}/gdb/auto-load \ + --enable-lto -make %{?_smp_mflags} +%make_build %install rm -rf $RPM_BUILD_ROOT -make DESTDIR=$RPM_BUILD_ROOT install +%make_install mkdir docs/installed mv $RPM_BUILD_ROOT%{_datadir}/doc/valgrind/* docs/installed/ rm -f docs/installed/*.ps @@ -410,7 +386,7 @@ cat /proc/cpuinfo %{?scl:PATH=%{_bindir}${PATH:+:${PATH}}} # Make sure no extra CFLAGS, CXXFLAGS or LDFLAGS leak through, # the testsuite sets all flags necessary. See also configure above. -make %{?_smp_mflags} CFLAGS="" CXXFLAGS="" LDFLAGS="" check +%make_build CFLAGS="" CXXFLAGS="" LDFLAGS="" check # Workaround https://bugzilla.redhat.com/show_bug.cgi?id=1434601 # for gdbserver tests. @@ -448,41 +424,20 @@ echo ===============END TESTING=============== %{!?_licensedir:%global license %%doc} %files -%license COPYING -%{_bindir}/valgrind -%dir %{_libexecdir}/valgrind -# Install just the core tools, default suppression and vgpreload libraries. -%{_libexecdir}/valgrind/default.supp -%{_libexecdir}/valgrind/*-*-linux -# Turn on executable bit again for vgpreload libraries. -# Was disabled in %%install to prevent debuginfo stripping. -%attr(0755,root,root) %{_libexecdir}/valgrind/vgpreload_*-%{valarch}-linux.so - -%files docs -%license COPYING.DOCS +%license COPYING COPYING.DOCS %doc NEWS README_* %doc docs/installed/html docs/installed/*.pdf +%{_bindir}/* +%dir %{_libexecdir}/valgrind +# Install everything in the libdir except the .so. +# The vgpreload so files might need file mode adjustment. +%{_libexecdir}/valgrind/*[^o] +# Turn on executable bit again for vgpreload libraries. +# Was disabled in %%install to prevent debuginfo stripping. +%attr(0755,root,root) %{_libexecdir}/valgrind/vgpreload*-%{valarch}-*so %{_mandir}/man1/* - -%files scripts -%license COPYING -%{_bindir}/callgrind_annotate -%{_bindir}/callgrind_control -%{_bindir}/cg_annotate -%{_bindir}/cg_diff -%{_bindir}/cg_merge -%{_bindir}/ms_print -%{_libexecdir}/valgrind/dh_view.css -%{_libexecdir}/valgrind/dh_view.html -%{_libexecdir}/valgrind/dh_view.js - -%files gdb -%license COPYING -%{_bindir}/valgrind-di-server -%{_bindir}/valgrind-listener -%{_bindir}/vgdb -# gdb register descriptions -%{_libexecdir}/valgrind/*.xml +%{_datadir}/gdb/auto-load/valgrind-monitor.py +%{_datadir}/gdb/auto-load/valgrind-monitor-def.py %files devel %dir %{_includedir}/valgrind @@ -513,75 +468,188 @@ echo ===============END TESTING=============== %{_libdir}/valgrind/libmpiwrap*.so %endif -%if 0%{?rhel} == 6 -%post -# There is a bug in rpm (rhbz#214737) that might cause post to be run -# even thought the binary isn't installed when installing two multilib -# versions at the same time. -if [ -x %{_bindir}/valgrind ]; then -# On RHEL6 the fs equivalency should be setup by the devtoolset meta -# package, but because of a rpm bug (rhbz#924044) it might not work. -%{?scl:/sbin/restorecon %{_bindir}/valgrind}%{!?scl:true} -fi -%endif - %changelog -* Fri Jan 24 2025 Mark Wielaard - 3.22.0-3 -- Split main valgrind package into several subpackages: - - valgrind now contains just the core tools. - - valgrind-scripts contains the post-processing scripts for callgrind, - cachegrind, massif and dhat which depend on perl and python. - - valgrind-gdb contains the debuginfo client/server and (v)gdb support. - - valgrind-docs contains the man pages, html and pdf manual. -- Adjust Requires/Recommends to subpackages can be installed independently. - - valgrind-devel now Recommends, instead of Requires, valgrind. - - valgrind-gdb Requires valgrind - - valgrind-scripts Recommends valgrind-gdb - - valgrind-gdb Recommends gdb +* Tue Jan 14 2025 Mark Wielaard - 3.24.0-3 +- Add more VALGRIND_3_24_BRANCH patches + 0012-Recognize-new-DWARF5-DW_LANG-constants.patch + 0013-Bug-498317-FdBadUse-is-not-a-valid-CoreError-type-in.patch + 0014-linux-support-EVIOCGRAB-ioctl.patch +* Tue Nov 26 2024 Mark Wielaard - 3.24.0-2 +- Add VALGRIND_3_24_BRANCH patches + 0001-Prepare-NEWS-for-branch-3.24-fixes.patch + 0002-vgdb.c-fork_and_exec_valgrind-Fix-off-by-one-error-w.patch + 0003-vgdb.c-fork_and_exec_valgrind-Fix-another-off-by-one.patch + 0004-regtest-add-a-fdleak-filter-for-write-on-write-on-li.patch + 0005-Add-exp-and-supp-patterns-for-missing-main-frame-for.patch + 0006-Add-additional-exp-ppc64le-files-to-EXTRA_DIST.patch + 0007-Add-support-for-landlock_create_ruleset-444-landlock.patch + 0008-helgrind-tests-tc17_sembar.c-Remove-bool-typedef.patch + 0009-drd-tests-swapcontext.c-Rename-typedef-struct-thread.patch + 0010-none-tests-bug234814.c-sa_handler-take-an-int-as-arg.patch + 0011-Add-open_tree-move_mount-fsopen-fsconfig-fsmount-fsp.patch -* Wed Dec 6 2023 Mark Wielaard - 3.22.0-2 +* Mon Nov 4 2024 Mark Wielaard - 3.24.0-1 +- Upstream 3.24.0 final + +* Tue Oct 29 2024 Troy Dawson - 1:3.23.0-5 +- Bump release for October 2024 mass rebuild: + Resolves: RHEL-64018 + +* Fri Jul 12 2024 Mark Wielaard - 3.23.0-4 + Add upstream VALGRIND_3_23_BRANCH patches + 0001-Prepare-NEWS-for-branch-3.23-fixes.patch + 0002-486180-MIPS-VexGuestArchState-has-no-member-named-gu.patch + 0003-Bug-486293-memccpy-false-positives.patch + 0004-Bug-486569-linux-inotify_init-syscall-wrapper-missin.patch + 0005-aarch64-frinta-and-frinta-vector-instructions.patch + 0006-mips-skip-using-shared-syscall-numbers-for-mips32.patch + 0007-Fix-uninitialized-err-in-handle_extension.patch + 0008-Avoid-use-of-guest_IP_AT_SYSCALL-in-handle_extension.patch + 0009-s390x-Minor-fixes-in-extension-s390x.c.patch + 0010-Bug-453044-gbserver_tests-failures-in-aarch64.patch + 0011-Linux-regtest-reallocarray-needs-malloc.h.patch + 0012-Bug-487439-SIGILL-in-JDK11-JDK17.patch + 0013-Don-t-leave-fds-created-with-log-file-xml-file-or-lo.patch + 0014-Close-both-internal-pipe-fds-after-VG_-fork-in-paren.patch + 0015-Don-t-allow-programs-calling-fnctl-on-valgrind-s-own.patch + 0016-mips-skip-using-shared-syscall-numbers-for-mips64.patch + 0017-gdbserver_tests-filters-remove-python-rpm-module-loa.patch + 0018-Implement-VMOVQ-xmm1-xmm2-m64.patch + 0019-arm64-Fix-fcvtas-instruction.patch + 0020-gdbserver_tests-filters-remove-more-verbose-python-r.patch + 0021-Avoid-dev-inode-check-on-btrfs-with-sanity-level-3.patch + +* Mon Jun 24 2024 Troy Dawson - 1:3.23.0-2 +- Bump release for June 2024 mass rebuild + +* Fri Apr 26 2024 Mark Wielaard - 3.23.0-1 +- Upstream 3.23.0 final +- configure --enable-lto +- Remove all upstreamed patches +- Add BuildRequires: python3-devel for running testsuite. +- Update license tags to spdx + +* Sat Jan 27 2024 Fedora Release Engineering - 1:3.22.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Mon Jan 22 2024 Mark Wielaard - 3.22.0-5 +- Add valgrind-3.22.0-x86-nop.patch + +* Sat Dec 9 2023 Mark Wielaard - 3.22.0-4 +- Add valgrind-3.22.0-fchmodat2.patch +- Prep for migration to SPDX identifiers + +* Tue Dec 5 2023 Mark Wielaard - 3.22.0-3 - Add valgrind-3.22.0-rodata.patch -* Fri Nov 3 2023 Mark Wielaard - 3.22.0-1 +* Fri Nov 17 2023 Mark Wielaard - 3.22.0-2 +- Add valgrind-3.22.0-valgrind-monitor-python-re.patch +- Drop support for rhel6 + +* Tue Oct 31 2023 Mark Wielaard - 3.22.0-1 - Upstream 3.22.0 final - BuildRequires elfutils-debuginfod for testing + +* Mon Oct 30 2023 Mark Wielaard - 3.22.0-0.2.RC2 +- Update valgrind-3.21.0-no-memcpy-replace-check.patch +- Fedora 40 dropped openmpi support on i386 + +* Thu Oct 26 2023 Mark Wielaard - 3.22.0-0.1.RC2 +- Upstream 3.22.0-RC2 + +* Tue Oct 17 2023 Mark Wielaard - 3.22.0-0.1.RC1 +- Upstream 3.22.0-RC1 - Remove all upstreamed patches - Adjust valgrind-3.16.0-some-stack-protector.patch - Adjust valgrind-3.16.0-some-Wl-z-now.patch - Add cachegrind.h to valgrind-devel package + +* Mon Aug 21 2023 Mark Wielaard - 3.21.0-10 +- Add valgrind-3.21.0-lazy-debuginfo.patch +- Add valgrind-3.21.0-cleanup-read_elf_object.patch + +* Thu Aug 17 2023 Mark Wielaard - 3.21.0-9 +- Add valgrind-3.21.0-gdb-multi-mode-stdout-redirecting-to-stderr.patch - Use %%patch -Pn instead of deprecated %%patchn -* Tue Jun 27 2023 Mark Wielaard - 3.21.0-8 -- BuildRequire python3.11 +* Sat Jul 22 2023 Fedora Release Engineering - 1:3.21.0-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild -* Fri Jun 23 2023 Mark Wielaard - 3.21.0-7 -- Add valgrind-3.21.0-callgrind_control-no-strict.patch -- Add valgrind-3.21.0-realloc-again.patch -- Update valgrind-3.21.0-no-memcpy-replace-check.patch (memcpy_chk) +* Thu Jun 22 2023 Mark Wielaard - 3.21.0-7 - Add valgrind-3.21.0-vgm.patch and valgrind-3.21.0-vgm-tests.patch - Add valgrind-3.21.0-pgste.patch +* Thu Jun 1 2023 Mark Wielaard - 3.21.0-6 +- Add valgrind-3.21.0-callgrind_control-no-strict.patch +- Add valgrind-3.21.0-realloc-again.patch + +* Tue May 30 2023 Mark Wielaard - 3.21.0-5 +- Update valgrind-3.21.0-no-memcpy-replace-check.patch (memcpy_chk) + +* Wed May 17 2023 Mark Wielaard - 3.21.0-4 +- Add valgrind-3.21.0-epoll_pwait2.patch + * Tue May 16 2023 Alexandra Hájková - 3.21.0-3 - Add valgrind-3.21.0-Add-with-gdbscripts-dir.patch -* Fri May 5 2023 Mark Wielaard - 3.21.0-2 -- Upgrade to upstream 3.21.0 -- Remove upstreamed patches +* Fri May 5 2023 Mark Wielaard - 3.21.0-2 - Add valgrind-3.21.0-no-memcpy-replace-check.patch -* Tue Apr 19 2022 Mark Wielaard - 3.19.0-1 +* Fri Apr 28 2023 Mark Wielaard - 3.21.0-1 +- Upstream 3.21.0 final + +* Sat Apr 22 2023 Mark Wielaard - 3.21.0-0.1.RC2 +- Upstream 3.21.0-RC2 + +* Fri Apr 21 2023 Mark Wielaard - 3.21.0-0.1.RC1 +- Upstream 3.21.0-RC1 +- Remove upstreamed valgrind-faultstatus-implicit-int.patch +- Adjust valgrind-3.16.0-some-{Wl-z-now,stack-protector}.patch + cg_merge is now a pything script. + +* Fri Nov 18 2022 Florian Weimer - 1:3.20.0-2 +- Avoid using implicit int C89 feature + +* Mon Oct 24 2022 Mark Wielaard - 3.20.0-1 +- Upgrade to valgrind 3.20.0. Drop old patches. + +* Sat Jul 23 2022 Fedora Release Engineering - 1:3.19.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Wed May 25 2022 Mark Wielaard - 3.19.0-3 +- Add valgrind-3.19.0-s390x-memmem.patch + +* Fri May 13 2022 Mark Wielaard - 3.19.0-2 +- Add valgrind-3.19.0-ld-so-strncmp.patch + +* Tue Apr 12 2022 Mark Wielaard - 3.19.0-1 - Upgrade to valgrind 3.19.0. Drop old patches. -* Thu Feb 10 2022 Mark Wielaard - 3.18.1-7 +* Tue Feb 8 2022 Mark Wielaard +- Add valgrind-3.18.1-ppc64-cmov.patch - Add valgrind-3.18.1-arm64-atomics-rdm.patch +- Add valgrind-3.18.1-rust-demangle-suffix.patch -* Tue Nov 30 2021 Mark Wielaard - 3.18.1-6 -- Rebuild against fresh toolchain +* Sat Jan 22 2022 Fedora Release Engineering - 1:3.18.1-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild -* Wed Nov 24 2021 Mark Wielaard - 3.18.1-5 -- Add valgrind-3.18.1-dhat-tests-copy.patch -- Add valgrind-3.18.1-s390x-EXRL.patch -- Add valgrind-3.18.1-ppc64-lxsibzx-lxsihzx.patch +* Wed Jan 12 2022 Mark Wielaard - 3.18.1-8 +- Add valgrind-3.18.1-ppc-hwcaps.patch +- Add valgrind-3.18.1-s390x-wflrx.patch + +* Sat Dec 11 2021 Mark Wielaard - 3.18.1-7 +-Add valgrind-3.18.1-s390x-vdso.patch + +* Fri Dec 10 2021 Mark Wielaard - 3.18.1-6 +- Add valgrind-3.18.1-rseq-enosys.patch + +* Mon Nov 22 2021 Mark Wielaard - 3.18.1-5 +- Add valgrind-3.18.1-demangle-namespace.patch + +* Fri Nov 19 2021 Mark Wielaard - 3.18.1-4 +- Add valgrind-3.18.1-condvar.patch + +* Wed Nov 17 2021 Mark Wielaard - 3.18.1-3 - Add valgrind-3.18.1-ppc-pstq.patch - Add valgrind-3.18.1-ppc-pstq-tests.patch - Add valgrind-3.18.1-gdbserver_tests-hwcap.patch @@ -590,55 +658,226 @@ fi - Add valgrind-3.18.1-arm64-ldaxp-stlxp.patch - Add valgrind-3.18.1-arm64-atomic-align.patch - Add valgrind-3.18.1-amd64-more-spec-rules.patch -- Add valgrind-3.18.1-condvar.patch -- Add valgrind-3.18.1-demangle-namespace.patch -* Wed Oct 20 2021 Mark Wielaard - 3.18.1-1 +* Mon Nov 1 2021 Mark Wielaard - 3.18.1-2 +- Add valgrind-3.18.1-dhat-tests-copy.patch +- Add valgrind-3.18.1-s390x-EXRL.patch +- Add valgrind-3.18.1-ppc64-lxsibzx-lxsihzx.patch + +* Fri Oct 15 2021 Mark Wielaard - 3.18.0-1 - Update to upstream 3.18.1 final -* Thu Jun 24 2021 Mark Wielaard - 3.17.0-5 +* Wed Oct 13 2021 Mark Wielaard - 3.18.0-0.1.RC1 +- Update to upstream 3.18.0-RC1 +- Drop all upstreamed patches + +* Mon Sep 20 2021 Mark Wielaard - 3.17.0-13 +- Add valgrind-3.17.0-dwarf-atomic_type.patch +- Add valgrind-3.17.0-faster-readdwarf3.patch + +* Wed Sep 8 2021 Mark Wielaard +- Add valgrind-3.17.0-ppc64-test_isa_3_1_VRT.patch + +* Wed Aug 25 2021 Mark Wielaard - 3.17.0-12 +- Add valgrind-3.17.0-vgdb-queued-signals.patch +- Add valgrind-3.17.0-ppc64-test-isa-3-1.patch +- Add valgrind-3.17.0-ppc64-pstxvp.patch + +* Fri Aug 6 2021 Mark Wielaard - 3.17.0-11 +- Add valgrind-3.17.0-ppc64-statfs64.patch + +* Fri Jul 23 2021 Fedora Release Engineering - 1:3.17.0-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Wed Jul 21 2021 Mark Wielaard +- Add valgrind-3.17.0_start.patch + +* Wed Jul 21 2021 Mark Wielaard - 3.17.0-9 +- Add valgrind-3.17.0-clone3.patch + +* Sat Jul 17 2021 Mark Wielaard - 3.17.0-8 +- Update drd suppression for native ld.so names. + +* Sat Jul 17 2021 Mark Wielaard - 3.17.0-7 +- Add gdbserver_tests-update-filters-for-newer-glibc-gdb.patch +- Add helgrind-and-drd-suppression-libc-and-libpthread.patch +- Remove valgrind-3.9.0-helgrind-race-supp.patch + +* Fri Jul 9 2021 Mark Wielaard - 3.17.0-6 +- Update to include fixed CI gating tests. + +* Fri Jun 18 2021 Mark Wielaard - 3.17.0-5 - Add valgrind-3.17.0-s390-prep.patch - Add valgrind-3.17.0-s390-z15.patch - Add valgrind-3.17.0-s390-z13-vec-fix.patch -* Thu Jun 3 2021 Mark Wielaard - 3.17.0-4 -- Update to upstream 3.17.0 final. -- Add valgrind-3.17.0-ppc64-isa-3.1{,tests}.patch +* Thu Jun 3 2021 Mark Wielaard - 3.17.0-4 - Add valgrind-3.17.0-s390_insn_as_string.patch - Add valgrind-3.17.0-debuginfod.patch - Add valgrind-3.17.0-clone-parent-res.patch -* Fri Dec 4 2020 Mark Wielaard - 3.16.0-4 +* Tue May 4 2021 Mark Wielaard - 3.17.0-3 +- Add valgrind-3.17.0-ppc64-isa-3.1{,tests}.patch + +* Fri Apr 16 2021 Mark Wielaard - 3.17.0-2 +- Add CI gating + +* Mon Mar 22 2021 Mark Wielaard - 3.17.0-1 +- Update to upstream 3.17.0 final. + +* Wed Mar 17 2021 Mark Wielaard - 3.17.0-0.1.RC2 +- Update to upstream 3.17.0-RC2 + +* Mon Mar 15 2021 Mark Wielaard - 3.17.0-0.1.RC1 +- Update to upstream 3.17.0-RC1 +- Drop all upstreamed patches + +* Wed Mar 3 2021 Mark Wielaard - 3.16.1-20 +- Add valgrind-3.16.1-arm64_sp_lr_fp_DwReg.patch + +* Sun Feb 21 2021 Mark Wielaard - 3.16.1-19 +- Add valgrind-3.16.1-readdwarf-line.patch + +* Sat Feb 6 2021 Mark Wielaard - 3.16.1-18 +- Update valgrind-3.16.1-open-proc-self-exe.patch to handle openat + +* Sat Feb 6 2021 Mark Wielaard - 3.16.1-17 +- Add valgrind-3.16.1-open-proc-self-exe.patch + +* Wed Feb 3 2021 Mark Wielaard - 3.16.1-16 +- Add valgrind-3.16.0-shmctl.patch + +* Wed Jan 27 2021 Fedora Release Engineering - 1:3.16.1-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Mon Jan 25 2021 Mark Wielaard - 3.16.1-14 +- Add valgrind-3.16.1-dwarf5.patch + +* Fri Jan 8 2021 Mark Wielaard - 3.16.1-13 +- Add valgrind-3.16.1-ppc64-scv-hwcap.patch + +* Sun Dec 20 2020 Mark Wielaard - 3.16.1-12 +- Add valgrind-3.16.1-ficlone.patch +- Add valgrind-3.16.1-arm64-expensive-cmp.patch + +* Thu Dec 17 2020 Mark Wielaard - 3.16.1-11 +- Update valgrind-3.16.1-arm64-fma.patch + +* Tue Dec 15 2020 Mark Wielaard - 3.16.1-10 +- Add valgrind-3.16.1-arm64-fma.patch + +* Sun Dec 13 2020 Mark Wielaard - 3.16.1-9 +- Add valgrind-3.16.1-stxsibx-stxsihx.patch + +* Thu Dec 3 2020 Mark Wielaard - 3.16.1-8 +- Update valgrind-3.16.1-s390x-z14-vector.patch + +* Thu Dec 3 2020 Mark Wielaard - 3.16.1-7 +- Add valgrind-3.16.1-pthread-intercept.patch - Add valgrind-3.16.1-s390_emit_load_mem.patch - Add valgrind-3.16.1-s390x-z14-vector.patch -* Tue Oct 20 2020 Mark Wielaard - 3.16.0-3 +* Mon Nov 9 2020 Mark Wielaard +- Add BuildRequires which (#1895773) + +* Fri Oct 16 2020 Mark Wielaard - 3.16.1-6 +- Add valgrind-3.16.1-faccessat2.patch +- Add valgrind-3.16.1-gdbserver_nlcontrolc.patch +- Add valgrind-3.16.1-PPC64BE-lsw.patch + +* Tue Aug 18 2020 Mark Wielaard - 3.16.1-5 +- Update valgrind-3.16.1-epoll.patch + +* Mon Jul 27 2020 Mark Wielaard - 3.16.1-4 - Add valgrind-3.16.1-REX-prefix-JMP.patch - Add valgrind-3.16.1-epoll.patch - Add valgrind-3.16.1-sched_getsetattr.patch - Add valgrind-3.16.1-dl_runtime_resolve.patch -* Wed Jun 24 2020 Mark Wielaard - 3.16.0-2 -- Add valgrind-3.16.0-ppc-L-field.patch -- Add valgrind-3.16.0-387-float.patch +* Tue Jul 14 2020 Tom Stellard - 3.16.1-3 +- Use make macros +- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro -* Thu May 28 2020 Mark Wielaard - 3.16.0-1 +* Wed Jul 8 2020 Jeff Law - 3.16.1-2 +- Disable LTO + +* Tue Jun 23 2020 Mark Wielaard - 3.16.1-1 +- Update to upstream valgrind 3.16.1. + +* Fri Jun 19 2020 Mark Wielaard - 3.16.0-3 +- Add valgrind-3.16.0-ppc-L-field.patch + +* Wed May 27 2020 Mark Wielaard - 3.16.0-2 +- Apply stack-protector and -Wl,z,now patches. + +* Wed May 27 2020 Mark Wielaard - 3.16.0-1 - Update to upstream valgrind 3.16.0 final. -* Fri Feb 14 2020 Mark Wielaard - 3.15.0-11 +* Tue May 19 2020 Mark Wielaard - 3.16.0-0.4.RC2 +- Add docbook-dtds to BuildRequires. + +* Tue May 19 2020 Mark Wielaard - 3.16.0-0.3.RC2 +- Update to upstream 3.16.0 RC2 + +* Fri May 1 2020 Mark Wielaard - 3.16.0-0.2.GIT +- Update to upstream 3.16.0 branch point (commit 55cdb7c4e) + +* Fri Apr 17 2020 Mark Wielaard - 3.16.0-0.1.GIT +- Update to upstream 3.16.0-GIT (commit 52d02fe23) + - Drop all streamed patches. + +* Wed Mar 4 2020 Mark Wielaard - 3.15.0-20 +- Add valgrind-3.15.0-z15.patch + +* Fri Feb 28 2020 Mark Wielaard - 3.15.0-19 +- Add valgrind-3.15.0-time64.patch +- Add valgrind-3.15.0-arm-preadv2-pwritev2.patch +- Add valgrind-3.15.0-avx_estimate_insn-test.patch +- Add valgrind-3.15.0-gcc-10-x86-amd64-asm-test.patch + +* Fri Feb 14 2020 Mark Wielaard - 3.15.0-18 +- Add valgrind-3.15.0-ppc64-sigframe.patch + +* Thu Feb 13 2020 Mark Wielaard - 3.15.0-17 +- Add valgrind-3.15.0-glibc-dtv-supp.patch + +* Wed Jan 29 2020 Mark Wielaard - 3.15.0-16 - Add valgrind-3.15.0-s390x-HRcVec128.patch -* Mon Aug 5 2019 Mark Wielaard - 3.15.0-10 -- Add valgrind-3.15.0-preadv2-pwritev2.patch +* Wed Jan 29 2020 Mark Wielaard - 3.15.0-15 +- Don't use valgrind-3.15.0-ptrace-siginfo.patch on ppc64[le] +- Add valgrind-3.15.0-s390x-compare-and-signal.patch -* Wed May 29 2019 Mark Wielaard - 3.15.0-9 +* Fri Jan 24 2020 Mark Wielaard - 3.15.0-14 +- Add valgrind-3.15.0-gcc-10-i686-asm-test.patch +- Add valgrind-3.15.0-gcc10-ppc64-asm-constraints.patch + +* Thu Jan 23 2020 Mark Wielaard - 3.15.0-13 +- Add valgrind-3.15.0-gcc-10-typedef-enum.patch + +* Mon Sep 23 2019 Mark Wielaard - 3.15.0-12 +- Add valgrind-3.15.0-ptrace-siginfo.patch + +* Mon Aug 5 2019 Mark Wielaard - 3.15.0-11 +- Add valgrind-3.15.0-preadv2-pwritev2.patch +- Add valgrind-3.15.0-arm-membarrier.patch +- Add valgrind-3.15.0-z14-misc.patch + +* Sat Jul 27 2019 Fedora Release Engineering - 1:3.15.0-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Wed May 29 2019 Mark Wielaard - 3.15.0-9 - Add valgrind-3.15.0-pkey.patch + +* Tue May 28 2019 Mark Wielaard - 3.15.0-8 +- Update valgrind-3.15.0-copy_file_range.patch. - Add valgrind-3.15.0-avx-rdrand-f16c.patch. -* Fri May 24 2019 Mark Wielaard - 3.15.0-6 -- Update valgrind-3.15.0-copy_file_range.patch. +* Fri May 24 2019 Mark Wielaard - 3.15.0-7 - Update valgrind-3.15.0-some-stack-protector.patch to include getoff. - Add valgrind-3.15.0-some-Wl-z-now.patch + +* Fri May 24 2019 Mark Wielaard - 3.15.0-6 - Add valgrind-3.15.0-s390x-wrap-drd.patch * Mon May 20 2019 Mark Wielaard - 3.15.0-5 @@ -646,32 +885,115 @@ fi - Add valgrind-3.15.0-scalar-arm64.patch - Add valgrind-3.15.0-scalar-x86.patch -* Wed May 8 2019 Mark Wielaard - 3.15.0-4 -- Add valgrind-3.15.0-copy_file_range.patch +* Tue May 7 2019 Mark Wielaard - 3.15.0-4 - Add valgrind-3.15.0-arm64-ld-stpcpy.patch -* Tue May 7 2019 Mark Wielaard - 3.15.0-2 +* Sun May 5 2019 Mark Wielaard - 3.15.0-3 +- Add valgrind-3.15.0-copy_file_range.patch + +* Thu Apr 25 2019 Mark Wielaard - 3.15.0-2 +- gdb has been fixed on fedora, run full regtests again. +- Add valgrind-3.15.0-ppc64-filter_gdb.patch + +* Tue Apr 16 2019 Mark Wielaard - 3.15.0-1 +- On ppc64[be] -fexceptions is troublesome. - valgrind-3.15.0 final -- clean up build flags + Remove upstreamed patches + - valgrind-3.15.0-arm64-Ity_F16.patch + - valgrind-3.15.0-filter-libc-futex.patch + - valgrind-3.15.0-mmap-32bit.patch -* Wed Apr 17 2019 Mark Wielaard - 3.14.0-11 -- Rebuilt with s390x-vec-facility-bit for 8.1.0 (#1669234) +* Sun Apr 14 2019 Mark Wielaard - 3.15.0-0.8.RC2 +- Adding of stack-protector flag should only be done with newer gcc. +- Older rpm macros didn't provide build_ldflags. +- Add valgrind-3.15.0-arm64-Ity_F16.patch -* Thu Jan 24 2019 Mark Wielaard - 3.14.0-10 +* Sun Apr 14 2019 Mark Wielaard - 3.15.0-0.7.RC2 +- Add valgrind-3.15.0-some-stack-protector.patch + +* Sat Apr 13 2019 Mark Wielaard - 3.15.0-0.6.RC2 +- Pass through most (hardening) flags, except -O2, -fstack-protector + and -Wl,-z,now. + +* Fri Apr 12 2019 Mark Wielaard - 3.15.0-0.5.RC2 +- No openmpi support on old s390x rhel. +- Disable s390x z13 support on rhel6 (too old binutils). +- Use an explicit ExclusiveArch, don't rely on %%valgrind_arches. +- Drop close_fds, it is no longer needed. +- Include any gdbserver_tests diffs for failing regtest. + +* Thu Apr 11 2019 Mark Wielaard - 3.15.0-0.4.RC2 +- Update to 3.15.0.RC2. +- Drop upstreamed patches: + - valgrind-3.15.0-s390x-get-startregs-constraint.patch + - valgrind-3.15.0-missing-a-c.patch + - valgrind-3.15.0-libstdc++-supp.patch + - valgrind-3.15.0-dhat-x86.patch + - valgrind-3.15.0-gdb-output1.patch + - valgrind-3.15.0-gdb-output2.patch +- Update valgrind-3.15.0-mmap-32bit.patch to upstream version. +- gdb on f30 and rawhide is currently broken, don't run_full_regtest. +- Any glibc-devel version is. +- Drop rhel5 special case for tools-devel. +- Use /bin/true --help as sanity test. + +* Wed Apr 10 2019 Mark Wielaard - 3.15.0-0.3.RC1 +- Enable full regtest on all fedora arches. +- Make sure that patched a.c is not newer than cgout-test. +- Update valgrind-3.15.0-gdb-output1.patch to upstream version. +- Add valgrind-3.15.0-filter-libc-futex.patch. +- Add valgrind-3.15.0-mmap-32bit.patch. + +* Tue Apr 9 2019 Mark Wielaard - 3.15.0-0.2.RC1 +- Add valgrind-3.15.0-s390x-get-startregs-constraint.patch +- Add valgrind-3.15.0-missing-a-c.patch +- Add valgrind-3.15.0-libstdc++-supp.patch +- Add valgrind-3.15.0-dhat-x86.patch +- Add valgrind-3.15.0-gdb-output1.patch +- Add valgrind-3.15.0-gdb-output2.patch + +* Mon Apr 8 2019 Mark Wielaard - 3.15.0-0.1.RC1 +- Remove patches to prebuild files and always ./autogen.sh. +- Only ever build primary arch. Put tools under libexec. +- Update to upstream 3.15.0-RC1. +- Drop all upstreamed patches. + +* Mon Mar 4 2019 Mark Wielaard - 3.14.0-16 +- Add valgrind-3.14.0-gettid.patch + +* Mon Mar 4 2019 Mark Wielaard - 3.14.0-15 +- Add valgrind-3.14.0-ppc64-quotactl.patch + +* Thu Feb 21 2019 Mark Wielaard - 3.14.0-14 +- Add valgrind-3.14.0-ppc-subfe.patch + +* Thu Feb 14 2019 Orion Poplawski - 1:3.14.0-13 +- Rebuild for openmpi 3.1.3 + +* Sun Feb 03 2019 Fedora Release Engineering - 1:3.14.0-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Thu Jan 24 2019 Mark Wielaard - 3.14.0-11 - Add valgrind-3.14.0-s390x-vec-facility-bit.patch. -* Mon Jan 7 2019 Mark Wielaard - 3.14.0-9 +* Wed Jan 9 2019 Mark Wielaard - 3.14.0-10 +- Add valgrind-3.14.0-rsp-clobber.patch +- Add valgrind-3.14.0-subrange_type-count.patch + +* Mon Dec 31 2018 Mark Wielaard - 3.14.0-9 +- Add valgrind-3.14.0-vbit-test-sec.patch +- Add valgrind-3.14.0-x86-Iop_Sar64.patch - Add valgrind-3.14.0-power9-addex.patch -* Thu Dec 20 2018 Mark Wielaard - 3.14.0-8 -- Update valgrind-3.14.0-jm-vmx-constraints.patch for ppc64. (#1658680) +* Thu Dec 20 2018 Mark Wielaard - 3.14.0-8 +- Update valgrind-3.14.0-jm-vmx-constraints.patch for ppc64. - Show all diff files in check, not just the main/default one. -* Mon Dec 17 2018 Mark Wielaard - 3.14.0-7 +* Fri Dec 14 2018 Mark Wielaard - 3.14.0-7 - Add valgrind-3.14.0-arm64-ptrace-traceme.patch - Add valgrind-3.14.0-mc_translate-vecret.patch -* Wed Dec 12 2018 Mark Wielaard - 3.14.0-6 +* Wed Dec 12 2018 Mark Wielaard - 3.14.0-6 - Add valgrind-3.14.0-final_tidyup.patch - Add valgrind-3.14.0-ppc64-ldbrx.patch - Add valgrind-3.14.0-ppc64-unaligned-words.patch @@ -684,42 +1006,45 @@ fi - Add valgrind-3.14.0-sigkill.patch - Add valgrind-3.14.0-ppc64-ptrace.patch -* Tue Dec 4 2018 Mark Wielaard -- Add valgrind-3.14.0-wcsncmp.patch (#1655642) - +* Sat Dec 1 2018 Mark Wielaard - 3.14.0-5 +- Add valgrind-3.14.0-wcsncmp.patch (#1645971) - Replace valgrind-3.14.0-s390x-vec-float-point-{code,test}.patch - with upstream versions. (#1525405) + with upstream versions. -* Fri Nov 23 2018 Mark Wielaard - 3.14.0-4 +* Fri Nov 23 2018 Mark Wielaard - 3.14.0-4 - Add valgrind-3.14.0-get_otrack_shadow_offset_wrk-ppc.patch, valgrind-3.14.0-new-strlen-IROps.patch, valgrind-3.14.0-ppc-instr-new-IROps.patch, valgrind-3.14.0-memcheck-new-IROps.patch, valgrind-3.14.0-ppc-frontend-new-IROps.patch, valgrind-3.14.0-transform-popcount64-ctznat64.patch and - valgrind-3.14.0-enable-ppc-Iop_Sar_Shr8.patch (#1532205) + valgrind-3.14.0-enable-ppc-Iop_Sar_Shr8.patch (#1652926) -* Wed Nov 21 2018 Mark Wielaard - 3.14.0-3 +* Wed Nov 21 2018 Mark Wielaard - 3.14.0-3 - Add valgrind-3.14.0-s390z-more-z13-fixes.patch. -* Tue Nov 20 2018 Mark Wielaard - 3.14.0-2 +* Tue Nov 20 2018 Mark Wielaard - 3.14.0-2 - Add valgrind-3.14.0-s390x-fix-reg-alloc-vr-vs-fpr.patch. - Add valgrind-3.14.0-s390x-sign-extend-lochi.patch. - Add valgrind-3.14.0-s390x-vec-reg-vgdb.patch. - Add valgrind-3.14.0-s390x-vec-float-point-code.patch and valgrind-3.14.0-s390x-vec-float-point-tests.patch -- Only run full regtests on x86_64 on fedora or latest rhel. +- Disable full regtests on fedora everywhere. -* Tue Oct 9 2018 Mark Wielaard - 3.14.0-1 -- valgrind 3.14.0 (#1569600). -- Enable s390x again. +* Tue Oct 9 2018 Mark Wielaard - 3.14.0-1 +- valgrind 3.14.0 final. -* Fri Aug 10 2018 Mark Wielaard - 3.13.0-29 +* Thu Oct 4 2018 Mark Wielaard - 3.14.0-0.2.RC2 +- Upgrade to RC2. +- Drop valgrind-3.14.0-add-vector-h.patch. + +* Fri Sep 14 2018 Mark Wielaard - 3.14.0-0.1.GIT +- New upstream (pre-)release. +- Add valgrind-3.14.0-add-vector-h.patch. + +* Fri Aug 10 2018 Mark Wielaard - 3.13.0-28 - Add valgrind-3.13.0-utime.patch -* Thu Aug 9 2018 Florian Weimer - 1:3.13.0-28 -- Rebuild to remove s390x packages due to lack of z13 support (#1525405) - * Fri Aug 3 2018 Mark Wielaard - 3.13.0-27 - Add valgrind-3.13.0-ppc64-xsmaxcdp.patch @@ -730,7 +1055,7 @@ fi * Tue Jul 31 2018 Mark Wielaard - 3.13.0-25 - Add valgrind-3.13.0-x86-arch_prctl.patch (#1610304) -* Mon Jul 30 2018 Florian Weimer - 3.13.0-24 +* Tue Jul 31 2018 Florian Weimer - 3.13.0-24 - Rebuild with fixed binutils * Fri Jul 27 2018 Mark Wielaard - 3.13.0-23