]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Fix OS X 10.10 (Yosemite) - missing system calls and fcntl code, courtesy of Bill...
authorRhys Kidd <rhyskidd@gmail.com>
Sat, 21 Feb 2015 12:24:18 +0000 (12:24 +0000)
committerRhys Kidd <rhyskidd@gmail.com>
Sat, 21 Feb 2015 12:24:18 +0000 (12:24 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14951

NEWS
coregrind/m_syswrap/priv_syswrap-darwin.h
coregrind/m_syswrap/syswrap-darwin.c
include/vki/vki-darwin.h
include/vki/vki-scnums-darwin.h

diff --git a/NEWS b/NEWS
index 8c8b7c537e193771570e486db28af1144d3f0a47..afcfb81fea02ccf35fefce6c9282e2923bd8a9fe 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -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
index 566d7829668ae128d9ada9e8ad0731afe67ed354..1a40633ea5a960ab01d2f5ec4b5574aa48ce9164 100644 (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 */
index 2067d8dc44c032b231d2b658dab80b1952020f14..4da31a65236e45f495c064486e2298d30719ad71 100644 (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)
index ea50a7790d09d620bf0bef18a546a18021705b1a..9e53f25bfa0f1769b2b626c953975e9b3fd3e5d0 100644 (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
index 8eeca10ae7f0ddb8ac2a5b6680d6a05320fc5edd..8fb9390d6bed14d449851be4fc36cc573ad64b8c 100644 (file)
 #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