From: Mark Wielaard Date: Tue, 31 May 2016 12:16:15 +0000 (+0000) Subject: Bug 363680 add renameat2() support X-Git-Tag: svn/VALGRIND_3_12_0~134 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6b8c5dfb75be5d62b73eb5acf15c170c0ad0b637;p=thirdparty%2Fvalgrind.git Bug 363680 add renameat2() support Patch written by Jann Horn . git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15889 --- diff --git a/NEWS b/NEWS index 654ccc2acf..b83d5a8c96 100644 --- 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 diff --git a/coregrind/m_syswrap/priv_syswrap-linux.h b/coregrind/m_syswrap/priv_syswrap-linux.h index 03fcd118a7..162f8e5c8a 100644 --- a/coregrind/m_syswrap/priv_syswrap-linux.h +++ b/coregrind/m_syswrap/priv_syswrap-linux.h @@ -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); diff --git a/coregrind/m_syswrap/syswrap-amd64-linux.c b/coregrind/m_syswrap/syswrap-amd64-linux.c index 4a8344b886..a39148d1e8 100644 --- a/coregrind/m_syswrap/syswrap-amd64-linux.c +++ b/coregrind/m_syswrap/syswrap-amd64-linux.c @@ -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 diff --git a/coregrind/m_syswrap/syswrap-arm-linux.c b/coregrind/m_syswrap/syswrap-arm-linux.c index 224070cb16..445d5ac67f 100644 --- a/coregrind/m_syswrap/syswrap-arm-linux.c +++ b/coregrind/m_syswrap/syswrap-arm-linux.c @@ -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 }; diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c index 8842765eaa..ab167f6e99 100644 --- a/coregrind/m_syswrap/syswrap-arm64-linux.c +++ b/coregrind/m_syswrap/syswrap-arm64-linux.c @@ -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 diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c index fa7f89e8f5..24a5ae9db6 100644 --- a/coregrind/m_syswrap/syswrap-linux.c +++ b/coregrind/m_syswrap/syswrap-linux.c @@ -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; diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c index 2a027f0008..1ae445474f 100644 --- a/coregrind/m_syswrap/syswrap-ppc64-linux.c +++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c @@ -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 }; diff --git a/coregrind/m_syswrap/syswrap-s390x-linux.c b/coregrind/m_syswrap/syswrap-s390x-linux.c index 107a569633..ebb8295fb2 100644 --- a/coregrind/m_syswrap/syswrap-s390x-linux.c +++ b/coregrind/m_syswrap/syswrap-s390x-linux.c @@ -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 diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c index f1f97d70ca..0c986cba34 100644 --- a/coregrind/m_syswrap/syswrap-x86-linux.c +++ b/coregrind/m_syswrap/syswrap-x86-linux.c @@ -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