From: Ivo Raisr Date: Mon, 16 May 2016 11:38:29 +0000 (+0000) Subject: Solaris ioctl: Add wrapper for I_FLUSH. X-Git-Tag: svn/VALGRIND_3_12_0~145 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8ace9b4f068b2eaa33871c0c9d4867a69960bd2e;p=thirdparty%2Fvalgrind.git Solaris ioctl: Add wrapper for I_FLUSH. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15878 --- diff --git a/coregrind/m_syswrap/syswrap-solaris.c b/coregrind/m_syswrap/syswrap-solaris.c index c8781a125d..f30bd9cd48 100644 --- a/coregrind/m_syswrap/syswrap-solaris.c +++ b/coregrind/m_syswrap/syswrap-solaris.c @@ -3114,6 +3114,8 @@ PRE(sys_ioctl) 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 @@ POST(sys_ioctl) /* STREAMS */ case VKI_I_PUSH: break; + case VKI_I_FLUSH: + break; case VKI_I_STR: { struct vki_strioctl *p = (struct vki_strioctl *) ARG3; diff --git a/include/vki/vki-solaris.h b/include/vki/vki-solaris.h index 9568036562..7004b702f7 100644 --- a/include/vki/vki-solaris.h +++ b/include/vki/vki-solaris.h @@ -1178,6 +1178,7 @@ typedef struct sigaction vki_sigaction_fromK_t; #include #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 diff --git a/memcheck/tests/solaris/scalar_ioctl.c b/memcheck/tests/solaris/scalar_ioctl.c index a8c056ec90..abd45fc03e 100644 --- a/memcheck/tests/solaris/scalar_ioctl.c +++ b/memcheck/tests/solaris/scalar_ioctl.c @@ -158,6 +158,13 @@ static void sys_ioctl_I_PUSH(void) SY(SYS_ioctl, x0 - 1, x0 + I_PUSH, x0 + 1); FAIL; } +__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) { @@ -481,6 +488,7 @@ int main(void) /* STREAMS */ sys_ioctl_I_PUSH(); + sys_ioctl_I_FLUSH(); sys_ioctl_I_STR(); sys_ioctl_I_STR_2(); sys_ioctl_I_FIND(); diff --git a/memcheck/tests/solaris/scalar_ioctl.stderr.exp b/memcheck/tests/solaris/scalar_ioctl.stderr.exp index 3add960632..c3593b8364 100644 --- a/memcheck/tests/solaris/scalar_ioctl.stderr.exp +++ b/memcheck/tests/solaris/scalar_ioctl.stderr.exp @@ -292,6 +292,18 @@ Syscall param ioctl(I_PUSH) points to unaddressable byte(s) ... 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 --------------------------------------------------------- @@ -390,6 +402,9 @@ Syscall param ioctl(I_PEEK, strpeek->flags) points to unaddressable byte(s) 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 @@ Syscall param ioctl(I_PEEK, strpeek->ctlbuf.maxlen) points to uninitialised byte ... 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