valgrind: Update to version 3.18.1
authorHauke Mehrtens <hauke@hauke-m.de>
Sun, 31 Oct 2021 16:39:23 +0000 (17:39 +0100)
committerHauke Mehrtens <hauke@hauke-m.de>
Wed, 3 Nov 2021 22:52:08 +0000 (23:52 +0100)
This version has some improvements for musl.
This version works fine for me on MIPS 32 BE without MIPS16 even on musl.

The additional patch is needed to make valgrind use the correct syscall
numbers for new syscalls like clock_gettime64. The MIPS architecture
uses special syscall ranges which are different from most other systems.
The patch is pending upstream: https://bugs.kde.org/show_bug.cgi?id=444781

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
package/devel/valgrind/Makefile
package/devel/valgrind/patches/010-mips-Fix-new-syscall-numbers.patch [new file with mode: 0644]
package/devel/valgrind/patches/130-mips_fix_soft_float.patch

index 829f37569e9b9c18afb4db899ad67c059d7f5ac9..4f0e0fd49351386abd371e8f02128ceb127099e5 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=valgrind
-PKG_VERSION:=3.16.1
+PKG_VERSION:=3.18.1
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=http://sourceware.org/pub/valgrind/
-PKG_HASH:=c91f3a2f7b02db0f3bc99479861656154d241d2fdb265614ba918cc6720a33ca
+PKG_HASH:=00859aa13a772eddf7822225f4b46ee0d39afbe071d32778da4d99984081f7f5
 
 PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
 PKG_LICENSE:=GPL-2.0+
