]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Bug 363680 add renameat2() support
authorMark Wielaard <mark@klomp.org>
Tue, 31 May 2016 12:16:15 +0000 (12:16 +0000)
committerMark Wielaard <mark@klomp.org>
Tue, 31 May 2016 12:16:15 +0000 (12:16 +0000)
Patch written by Jann Horn <jannhorn@googlemail.com>.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15889

NEWS
coregrind/m_syswrap/priv_syswrap-linux.h
coregrind/m_syswrap/syswrap-amd64-linux.c
coregrind/m_syswrap/syswrap-arm-linux.c
coregrind/m_syswrap/syswrap-arm64-linux.c
coregrind/m_syswrap/syswrap-linux.c
coregrind/m_syswrap/syswrap-ppc64-linux.c
coregrind/m_syswrap/syswrap-s390x-linux.c
coregrind/m_syswrap/syswrap-x86-linux.c

diff --git a/NEWS b/NEWS
index 654ccc2acf2bd7bed1406f182fede066428d8d0c..b83d5a8c96b9db4cf03e274a515c52fa7ad31c4b 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -102,6 +102,7 @@ where XXXXXX is the bug number as listed below.
 361926  Unhandled Solaris syscall: sysfs(84)
 362009  Valgrind dumps core on unimplemented functionality before threads are created
 360035  POWER PC instruction bcdadd and bcdsubtract generate result with non-zero shadow bits
+363680  add renameat2() support
 363705  arm64 missing syscall name_to_handle_at and open_by_handle_at
 363714  ppc64 missing syscalls sync, waitid and name_to/open_by_handle_at
 
index 03fcd118a7547e7e4f95506f96c3c6d748afce22..162f8e5c8a06cfcd7707828085b260d16006e21c 100644 (file)
@@ -172,6 +172,7 @@ DECL_TEMPLATE(linux, sys_futimesat);
 DECL_TEMPLATE(linux, sys_newfstatat);
 DECL_TEMPLATE(linux, sys_unlinkat);
 DECL_TEMPLATE(linux, sys_renameat);
+DECL_TEMPLATE(linux, sys_renameat2);
 DECL_TEMPLATE(linux, sys_linkat);
 DECL_TEMPLATE(linux, sys_symlinkat);
 DECL_TEMPLATE(linux, sys_readlinkat);
index 4a8344b886df4974487c0088674dff3b33627ca3..a39148d1e8b3b67243db266d880c9f109a255785 100644 (file)
@@ -1073,7 +1073,7 @@ static SyscallTableEntry syscall_table[] = {
 //   LIN__(__NR_sched_setattr,     sys_ni_syscall),       // 314
 
 //   LIN__(__NR_sched_getattr,     sys_ni_syscall),       // 315
-//   LIN__(__NR_renameat2,         sys_ni_syscall),       // 316
+   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
index 224070cb16ee6ce80297179a1aba4cec85d95ce0..445d5ac67f7b38e3b30f106754040f3a2c196ee3 100644 (file)
@@ -1219,6 +1219,8 @@ static SyscallTableEntry syscall_main_table[] = {
    LINXY(__NR_process_vm_readv,  sys_process_vm_readv), // 376
    LINX_(__NR_process_vm_writev, sys_process_vm_writev),// 377
 
+   LINX_(__NR_renameat2,         sys_renameat2),        // 382
+
    LINXY(__NR_getrandom,         sys_getrandom),        // 384
    LINXY(__NR_memfd_create,      sys_memfd_create)      // 385
 };
index 8842765eaa847334c084f9a4cc099222416040d7..ab167f6e99c869c068c8705813bd174989f518a7 100644 (file)
@@ -1105,6 +1105,8 @@ static SyscallTableEntry syscall_main_table[] = {
    LINXY(__NR_process_vm_readv,  sys_process_vm_readv),  // 270
    LINX_(__NR_process_vm_writev, sys_process_vm_writev), // 271
 
+   LINX_(__NR_renameat2,         sys_renameat2),         // 276
+
    LINXY(__NR_getrandom,         sys_getrandom),         // 278
    LINXY(__NR_memfd_create,      sys_memfd_create),      // 279
 
index fa7f89e8f51420697a7323d93b9cdc6dc8c8185f..24a5ae9db63dff49f1073877df79b6f22d2fd7e5 100644 (file)
@@ -4697,6 +4697,18 @@ PRE(sys_renameat)
    PRE_MEM_RASCIIZ( "renameat(newpath)", ARG4 );
 }
 
+PRE(sys_renameat2)
+{
+   PRINT("sys_renameat2 ( %ld, %#lx(%s), %ld, %#lx(%s), %lu )",
+         SARG1, ARG2, (HChar*)ARG2, SARG3, ARG4, (HChar*)ARG4, ARG5);
+   PRE_REG_READ5(long, "renameat2",
+                 int, olddfd, const char *, oldpath,
+                 int, newdfd, const char *, newpath,
+                 unsigned int, flags);
+   PRE_MEM_RASCIIZ( "renameat2(oldpath)", ARG2 );
+   PRE_MEM_RASCIIZ( "renameat2(newpath)", ARG4 );
+}
+
 PRE(sys_linkat)
 {
    *flags |= SfMayBlock;
index 2a027f0008adb3b417da0c87e3f95feaba46600e..1ae445474f767a3bf1fa14ef7c17f508f443f6b0 100644 (file)
@@ -1179,6 +1179,8 @@ static SyscallTableEntry syscall_table[] = {
    LINXY(__NR_process_vm_readv,  sys_process_vm_readv), // 351
    LINX_(__NR_process_vm_writev, sys_process_vm_writev),// 352
 
+   LINX_(__NR_renameat2,         sys_renameat2),        // 357
+
    LINXY(__NR_getrandom,         sys_getrandom),        // 359
    LINXY(__NR_memfd_create,      sys_memfd_create)      // 360
 };
index 107a569633feeb8118b4e31c4a5f882787570324..ebb8295fb2cdf66147c038db5db603003152e340 100644 (file)
@@ -1047,7 +1047,7 @@ static SyscallTableEntry syscall_table[] = {
 
 // ?????(__NR_sched_setattr, ),                                       // 345
 // ?????(__NR_sched_getattr, ),                                       // 346
-// ?????(__NR_renameat2, ),                                           // 347
+   LINX_(__NR_renameat2, sys_renameat2),                              // 347
 // ?????(__NR_seccomp, ),                                             // 348
    LINXY(__NR_getrandom, sys_getrandom),                              // 349
 
index f1f97d70ca12aa88099cfcff24ee8731505d85e2..0c986cba34d5f67154e70ff5dc6b95941e811270 100644 (file)
@@ -1820,7 +1820,7 @@ static SyscallTableEntry syscall_table[] = {
 //   LIN__(__NR_finit_module,      sys_ni_syscall),       // 350
 //   LIN__(__NR_sched_setattr,     sys_ni_syscall),       // 351
 //   LIN__(__NR_sched_getattr,     sys_ni_syscall),       // 352
-//   LIN__(__NR_renameat2,         sys_ni_syscall),       // 353
+   LINX_(__NR_renameat2,         sys_renameat2),        // 353
 //   LIN__(__NR_seccomp,           sys_ni_syscall),       // 354
 
    LINXY(__NR_getrandom,         sys_getrandom),        // 355