Author: iraisr
Date: Mon May 16 12:38:29 2016
New Revision: 15878
Log:
Solaris ioctl: Add wrapper for I_FLUSH.
Modified:
trunk/coregrind/m_syswrap/syswrap-solaris.c
trunk/include/vki/vki-solaris.h
trunk/memcheck/tests/solaris/scalar_ioctl.c
trunk/memcheck/tests/solaris/scalar_ioctl.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 12:38:29 2016
@@ -3114,6 +3114,8 @@
case VKI_I_PUSH:
PRE_MEM_RASCIIZ("ioctl(I_PUSH)", ARG3);
break;
+ case VKI_I_FLUSH:
+ break;
case VKI_I_STR:
{
PRE_MEM_READ("ioctl(I_STR)", ARG3, sizeof(struct vki_strioctl));
@@ -3378,6 +3380,8 @@
/* STREAMS */
case VKI_I_PUSH:
break;
+ case VKI_I_FLUSH:
+ break;
case VKI_I_STR:
{
struct vki_strioctl *p = (struct vki_strioctl *) ARG3;
Modified: trunk/include/vki/vki-solaris.h
==============================================================================
--- trunk/include/vki/vki-solaris.h (original)
+++ trunk/include/vki/vki-solaris.h Mon May 16 12:38:29 2016
@@ -1178,6 +1178,7 @@
#include <sys/stropts.h>
#define VKI_I_CANPUT I_CANPUT
#define VKI_I_FIND I_FIND
+#define VKI_I_FLUSH I_FLUSH
#define VKI_I_PEEK I_PEEK
#define VKI_I_PUSH I_PUSH
#define VKI_I_STR I_STR
Modified: trunk/memcheck/tests/solaris/scalar_ioctl.c
==============================================================================
--- trunk/memcheck/tests/solaris/scalar_ioctl.c (original)
+++ trunk/memcheck/tests/solaris/scalar_ioctl.c Mon May 16 12:38:29 2016
@@ -159,6 +159,13 @@
}
__attribute__((noinline))
+static void sys_ioctl_I_FLUSH(void)
+{
+ GO(SYS_ioctl, "(I_FLUSH) 3s 0m");
+ SY(SYS_ioctl, x0 - 1, x0 + I_FLUSH, x0 + FLUSHR); FAIL;
+}
+
+__attribute__((noinline))
static void sys_ioctl_I_STR(void)
{
GO(SYS_ioctl, "(I_STR) 3s 1m");
@@ -481,6 +488,7 @@
/* STREAMS */
sys_ioctl_I_PUSH();
+ sys_ioctl_I_FLUSH();
sys_ioctl_I_STR();
sys_ioctl_I_STR_2();
sys_ioctl_I_FIND();
Modified: trunk/memcheck/tests/solaris/scalar_ioctl.stderr.exp
==============================================================================
--- trunk/memcheck/tests/solaris/scalar_ioctl.stderr.exp (original)
+++ trunk/memcheck/tests/solaris/scalar_ioctl.stderr.exp Mon May 16 12:38:29 2016
@@ -293,6 +293,18 @@
Address 0x........ is not stack'd, malloc'd or (recently) free'd
---------------------------------------------------------
+ 54: SYS_ioctl (I_FLUSH) 3s 0m
+---------------------------------------------------------
+Syscall param ioctl(fd) contains uninitialised byte(s)
+ ...
+
+Syscall param ioctl(request) contains uninitialised byte(s)
+ ...
+
+Syscall param ioctl(arg) contains uninitialised byte(s)
+ ...
+
+---------------------------------------------------------
54: SYS_ioctl (I_STR) 3s 1m
---------------------------------------------------------
Syscall param ioctl(fd) contains uninitialised byte(s)
@@ -390,6 +402,9 @@
Syscall param ioctl(fd) contains uninitialised byte(s)
...
+
+More than 100 errors detected. Subsequent errors
+will still be recorded, but in less detail than before.
Syscall param ioctl(request) contains uninitialised byte(s)
...
@@ -400,9 +415,6 @@
...
Address 0x........ is on thread 1's stack
-
-More than 100 errors detected. Subsequent errors
-will still be recorded, but in less detail than before.
Syscall param ioctl(I_PEEK, strpeek->ctlbuf.buf) points to uninitialised byte(s)
...
Address 0x........ is on thread 1's stack
|