diff --git a/valgrind-3.10.1-memfd_create.patch b/valgrind-3.10.1-memfd_create.patch new file mode 100644 index 0000000..09c99d2 --- /dev/null +++ b/valgrind-3.10.1-memfd_create.patch @@ -0,0 +1,171 @@ +diff --git a/coregrind/m_syswrap/priv_syswrap-linux.h b/coregrind/m_syswrap/priv_syswrap-linux.h +index 22c6c98..4a8d7e1 100644 +--- a/coregrind/m_syswrap/priv_syswrap-linux.h ++++ b/coregrind/m_syswrap/priv_syswrap-linux.h +@@ -285,6 +285,7 @@ DECL_TEMPLATE(linux, sys_fanotify_mark); + + // 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 +diff --git a/coregrind/m_syswrap/syswrap-amd64-linux.c b/coregrind/m_syswrap/syswrap-amd64-linux.c +index ae696b1..88802fb 100644 +--- a/coregrind/m_syswrap/syswrap-amd64-linux.c ++++ b/coregrind/m_syswrap/syswrap-amd64-linux.c +@@ -1078,8 +1078,8 @@ static SyscallTableEntry syscall_table[] = { + // 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 +diff --git a/coregrind/m_syswrap/syswrap-arm-linux.c b/coregrind/m_syswrap/syswrap-arm-linux.c +index 4293800..200b0d1 100644 +--- a/coregrind/m_syswrap/syswrap-arm-linux.c ++++ b/coregrind/m_syswrap/syswrap-arm-linux.c +@@ -1215,7 +1215,8 @@ static SyscallTableEntry syscall_main_table[] = { + 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 + }; + + +diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c +index 56fafac..a72392f 100644 +--- a/coregrind/m_syswrap/syswrap-arm64-linux.c ++++ b/coregrind/m_syswrap/syswrap-arm64-linux.c +@@ -1037,6 +1037,7 @@ 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 + 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 +diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c +index f0bd3cb..7c72545 100644 +--- a/coregrind/m_syswrap/syswrap-linux.c ++++ b/coregrind/m_syswrap/syswrap-linux.c +@@ -3018,6 +3018,26 @@ POST(sys_getrandom) + 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 + ------------------------------------------------------------------ */ +diff --git a/coregrind/m_syswrap/syswrap-mips32-linux.c b/coregrind/m_syswrap/syswrap-mips32-linux.c +index bddadd0..fa921c1 100644 +--- a/coregrind/m_syswrap/syswrap-mips32-linux.c ++++ b/coregrind/m_syswrap/syswrap-mips32-linux.c +@@ -1118,7 +1118,8 @@ static SyscallTableEntry syscall_main_table[] = { + 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) +diff --git a/coregrind/m_syswrap/syswrap-mips64-linux.c b/coregrind/m_syswrap/syswrap-mips64-linux.c +index c51ab6f..f8340ab 100644 +--- a/coregrind/m_syswrap/syswrap-mips64-linux.c ++++ b/coregrind/m_syswrap/syswrap-mips64-linux.c +@@ -910,7 +910,8 @@ static SyscallTableEntry syscall_main_table[] = { + 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 ) +diff --git a/coregrind/m_syswrap/syswrap-ppc32-linux.c b/coregrind/m_syswrap/syswrap-ppc32-linux.c +index 5c058c2..6b53abe 100644 +--- a/coregrind/m_syswrap/syswrap-ppc32-linux.c ++++ b/coregrind/m_syswrap/syswrap-ppc32-linux.c +@@ -1258,7 +1258,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 + +- 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 ) +diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c +index c173593..25e0bde 100644 +--- a/coregrind/m_syswrap/syswrap-ppc64-linux.c ++++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c +@@ -1157,7 +1157,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 + +- 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 ) +diff --git a/coregrind/m_syswrap/syswrap-s390x-linux.c b/coregrind/m_syswrap/syswrap-s390x-linux.c +index 6363e2d..ca969c8 100644 +--- a/coregrind/m_syswrap/syswrap-s390x-linux.c ++++ b/coregrind/m_syswrap/syswrap-s390x-linux.c +@@ -1050,9 +1050,9 @@ static SyscallTableEntry syscall_table[] = { + // ?????(__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 ) +diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c +index dcbf425..0e87679 100644 +--- a/coregrind/m_syswrap/syswrap-x86-linux.c ++++ b/coregrind/m_syswrap/syswrap-x86-linux.c +@@ -1821,8 +1821,8 @@ static SyscallTableEntry syscall_table[] = { + // 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 + }; + diff --git a/valgrind.spec b/valgrind.spec index b683bb1..e037868 100644 --- a/valgrind.spec +++ b/valgrind.spec @@ -83,6 +83,9 @@ Patch10: valgrind-3.10.1-glibc-version-check.patch # Upstream valgrind svn r15133 Patch11: valgrind-3.10-1-ppc64-sigpending.patch +# KDE#343012 - Unhandled syscall 319 (memfd_create) +Patch12: valgrind-3.10.1-memfd_create.patch + %if %{build_multilib} # Ensure glibc{,-devel} is installed for both multilib arches BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so @@ -192,6 +195,7 @@ Valgrind User Manual for details. %patch9 -p1 %patch10 -p1 %patch11 -p1 +%patch12 -p1 %build # We need to use the software collection compiler and binutils if available. @@ -347,6 +351,9 @@ echo ===============END TESTING=============== %endif %changelog +* Wed Jun 03 2015 Mark Wielaard +- Add valgrind-3.10.1-memfd_create.patch. + * Fri May 22 2015 Mark Wielaard - 3.10.1-8 - Disable extended regtest on arm. The gdb tests hang for unknown reasons. The reason is a glibc bug #1196181 which causes: