|
From: <sv...@va...> - 2016-05-31 12:16:24
|
Author: mjw
Date: Tue May 31 13:16:15 2016
New Revision: 15889
Log:
Bug 363680 add renameat2() support
Patch written by Jann Horn <jan...@go...>.
Modified:
trunk/NEWS
trunk/coregrind/m_syswrap/priv_syswrap-linux.h
trunk/coregrind/m_syswrap/syswrap-amd64-linux.c
trunk/coregrind/m_syswrap/syswrap-arm-linux.c
trunk/coregrind/m_syswrap/syswrap-arm64-linux.c
trunk/coregrind/m_syswrap/syswrap-linux.c
trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c
trunk/coregrind/m_syswrap/syswrap-s390x-linux.c
trunk/coregrind/m_syswrap/syswrap-x86-linux.c
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Tue May 31 13:16:15 2016
@@ -102,6 +102,7 @@
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
Modified: trunk/coregrind/m_syswrap/priv_syswrap-linux.h
==============================================================================
--- trunk/coregrind/m_syswrap/priv_syswrap-linux.h (original)
+++ trunk/coregrind/m_syswrap/priv_syswrap-linux.h Tue May 31 13:16:15 2016
@@ -172,6 +172,7 @@
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);
Modified: trunk/coregrind/m_syswrap/syswrap-amd64-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-amd64-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-amd64-linux.c Tue May 31 13:16:15 2016
@@ -1073,7 +1073,7 @@
// 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
Modified: trunk/coregrind/m_syswrap/syswrap-arm-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-arm-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-arm-linux.c Tue May 31 13:16:15 2016
@@ -1219,6 +1219,8 @@
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
};
Modified: trunk/coregrind/m_syswrap/syswrap-arm64-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-arm64-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-arm64-linux.c Tue May 31 13:16:15 2016
@@ -1105,6 +1105,8 @@
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
Modified: trunk/coregrind/m_syswrap/syswrap-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-linux.c Tue May 31 13:16:15 2016
@@ -4697,6 +4697,18 @@
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;
Modified: trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c Tue May 31 13:16:15 2016
@@ -1179,6 +1179,8 @@
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
};
Modified: trunk/coregrind/m_syswrap/syswrap-s390x-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-s390x-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-s390x-linux.c Tue May 31 13:16:15 2016
@@ -1047,7 +1047,7 @@
// ?????(__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
Modified: trunk/coregrind/m_syswrap/syswrap-x86-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-x86-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-x86-linux.c Tue May 31 13:16:15 2016
@@ -1820,7 +1820,7 @@
// 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
|