]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Add support for the Linux membarrier() system call
authorBart Van Assche <bart.vanassche@wdc.com>
Fri, 15 Jun 2018 15:24:53 +0000 (08:24 -0700)
committerBart Van Assche <bart.vanassche@wdc.com>
Fri, 15 Jun 2018 15:25:28 +0000 (08:25 -0700)
Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com>
NEWS
coregrind/m_syswrap/priv_syswrap-linux.h
coregrind/m_syswrap/syswrap-amd64-linux.c
coregrind/m_syswrap/syswrap-arm64-linux.c
coregrind/m_syswrap/syswrap-linux.c

diff --git a/NEWS b/NEWS
index 2eea3349803b0f6163e198496f2be229fd8e3e42..004497199cdf92df4c05cdb538f7f8ec4c207c41 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -117,6 +117,7 @@ n-i-bz  fix bug in strspn replacement
 n-i-bz  Add support for the Linux BLKFLSBUF ioctl
 n-i-bz  Add support for the Linux BLKREPORTZONE and BLKRESETZONE ioctls
 n-i-bz  Fix possible stack trashing by semctl syscall wrapping
+n-i-bz  Add support for the Linux membarrier() system call
 
 Release 3.13.0 (15 June 2017)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
index 5b5c8ef374122c82f27789e8b2d98a3decc10c98..65704cd60594d86a4cbbd2da8cea3d40ecc5b537 100644 (file)
@@ -293,6 +293,8 @@ DECL_TEMPLATE(linux, sys_memfd_create);
 
 DECL_TEMPLATE(linux, sys_syncfs);
 
+DECL_TEMPLATE(linux, sys_membarrier);
+
 /* ---------------------------------------------------------------------
    Wrappers for sockets and ipc-ery.  These are split into standalone
    procedures because x86-linux hides them inside multiplexors
index 14ad6499e5a9f6fe1af4d96bb8fef8d2cf3fbf4e..0f2ad8c51003f8f2926fff708d5c57db43f7d576 100644 (file)
@@ -839,10 +839,12 @@ static SyscallTableEntry syscall_table[] = {
    LINX_(__NR_renameat2,         sys_renameat2),        // 316
 //   LIN__(__NR_seccomp,           sys_ni_syscall),       // 317
    LINXY(__NR_getrandom,         sys_getrandom),        // 318
-   LINXY(__NR_memfd_create,      sys_memfd_create)      // 319
+   LINXY(__NR_memfd_create,      sys_memfd_create),     // 319
 
 //   LIN__(__NR_kexec_file_load,   sys_ni_syscall),       // 320
 //   LIN__(__NR_bpf,               sys_ni_syscall)        // 321
+
+   LINX_(__NR_membarrier,        sys_membarrier),        // 324
 };
 
 SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno )
index d2444590dcf4f3b706be32ef38dc1ad8df85e67b..32b87bf25c5a93b47eb2f9ba0de4d36d32c31c25 100644 (file)
@@ -880,7 +880,7 @@ static SyscallTableEntry syscall_main_table[] = {
    //   (__NR_bpf,               sys_ni_syscall)         // 280
    //   (__NR_execveat,          sys_ni_syscall),        // 281
    //   (__NR_userfaultfd,       sys_ni_syscall),        // 282
-   //   (__NR_membarrier,        sys_ni_syscall),        // 283
+   LINX_(__NR_membarrier,        sys_membarrier),        // 283
    //   (__NR_mlock2,            sys_ni_syscall),        // 284
    //   (__NR_copy_file_range,   sys_ni_syscall),        // 285
    //   (__NR_preadv2,           sys_ni_syscall),        // 286
index 1d95489e899bca2096ab0343d793ec77f0265abf..2336c297840fd2875a337a55b2d4f70528d584f5 100644 (file)
@@ -3646,6 +3646,12 @@ POST(sys_memfd_create)
    }
 }
 
+PRE(sys_membarrier)
+{
+   PRINT("sys_membarrier ( %#" FMT_REGWORD "x )", ARG1);
+   PRE_REG_READ1(int, "membarrier", int, flags);
+}
+
 PRE(sys_syncfs)
 {
    *flags |= SfMayBlock;