diff --git a/package/devel/valgrind/patches/010-mips-Fix-new-syscall-numbers.patch b/package/devel/valgrind/patches/010-mips-Fix-new-syscall-numbers.patch
new file mode 100644 (file)
index 0000000..e84273c
--- /dev/null
@@ -0,0 +1,131 @@
+From 86ab9452bd10f08dbfa22d94e1155838f6f9f2e0 Mon Sep 17 00:00:00 2001
+From: Hauke Mehrtens <hauke@hauke-m.de>
+Date: Sun, 31 Oct 2021 23:11:11 +0100
+Subject: [PATCH] mips: Fix new syscall numbers
+
+The MIPS32 and MIPS64 O32 ABI are adding 4000 to all syscall numbers.
+The MIPS64 N64 ABI adds 5000 to each syscall and the MIPS64 N32 ABI adds
+6000 to each syscall number. We can not sue the shared file for MIPS and
+have to define this for each sycall separately.
+
+Without this change valgrind is not able to detect new syscalls like
+clock_gettime64 correctly.
+
+Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
+---
+ include/pub_tool_vkiscnums_asm.h      |  3 ---
+ include/vki/vki-scnums-mips32-linux.h | 36 +++++++++++++++++++++++++++
+ include/vki/vki-scnums-mips64-linux.h | 32 ++++++++++++++++++++++++
+ 3 files changed, 68 insertions(+), 3 deletions(-)
+
+--- a/include/pub_tool_vkiscnums_asm.h
++++ b/include/pub_tool_vkiscnums_asm.h
+@@ -63,15 +63,12 @@
+ #  include "vki/vki-scnums-arm64-linux.h"
+ #elif defined(VGP_mips32_linux)
+-#  include "vki/vki-scnums-shared-linux.h"
+-#  include "vki/vki-scnums-32bit-linux.h"
+ #  include "vki/vki-scnums-mips32-linux.h"
+ #elif defined(VGP_nanomips_linux)
+ #  include "vki/vki-scnums-nanomips-linux.h"
+ #elif defined(VGP_mips64_linux)
+-#  include "vki/vki-scnums-shared-linux.h"
+ #  include "vki/vki-scnums-mips64-linux.h"
+ #elif defined(VGP_x86_freebsd) || defined(VGP_amd64_freebsd)
+--- a/include/vki/vki-scnums-mips32-linux.h
++++ b/include/vki/vki-scnums-mips32-linux.h
+@@ -401,6 +401,42 @@
+ #define __NR_pkey_free                        (__NR_Linux + 365)
+ #define __NR_statx                    (__NR_Linux + 366)
++#define __NR_clock_gettime64          (__NR_Linux + 403)
++#define __NR_clock_settime64          (__NR_Linux + 404)
++#define __NR_clock_adjtime64          (__NR_Linux + 405)
++#define __NR_clock_getres_time64      (__NR_Linux + 406)
++#define __NR_clock_nanosleep_time64   (__NR_Linux + 407)
++#define __NR_timer_gettime64          (__NR_Linux + 408)
++#define __NR_timer_settime64          (__NR_Linux + 409)
++#define __NR_timerfd_gettime64                (__NR_Linux + 410)
++#define __NR_timerfd_settime64                (__NR_Linux + 411)
++#define __NR_utimensat_time64         (__NR_Linux + 412)
++#define __NR_pselect6_time64          (__NR_Linux + 413)
++#define __NR_ppoll_time64             (__NR_Linux + 414)
++#define __NR_io_pgetevents_time64     (__NR_Linux + 416)
++#define __NR_recvmmsg_time64          (__NR_Linux + 417)
++#define __NR_mq_timedsend_time64      (__NR_Linux + 418)
++#define __NR_mq_timedreceive_time64   (__NR_Linux + 419)
++#define __NR_semtimedop_time64                (__NR_Linux + 420)
++#define __NR_rt_sigtimedwait_time64   (__NR_Linux + 421)
++#define __NR_futex_time64             (__NR_Linux + 422)
++#define __NR_sched_rr_get_interval_time64     (__NR_Linux + 423)
++#define __NR_pidfd_send_signal                (__NR_Linux + 424)
++#define __NR_io_uring_setup           (__NR_Linux + 425)
++#define __NR_io_uring_enter           (__NR_Linux + 426)
++#define __NR_io_uring_register                (__NR_Linux + 427)
++#define __NR_open_tree                        (__NR_Linux + 428)
++#define __NR_move_mount                       (__NR_Linux + 429)
++#define __NR_fsopen                   (__NR_Linux + 430)
++#define __NR_fsconfig                 (__NR_Linux + 431)
++#define __NR_fsmount                  (__NR_Linux + 432)
++#define __NR_fspick                   (__NR_Linux + 433)
++
++#define __NR_clone3                   (__NR_Linux + 435)
++#define __NR_close_range              (__NR_Linux + 436)
++
++#define __NR_faccessat2                       (__NR_Linux + 439)
++
+ /*
+  * Offset of the last Linux o32 flavoured syscall
+  */
+--- a/include/vki/vki-scnums-mips64-linux.h
++++ b/include/vki/vki-scnums-mips64-linux.h
+@@ -363,6 +363,22 @@
+ #define __NR_pkey_free              (__NR_Linux + 325)
+ #define __NR_statx                  (__NR_Linux + 326)
++#define __NR_pidfd_send_signal       (__NR_Linux + 424)
++#define __NR_io_uring_setup          (__NR_Linux + 425)
++#define __NR_io_uring_enter          (__NR_Linux + 426)
++#define __NR_io_uring_register       (__NR_Linux + 427)
++#define __NR_open_tree               (__NR_Linux + 428)
++#define __NR_move_mount              (__NR_Linux + 429)
++#define __NR_fsopen                  (__NR_Linux + 430)
++#define __NR_fsconfig                (__NR_Linux + 431)
++#define __NR_fsmount                 (__NR_Linux + 432)
++#define __NR_fspick                  (__NR_Linux + 433)
++
++#define __NR_clone3                  (__NR_Linux + 435)
++#define __NR_close_range             (__NR_Linux + 436)
++
++#define __NR_faccessat2              (__NR_Linux + 439)
++
+ #elif defined(VGABI_N32)
+ /*
+@@ -702,6 +718,22 @@
+ #define __NR_pkey_free               (__NR_Linux + 329)
+ #define __NR_statx                   (__NR_Linux + 330)
++#define __NR_pidfd_send_signal       (__NR_Linux + 424)
++#define __NR_io_uring_setup          (__NR_Linux + 425)
++#define __NR_io_uring_enter          (__NR_Linux + 426)
++#define __NR_io_uring_register       (__NR_Linux + 427)
++#define __NR_open_tree               (__NR_Linux + 428)
++#define __NR_move_mount              (__NR_Linux + 429)
++#define __NR_fsopen                  (__NR_Linux + 430)
++#define __NR_fsconfig                (__NR_Linux + 431)
++#define __NR_fsmount                 (__NR_Linux + 432)
++#define __NR_fspick                  (__NR_Linux + 433)
++
++#define __NR_clone3                  (__NR_Linux + 435)
++#define __NR_close_range             (__NR_Linux + 436)
++
++#define __NR_faccessat2              (__NR_Linux + 439)
++
+ #else
+ #error unknown mips64 abi
+ #endif
index 05be099ca5e4e77efd5fe1fa05ddb03a5279c3e2..427aa85524c38c976e155e4e83a835ae6ff9be68 100644 (file)
@@ -14,7 +14,7 @@ This fixes the following error message when compiling with a GCC 10 MIPS BE 32:
 
 --- a/VEX/priv/guest_mips_helpers.c
 +++ b/VEX/priv/guest_mips_helpers.c
-@@ -617,6 +617,7 @@ extern UInt mips_dirtyhelper_calculate_F
+@@ -616,6 +616,7 @@ extern UInt mips_dirtyhelper_calculate_F
                                                     flt_op inst )
  {
     UInt ret = 0;
@@ -22,7 +22,7 @@ This fixes the following error message when compiling with a GCC 10 MIPS BE 32:
  #if defined(__mips__)
     VexGuestMIPS32State* guest_state = (VexGuestMIPS32State*)gs;
     UInt loFsVal, hiFsVal, loFtVal, hiFtVal;
-@@ -699,6 +700,7 @@ extern UInt mips_dirtyhelper_calculate_F
+@@ -698,6 +699,7 @@ extern UInt mips_dirtyhelper_calculate_F
           break;
     }
  #endif
@@ -30,7 +30,7 @@ This fixes the following error message when compiling with a GCC 10 MIPS BE 32:
     return ret;
  }
  
-@@ -708,6 +710,7 @@ extern UInt mips_dirtyhelper_calculate_F
+@@ -707,6 +709,7 @@ extern UInt mips_dirtyhelper_calculate_F
                                                     flt_op inst )
  {
     UInt ret = 0;
@@ -38,7 +38,7 @@ This fixes the following error message when compiling with a GCC 10 MIPS BE 32:
  #if defined(__mips__) && ((__mips == 64) ||                                  \
                            (defined(__mips_isa_rev) && (__mips_isa_rev >= 2)))
  #if defined(VGA_mips32)
-@@ -860,6 +863,7 @@ extern UInt mips_dirtyhelper_calculate_F
+@@ -859,6 +862,7 @@ extern UInt mips_dirtyhelper_calculate_F
           break;
     }
  #endif
@@ -48,7 +48,7 @@ This fixes the following error message when compiling with a GCC 10 MIPS BE 32:
  
 --- a/coregrind/m_machine.c
 +++ b/coregrind/m_machine.c
-@@ -1828,6 +1828,7 @@ Bool VG_(machine_get_hwcaps)( void )
+@@ -2103,6 +2103,7 @@ Bool VG_(machine_get_hwcaps)( void )
             we are using alternative way to determine FP mode */
          ULong result = 0;
  
@@ -56,7 +56,7 @@ This fixes the following error message when compiling with a GCC 10 MIPS BE 32:
          if (!VG_MINIMAL_SETJMP(env_unsup_insn)) {
             __asm__ volatile (
                ".set push\n\t"
-@@ -1845,6 +1846,9 @@ Bool VG_(machine_get_hwcaps)( void )
+@@ -2120,6 +2121,9 @@ Bool VG_(machine_get_hwcaps)( void )
  
             fpmode = (result != 0x3FF0000000000000ull);
          }