|
From: <sv...@va...> - 2015-01-19 21:52:52
|
Author: tom
Date: Mon Jan 19 21:52:44 2015
New Revision: 14875
Log:
Handle the memfd_create system call.
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-mips32-linux.c
trunk/coregrind/m_syswrap/syswrap-mips64-linux.c
trunk/coregrind/m_syswrap/syswrap-ppc32-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 Mon Jan 19 21:52:44 2015
@@ -103,6 +103,7 @@
342063 wrong format specifier for test mcblocklistsearch in gdbserver_tests
342221 socket connect false positive uninit memory for unknown af family
342795 Internal glibc __GI_mempcpy call should be intercepted
+343012 Unhandled syscall 319 (memfd_create)
n-i-bz Provide implementations of certain compiler builtins to support
compilers who may not provide those
n-i-bz Old STABS code is still being compiled, but never used. Remove it.
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 Mon Jan 19 21:52:44 2015
@@ -285,6 +285,7 @@
// Linux-specific (new in Linux 3.17)
DECL_TEMPLATE(linux, sys_getrandom);
+DECL_TEMPLATE(linux, sys_memfd_create);
/* ---------------------------------------------------------------------
Wrappers for sockets and ipc-ery. These are split into standalone
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 Mon Jan 19 21:52:44 2015
@@ -1078,8 +1078,8 @@
// LIN__(__NR_sched_getattr, sys_ni_syscall), // 315
// LIN__(__NR_renameat2, sys_ni_syscall), // 316
// LIN__(__NR_seccomp, sys_ni_syscall), // 317
- LINXY(__NR_getrandom, sys_getrandom) // 318
-// LIN__(__NR_memfd_create, sys_ni_syscall), // 319
+ LINXY(__NR_getrandom, sys_getrandom), // 318
+ LINXY(__NR_memfd_create, sys_memfd_create) // 319
// LIN__(__NR_kexec_file_load, sys_ni_syscall), // 320
// LIN__(__NR_bpf, sys_ni_syscall) // 321
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 Mon Jan 19 21:52:44 2015
@@ -1215,7 +1215,8 @@
LINXY(__NR_open_by_handle_at, sys_open_by_handle_at),// 371
LINXY(__NR_clock_adjtime, sys_clock_adjtime), // 372
LINXY(__NR_sendmmsg, sys_sendmmsg), // 374
- LINXY(__NR_getrandom, sys_getrandom) // 384
+ 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 Mon Jan 19 21:52:44 2015
@@ -1037,6 +1037,7 @@
LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 270
LINX_(__NR_process_vm_writev, sys_process_vm_writev), // 271
LINXY(__NR_getrandom, sys_getrandom), // 278
+ LINXY(__NR_memfd_create, sys_memfd_create), // 279
// The numbers below are bogus. (See comment further down.)
// When pulling entries above this line, change the numbers
Modified: trunk/coregrind/m_syswrap/syswrap-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-linux.c Mon Jan 19 21:52:44 2015
@@ -3018,6 +3018,26 @@
POST_MEM_WRITE( ARG1, ARG2 );
}
+PRE(sys_memfd_create)
+{
+ PRINT("sys_memfd_create ( %#lx, %ld )" , ARG1,ARG2);
+ PRE_REG_READ2(int, "memfd_create",
+ char *, uname, unsigned int, flags);
+ PRE_MEM_RASCIIZ( "memfd_create(uname)", ARG1 );
+}
+
+POST(sys_memfd_create)
+{
+ vg_assert(SUCCESS);
+ if (!ML_(fd_allowed)(RES, "memfd_create", tid, True)) {
+ VG_(close)(RES);
+ SET_STATUS_Failure( VKI_EMFILE );
+ } else {
+ if (VG_(clo_track_fds))
+ ML_(record_fd_open_nameless)(tid, RES);
+ }
+}
+
/* ---------------------------------------------------------------------
utime wrapper
------------------------------------------------------------------ */
Modified: trunk/coregrind/m_syswrap/syswrap-mips32-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-mips32-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-mips32-linux.c Mon Jan 19 21:52:44 2015
@@ -1118,7 +1118,8 @@
LINXY (__NR_process_vm_readv, sys_process_vm_readv), // 345
LINX_ (__NR_process_vm_writev, sys_process_vm_writev), // 346
//..
- LINXY(__NR_getrandom, sys_getrandom) // 353
+ LINXY(__NR_getrandom, sys_getrandom), // 353
+ LINXY(__NR_memfd_create, sys_memfd_create) // 354
};
SyscallTableEntry* ML_(get_linux_syscall_entry) (UInt sysno)
Modified: trunk/coregrind/m_syswrap/syswrap-mips64-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-mips64-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-mips64-linux.c Mon Jan 19 21:52:44 2015
@@ -910,7 +910,8 @@
LINXY (__NR_clock_adjtime, sys_clock_adjtime),
LINXY (__NR_process_vm_readv, sys_process_vm_readv),
LINX_ (__NR_process_vm_writev, sys_process_vm_writev),
- LINXY(__NR_getrandom, sys_getrandom)
+ LINXY(__NR_getrandom, sys_getrandom),
+ LINXY(__NR_memfd_create, sys_memfd_create)
};
SyscallTableEntry * ML_(get_linux_syscall_entry) ( UInt sysno )
Modified: trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c Mon Jan 19 21:52:44 2015
@@ -1258,7 +1258,8 @@
LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 351
LINX_(__NR_process_vm_writev, sys_process_vm_writev),// 352
- LINXY(__NR_getrandom, sys_getrandom) // 359
+ LINXY(__NR_getrandom, sys_getrandom), // 359
+ LINXY(__NR_memfd_create, sys_memfd_create) // 360
};
SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno )
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 Mon Jan 19 21:52:44 2015
@@ -1157,7 +1157,8 @@
LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 351
LINX_(__NR_process_vm_writev, sys_process_vm_writev),// 352
- LINXY(__NR_getrandom, sys_getrandom) // 359
+ LINXY(__NR_getrandom, sys_getrandom), // 359
+ LINXY(__NR_memfd_create, sys_memfd_create) // 360
};
SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno )
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 Mon Jan 19 21:52:44 2015
@@ -1050,9 +1050,9 @@
// ?????(__NR_sched_getattr, ), // 346
// ?????(__NR_renameat2, ), // 347
// ?????(__NR_seccomp, ), // 348
- LINXY(__NR_getrandom, sys_getrandom) // 349
+ LINXY(__NR_getrandom, sys_getrandom), // 349
-// ?????(__NR_memfd_create, ), // 350
+ LINXY(__NR_memfd_create, sys_memfd_create) // 350
};
SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno )
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 Mon Jan 19 21:52:44 2015
@@ -1821,8 +1821,8 @@
// LIN__(__NR_renameat2, sys_ni_syscall), // 353
// LIN__(__NR_seccomp, sys_ni_syscall), // 354
- LINXY(__NR_getrandom, sys_getrandom) // 355
-// LIN__(__NR_memfd_create, sys_ni_syscall), // 356
+ LINXY(__NR_getrandom, sys_getrandom), // 355
+ LINXY(__NR_memfd_create, sys_memfd_create) // 356
// LIN__(__NR_bpf, sys_ni_syscall) // 357
};
|