Author: iraisr
Date: Mon May 16 07:12:27 2016
New Revision: 15877
Log:
Solaris ioctl: Add wrapper for I_FIND.
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 07:12:27 2016
@@ -3127,6 +3127,9 @@
}
}
break;
+ case VKI_I_FIND:
+ PRE_MEM_RASCIIZ("ioctl(I_FIND)", ARG3);
+ break;
case VKI_I_PEEK:
{
/* Try hard not to mark strpeek->*buf.len members as being read. */
@@ -3384,6 +3387,8 @@
POST_MEM_WRITE((Addr) p->ic_dp, p->ic_len);
}
break;
+ case VKI_I_FIND:
+ break;
case VKI_I_PEEK:
{
struct vki_strpeek *p = (struct vki_strpeek*)ARG3;
Modified: trunk/include/vki/vki-solaris.h
==============================================================================
--- trunk/include/vki/vki-solaris.h (original)
+++ trunk/include/vki/vki-solaris.h Mon May 16 07:12:27 2016
@@ -1177,6 +1177,7 @@
#include <sys/stropts.h>
#define VKI_I_CANPUT I_CANPUT
+#define VKI_I_FIND I_FIND
#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 07:12:27 2016
@@ -180,6 +180,13 @@
}
__attribute__((noinline))
+static void sys_ioctl_I_FIND(void)
+{
+ GO(SYS_ioctl, "(I_FIND) 3s 1m");
+ SY(SYS_ioctl, x0 - 1, x0 + I_FIND, x0 + 1); FAIL;
+}
+
+__attribute__((noinline))
static void sys_ioctl_I_PEEK(void)
{
GO(SYS_ioctl, "(I_PEEK) 3s 7m");
@@ -476,6 +483,7 @@
sys_ioctl_I_PUSH();
sys_ioctl_I_STR();
sys_ioctl_I_STR_2();
+ sys_ioctl_I_FIND();
sys_ioctl_I_PEEK();
sys_ioctl_I_PEEK_2();
sys_ioctl_I_CANPUT();
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 07:12:27 2016
@@ -329,6 +329,22 @@
Address 0x........ is not stack'd, malloc'd or (recently) free'd
---------------------------------------------------------
+ 54: SYS_ioctl (I_FIND) 3s 1m
+---------------------------------------------------------
+Syscall param ioctl(fd) contains uninitialised byte(s)
+ ...
+
+Syscall param ioctl(request) contains uninitialised byte(s)
+ ...
+
+Syscall param ioctl(arg) contains uninitialised byte(s)
+ ...
+
+Syscall param ioctl(I_FIND) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+---------------------------------------------------------
54: SYS_ioctl (I_PEEK) 3s 7m
---------------------------------------------------------
Syscall param ioctl(fd) contains uninitialised byte(s)
@@ -384,6 +400,9 @@
...
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
@@ -400,9 +419,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 unaddressable byte(s)
...
Address 0x........ is not stack'd, malloc'd or (recently) free'd
|