]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Fix unhandled syscall: unix:473 (readlinkat) on OS X 10.10
authorRhys Kidd <rhyskidd@gmail.com>
Wed, 20 May 2015 13:31:02 +0000 (13:31 +0000)
committerRhys Kidd <rhyskidd@gmail.com>
Wed, 20 May 2015 13:31:02 +0000 (13:31 +0000)
bz#344936

Before:

== 595 tests, 229 stderr failures, 23 stdout failures, 1 stderrB failure, 1 stdoutB failure, 30 post failures ==

After:

== 595 tests, 228 stderr failures, 23 stdout failures, 1 stderrB failure, 1 stdoutB failure, 30 post failures ==

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15260

NEWS
coregrind/m_syswrap/priv_syswrap-darwin.h
coregrind/m_syswrap/syswrap-darwin.c
include/vki/vki-scnums-darwin.h
none/tests/procfs-non-linux.stderr.exp

diff --git a/NEWS b/NEWS
index 8b3ea137f01d305f53a9d35247330579bd72cb89..7b1e70af8c8a718ffcd36fe1341269171ee26f59 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -175,6 +175,7 @@ where XXXXXX is the bug number as listed below.
 344621  Fix memcheck/tests/err_disable4 test on OS X
 344686  Fix suppression for pthread_rwlock_init on OS X 10.10
 344702  Fix missing libobjc suppressions on OS X 10.10
+344936  Fix unhandled syscall: unix:473 (readlinkat) on OS X 10.10
 344939  Fix memcheck/tests/xml1 on OS X 10.10
 345016  helgrind/tests/locked_vs_unlocked2 is failing sometimes
 345079  Fix build problems in VEX/useful/test_main.c
index d2c7f0e195ad99ed97113d32e56ab4bdab615fcd..b68af4208e68044267d502b7ca9d25d7c3897842 100644 (file)
@@ -547,7 +547,7 @@ DECL_TEMPLATE(darwin, getattrlistbulk);          // 461
 // NYI fstatat64       // 470
 // NYI linkat          // 471
 // NYI unlinkat        // 472
-// NYI readlinkat      // 473
+DECL_TEMPLATE(darwin, readlinkat);               // 473
 // NYI symlinkat       // 474
 // NYI mkdirat         // 475
 // NYI getattrlistat   // 476
index 31ffc396061f89046e6491938068c3e51aa420c1..2295047a33eaed287a4efd2b43257c522dc3a2cb 100644 (file)
@@ -9308,6 +9308,28 @@ POST(getattrlistbulk)
       POST_MEM_WRITE(ARG3, ARG4);
 }
 
+PRE(readlinkat)
+{
+    Word  saved = SYSNO;
+    
+    PRINT("readlinkat ( %ld, %#lx(%s), %#lx, %llu )", ARG1,ARG2,(char*)ARG2,ARG3,(ULong)ARG4);
+    PRE_REG_READ4(long, "readlinkat",
+                  int, dfd, const char *, path, char *, buf, int, bufsiz);
+    PRE_MEM_RASCIIZ( "readlinkat(path)", ARG2 );
+    PRE_MEM_WRITE( "readlinkat(buf)", ARG3,ARG4 );
+    
+    /*
+     * Refer to coregrind/m_syswrap/syswrap-linux.c
+     */
+    {
+        /* Normal case */
+        SET_STATUS_from_SysRes( VG_(do_syscall4)(saved, ARG1, ARG2, ARG3, ARG4));
+    }
+    
+    if (SUCCESS && RES > 0)
+        POST_MEM_WRITE( ARG3, RES );
+}
+
 PRE(bsdthread_ctl)
 {
    // int bsdthread_ctl(user_addr_t cmd, user_addr_t arg1, 
@@ -9863,6 +9885,7 @@ const SyscallTableEntry ML_(syscall_table)[] = {
    MACXY(__NR_sysctlbyname,        sysctlbyname),       // 274
    MACXY(__NR_necp_match_policy,   necp_match_policy),  // 460
    MACXY(__NR_getattrlistbulk,     getattrlistbulk),    // 461
+   MACX_(__NR_readlinkat,          readlinkat),         // 473
    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),
index 8fb9390d6bed14d449851be4fc36cc573ad64b8c..60b569eb63eecd8cffac8cd0c4570f65c8029eb8 100644 (file)
 #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_readlinkat             VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(473)
 #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)
index ec92dfaecbe203deecb67ce46feb54fcaf18b00b..9d656f733eeb7863892d142f8d51180f5ee403af 100644 (file)
@@ -5,6 +5,6 @@ open(): No such file or directory
 open(): No such file or directory
 readlink: No such file or directory
 readlink: No such file or directory
-readlinkat: Function not implemented
-readlinkat: Function not implemented
+readlinkat: No such file or directory
+readlinkat: No such file or directory