Fix OS X 10.10 (Yosemite) - missing system calls and fcntl code, courtesy of Bill Zissimopoulos

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14951
This commit is contained in:
Rhys Kidd 2015-02-21 12:24:18 +00:00
parent 3e53930ad0
commit f3c4b1a67a
5 changed files with 56 additions and 6 deletions

1
NEWS
View File

@ -84,6 +84,7 @@ where XXXXXX is the bug number as listed below.
342063 wrong format specifier for test mcblocklistsearch in gdbserver_tests
342221 socket connect false positive uninit memory for unknown af family
342603 Add I2C_SMBUS ioctl support
342635 OS X 10.10 (Yosemite) - missing system calls and fcntl code
342795 Internal glibc __GI_mempcpy call should be intercepted
343012 Unhandled syscall 319 (memfd_create)
343069 Patch updating v4l2 API support

View File

@ -558,10 +558,10 @@ DECL_TEMPLATE(darwin, bsdthread_ctl); // 478
// NYI sendmsg_x // 481
// NYI thread_selfusage // 482
// NYI csrctl // 483
// NYI guarded_open_dprotected_np // 484
// NYI guarded_write_np // 485
// NYI guarded_pwrite_np // 486
// NYI guarded_writev_np // 487
DECL_TEMPLATE(darwin, guarded_open_dprotected_np); // 484
DECL_TEMPLATE(darwin, guarded_write_np); // 485
DECL_TEMPLATE(darwin, guarded_pwrite_np); // 486
DECL_TEMPLATE(darwin, guarded_writev_np); // 487
// NYI rename_ext // 488
// NYI mremap_encrypted // 489
#endif /* DARWIN_VERS == DARWIN_10_10 */

View File

@ -1486,6 +1486,15 @@ PRE(fcntl)
if (ARG2 == VKI_F_SETLKW)
*flags |= SfMayBlock;
break;
# if DARWIN_VERS >= DARWIN_10_10
case VKI_F_SETLKWTIMEOUT:
PRINT("fcntl[ARG3=='locktimeout'] ( %ld, %ld, %#lx )", ARG1,ARG2,ARG3);
PRE_REG_READ3(long, "fcntl",
unsigned int, fd, unsigned int, cmd,
struct flocktimeout *, lock);
*flags |= SfMayBlock;
break;
# endif
// none
case VKI_F_CHKCLEAN:
@ -1650,7 +1659,10 @@ POST(fcntl)
case VKI_F_GETLK:
case VKI_F_SETLK:
case VKI_F_SETLKW:
# if DARWIN_VERS >= DARWIN_10_10
case VKI_F_SETLKWTIMEOUT:
break;
# endif
case VKI_F_PREALLOCATE:
{
@ -1832,7 +1844,7 @@ POST(kqueue)
PRE(fileport_makeport)
{
PRINT("guarded_open_np(fd:%#lx, portnamep:%#lx) FIXME",
PRINT("fileport_makeport(fd:%#lx, portnamep:%#lx) FIXME",
ARG1, ARG2);
}
@ -9182,6 +9194,32 @@ PRE(bsdthread_ctl)
void*, cmd, void*, arg1, void*, arg2, void*, arg3);
}
PRE(guarded_open_dprotected_np)
{
PRINT("guarded_open_dprotected_np("
"path:%#lx(%s), guard:%#lx, guardflags:%#lx, flags:%#lx, "
"dpclass:%#lx, dpflags: %#lx) FIXME",
ARG1, (char*)ARG1, ARG2, ARG3, ARG4, ARG5, ARG6);
}
PRE(guarded_write_np)
{
PRINT("guarded_write_np(fd:%ld, guard:%#lx, cbuf:%#lx, nbyte:%llu) FIXME",
ARG1, ARG2, ARG3, (ULong)ARG4);
}
PRE(guarded_pwrite_np)
{
PRINT("guarded_pwrite_np(fd:%ld, guard:%#lx, buf:%#lx, nbyte:%llu, offset:%lld) FIXME",
ARG1, ARG2, ARG3, (ULong)ARG4, (Long)ARG5);
}
PRE(guarded_writev_np)
{
PRINT("guarded_writev_np(fd:%ld, guard:%#lx, iovp:%#lx, iovcnt:%llu) FIXME",
ARG1, ARG2, ARG3, (ULong)ARG4);
}
#endif /* DARWIN_VERS >= DARWIN_10_10 */
@ -9699,6 +9737,10 @@ const SyscallTableEntry ML_(syscall_table)[] = {
MACXY(__NR_necp_match_policy, necp_match_policy), // 460
MACXY(__NR_getattrlistbulk, getattrlistbulk), // 461
MACX_(__NR_bsdthread_ctl, bsdthread_ctl), // 478
MACX_(__NR_guarded_open_dprotected_np, guarded_open_dprotected_np),
MACX_(__NR_guarded_write_np, guarded_write_np),
MACX_(__NR_guarded_pwrite_np, guarded_pwrite_np),
MACX_(__NR_guarded_writev_np, guarded_writev_np),
#endif
// _____(__NR_MAXSYSCALL)
MACX_(__NR_DARWIN_FAKE_SIGRETURN, FAKE_SIGRETURN)

View File

@ -278,6 +278,9 @@ typedef uint32_t vki_u32;
#define VKI_F_GETLK F_GETLK
#define VKI_F_SETLK F_SETLK
#define VKI_F_SETLKW F_SETLKW
#if DARWIN_VERS >= DARWIN_10_10
#define VKI_F_SETLKWTIMEOUT F_SETLKWTIMEOUT
#endif
#define VKI_F_CHKCLEAN F_CHKCLEAN
#define VKI_F_PREALLOCATE F_PREALLOCATE

View File

@ -711,10 +711,14 @@
#define __NR_vfs_purge VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(455)
#endif /* DARWIN_VERS >= DARWIN_10_9 */
#if DARWIN_VERS == DARWIN_10_10
#if DARWIN_VERS >= DARWIN_10_10
#define __NR_necp_match_policy VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(460)
#define __NR_getattrlistbulk VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(461)
#define __NR_bsdthread_ctl VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(478)
#define __NR_guarded_open_dprotected_np VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(484)
#define __NR_guarded_write_np VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(485)
#define __NR_guarded_pwrite_np VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(486)
#define __NR_guarded_writev_np VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(487)
#endif
#if DARWIN_VERS < DARWIN_10_6