|
From: <sv...@va...> - 2016-05-16 12:51:36
|
Author: iraisr
Date: Mon May 16 13:51:27 2016
New Revision: 15879
Log:
Solaris: Add wrapper for setparam subcode of the door syscall.
Modified:
trunk/coregrind/m_syswrap/syswrap-solaris.c
trunk/memcheck/tests/solaris/scalar.c
trunk/memcheck/tests/solaris/scalar.stderr.exp
Modified: trunk/coregrind/m_syswrap/syswrap-solaris.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-solaris.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-solaris.c Mon May 16 13:51:27 2016
@@ -9061,7 +9061,8 @@
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);
Modified: trunk/memcheck/tests/solaris/scalar.c
==============================================================================
--- trunk/memcheck/tests/solaris/scalar.c (original)
+++ trunk/memcheck/tests/solaris/scalar.c Mon May 16 13:51:27 2016
@@ -1197,6 +1197,13 @@
}
__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)
{
GO(SYS_pset, "(CREATE) 2s 1m");
@@ -2290,6 +2297,7 @@
sys_door3();
sys_door4();
sys_door5();
+ sys_door6();
/* XXX Additional sys_door variants still unimplemented. */
/* SYS_setreuid 202 */
Modified: trunk/memcheck/tests/solaris/scalar.stderr.exp
==============================================================================
--- trunk/memcheck/tests/solaris/scalar.stderr.exp (original)
+++ trunk/memcheck/tests/solaris/scalar.stderr.exp Mon May 16 13:51:27 2016
@@ -4179,6 +4179,21 @@
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
---------------------------------------------------------
Syscall param setreuid(ruid) contains uninitialised byte(s)
|