|
From: Mark W. <ma...@so...> - 2018-08-06 13:00:31
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=2eb2df759f51b15702934dee108f4c20c3db5fef commit 2eb2df759f51b15702934dee108f4c20c3db5fef Author: Mark Wielaard <ma...@kl...> Date: Tue Jul 31 15:32:43 2018 +0200 Bug 397012 - glibc ld.so uses arch_prctl on i386. arch_prctl used to be amd64 only. But since linux 4.12 it is also implemented for i386. And since glibc 2.28 ld.so will use it to see if the cpu/kernel provides CET support. To prevent seeing: WARNING: unhandled x86-linux syscall: 384 You may be able to write your own handler. Read the file README_MISSING_SYSCALL_OR_IOCTL. Nevertheless we consider this a bug. Please report it at http://valgrind.org/support/bug_reports.html. on every program run under valgrind just make it explicitly not implemented (ENOSYS). This is fine for the glibc usage. It just indicates there is no CET support. Diff: --- NEWS | 1 + coregrind/m_syswrap/syswrap-x86-linux.c | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 0d33876..260ee9a 100644 --- a/NEWS +++ b/NEWS @@ -137,6 +137,7 @@ where XXXXXX is the bug number as listed below. 395682 Accept read-only PT_LOAD segments and .rodata by ld -z separate-code == 384727 396887 arch_prctl should return EINVAL on unknown option +397012 glibc ld.so uses arch_prctl on i386 n-i-bz Fix missing workq_ops operations (macOS) n-i-bz fix bug in strspn replacement diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c index bec145a..11bb13d 100644 --- a/coregrind/m_syswrap/syswrap-x86-linux.c +++ b/coregrind/m_syswrap/syswrap-x86-linux.c @@ -1604,7 +1604,10 @@ static SyscallTableEntry syscall_table[] = { LINX_(__NR_sendmsg, sys_sendmsg), // 370 LINXY(__NR_recvfrom, sys_recvfrom), // 371 LINXY(__NR_recvmsg, sys_recvmsg), // 372 - LINX_(__NR_shutdown, sys_shutdown) // 373 + LINX_(__NR_shutdown, sys_shutdown), // 373 + + /* Explicitly not supported on i386 yet. */ + GENX_(__NR_arch_prctl, sys_ni_syscall) // 384 }; SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno ) |