]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Add support for ioctl(fd, TIOCSIG, signal_number) which used
authorFlorian Krohm <florian@eich-krohm.de>
Tue, 21 Oct 2014 07:20:20 +0000 (07:20 +0000)
committerFlorian Krohm <florian@eich-krohm.de>
Tue, 21 Oct 2014 07:20:20 +0000 (07:20 +0000)
to issue a false complaint. Fixes BZ #339706
Source patch by David Herrmann (dh.herrmann@gmail.com).
Testcase by myself.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14646

NEWS
coregrind/m_syswrap/syswrap-linux.c
include/vki/vki-linux.h
memcheck/tests/linux/Makefile.am
memcheck/tests/linux/ioctl-tiocsig.c [new file with mode: 0644]
memcheck/tests/linux/ioctl-tiocsig.stderr.exp [new file with mode: 0644]
memcheck/tests/linux/ioctl-tiocsig.vgtest [new file with mode: 0644]

diff --git a/NEWS b/NEWS
index c99ed3092bf47f45e1eb2d07f6feb490d9829658..f1d76c901e807c6454798c503690f961f1485792 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -42,6 +42,7 @@ where XXXXXX is the bug number as listed below.
 339688 Mac-specific ASM does not support .version directive (cpuid,
        tronical and pushfpopf tests)
 
+339706 Fix false positive for ioctl(TIOCSIG) on linux
 339721 assertion 'check_sibling == sibling' failed in readdwarf3.c ...
 339789 Fix none/tests/execve test on Mac OS X 10.9
 339808 Fix none/tests/rlimit64_nofile test on Mac OS X 10.9
index 92539475de07d05df98d95c501f3fb38700ec71a..99091a019920ad06087ca16f42455b5ecfd1d791 100644 (file)
@@ -5481,6 +5481,7 @@ PRE(sys_ioctl)
    case VKI_TCXONC:
    case VKI_TCSBRKP:
    case VKI_TCFLSH:
+   case VKI_TIOCSIG:
       /* These just take an int by value */
       break;
    case VKI_TIOCGWINSZ:
@@ -8270,6 +8271,7 @@ POST(sys_ioctl)
    case VKI_TCXONC:
    case VKI_TCSBRKP:
    case VKI_TCFLSH:
+   case VKI_TIOCSIG:
       break;
    case VKI_TIOCGWINSZ:
       POST_MEM_WRITE( ARG3, sizeof(struct vki_winsize) );
index 2d81e3f8ea76bd31d063c16256898f7aa11fe662..9dadf585ab21ca4723b86625aa090527ded32082 100644 (file)
@@ -2955,6 +2955,10 @@ struct vki_getcpu_cache {
 #define VKI_FIOQSIZE 0x5460     /* Value differs on some platforms */
 #endif
 
+#ifndef VKI_TIOCSIG
+#define VKI_TIOCSIG _VKI_IOW('T', 0x36, int) /* Value differs on some platforms */
+#endif
+
 //----------------------------------------------------------------------
 // From kernel/common/include/linux/ashmem.h
 //----------------------------------------------------------------------
index 9755f5c21cfce5392cfac2ca00f44bd3deb54e25..d8a7d4d94184e42bb13fd67f491fa01986088ee9 100644 (file)
@@ -6,6 +6,7 @@ dist_noinst_SCRIPTS = filter_stderr
 EXTRA_DIST = \
        brk.stderr.exp brk.vgtest \
        capget.vgtest capget.stderr.exp capget.stderr.exp2 \
+       ioctl-tiocsig.vgtest ioctl-tiocsig.stderr.exp \
        lsframe1.vgtest lsframe1.stdout.exp lsframe1.stderr.exp \
        lsframe2.vgtest lsframe2.stdout.exp lsframe2.stderr.exp \
        rfcomm.vgtest rfcomm.stderr.exp \
@@ -24,6 +25,7 @@ EXTRA_DIST = \
 check_PROGRAMS = \
        brk \
        capget \
+       ioctl-tiocsig \
        getregset \
        lsframe1 \
        lsframe2 \
diff --git a/memcheck/tests/linux/ioctl-tiocsig.c b/memcheck/tests/linux/ioctl-tiocsig.c
new file mode 100644 (file)
index 0000000..1738066
--- /dev/null
@@ -0,0 +1,7 @@
+#include <sys/ioctl.h>
+
+int main()
+{
+   ioctl(9, TIOCSIG, 9);
+   return 0;
+}
diff --git a/memcheck/tests/linux/ioctl-tiocsig.stderr.exp b/memcheck/tests/linux/ioctl-tiocsig.stderr.exp
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/memcheck/tests/linux/ioctl-tiocsig.vgtest b/memcheck/tests/linux/ioctl-tiocsig.vgtest
new file mode 100644 (file)
index 0000000..2e75ad5
--- /dev/null
@@ -0,0 +1,2 @@
+prog: ioctl-tiocsig
+vgopts: -q