]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Solaris: Add wrapper for setparam subcode of the door syscall.
authorIvo Raisr <ivosh@ivosh.net>
Mon, 16 May 2016 12:51:27 +0000 (12:51 +0000)
committerIvo Raisr <ivosh@ivosh.net>
Mon, 16 May 2016 12:51:27 +0000 (12:51 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15879

coregrind/m_syswrap/syswrap-solaris.c
memcheck/tests/solaris/scalar.c
memcheck/tests/solaris/scalar.stderr.exp

index f30bd9cd4839878fe2403168735c3de1418747be..bf1154a497aa2e4a945702f87be4d8ee3c4f8b7e 100644 (file)
@@ -9061,7 +9061,8 @@ PRE(sys_door)
    case VKI_DOOR_SETPARAM:
       PRE_REG_READ3(long, "door", long, arg1, long, arg2, long, arg3);
       PRE_REG_READ_SIXTH_ONLY;
-      VG_(unimplemented)("DOOR_SETPARAM");
+      if (!ML_(fd_allowed)(ARG1, "door_setparam", tid, False))
+         SET_STATUS_Failure(VKI_EBADF);
       break;
    default:
       VG_(unimplemented)("Syswrap of the door call with subcode %ld.", SARG6);
index 3947bc0ed109fdda69eae036e8047f9a04a3810c..eadf3c4cef46bf4d76277e8095a3d55f1cef0594 100644 (file)
@@ -1196,6 +1196,13 @@ static void sys_door5(void)
    SY(SYS_door, x0, x0 + &params, x0, x0, x0, x0 + DOOR_CALL); FAIL;
 }
 
+__attribute__((noinline))
+static void sys_door6(void)
+{
+   GO(SYS_door, "(DOOR_SETPARAM) 4s 0m");
+   SY(SYS_door, x0, x0 - 1, x0 + 1, x0, x0, x0 + DOOR_SETPARAM); FAIL;
+}
+
 __attribute__((noinline))
 static void sys_pset(void)
 {
@@ -2290,6 +2297,7 @@ int main(void)
    sys_door3();
    sys_door4();
    sys_door5();
+   sys_door6();
    /* XXX Additional sys_door variants still unimplemented. */
 
    /* SYS_setreuid              202 */
index ceddcf29d700bd117dda76547d6e011a94307e27..a7275204ea133656ae3eada0ba6c37aadc98eb62 100644 (file)
@@ -4178,6 +4178,21 @@ Syscall param door_call(params->rbuf) points to unaddressable byte(s)
    ...
  Address 0x........ is not stack'd, malloc'd or (recently) free'd
 
+---------------------------------------------------------
+201:                SYS_door (DOOR_SETPARAM) 4s 0m
+---------------------------------------------------------
+Syscall param door(arg1) contains uninitialised byte(s)
+   ...
+
+Syscall param door(arg2) contains uninitialised byte(s)
+   ...
+
+Syscall param door(arg3) contains uninitialised byte(s)
+   ...
+
+Syscall param door(subcode) contains uninitialised byte(s)
+   ...
+
 ---------------------------------------------------------
 202:            SYS_setreuid 2s 0m
 ---------------------------------------------------------