]> granicus.if.org Git - strace/commitdiff
epoll_create1: fix flags decoding
authorDmitry V. Levin <ldv@altlinux.org>
Sat, 1 Aug 2015 23:04:32 +0000 (23:04 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Sun, 2 Aug 2015 00:10:48 +0000 (00:10 +0000)
* xlat/epollflags.in: Remove EPOLL_NONBLOCK, provide fallback definition
for EPOLL_CLOEXEC.
* tests/epoll_create1.c: New file.
* tests/epoll_create1.expected: Likewise.
* tests/epoll_create1.test: New test.
* tests/Makefile.am (check_PROGRAMS): Add epoll_create1.
(TESTS): Add epoll_create1.test.
(EXTRA_DIST): Add epoll_create1.expected.
* tests/.gitignore: Add epoll_create1.

tests/.gitignore
tests/Makefile.am
tests/epoll_create1.c [new file with mode: 0644]
tests/epoll_create1.expected [new file with mode: 0644]
tests/epoll_create1.test [new file with mode: 0755]
xlat/epollflags.in

index 9b73a955ea3d28b7dd9a95512105deaba199d222..ee71e788c84c15b25d1fe31f69d7b811c1188e3a 100644 (file)
@@ -1,5 +1,6 @@
 bpf
 caps
+epoll_create1
 eventfd
 execve
 execveat
index dc76ddda91141789acd76ad48f5144ad054be59d..180f473916aa97b3cb64a9569948a644ffdbd736 100644 (file)
@@ -11,6 +11,7 @@ AM_CPPFLAGS = -I$(top_builddir)/$(OS)/$(ARCH) \
 check_PROGRAMS = \
        bpf \
        caps \
+       epoll_create1 \
        eventfd \
        execve \
        execveat \
@@ -72,6 +73,7 @@ TESTS = \
        bpf.test \
        caps.test \
        dumpio.test \
+       epoll_create1.test \
        eventfd.test \
        execve.test \
        execveat.test \
@@ -131,6 +133,7 @@ AM_TEST_LOG_FLAGS = STRACE_ARCH=$(ARCH) $(srcdir)/run.sh
 EXTRA_DIST = init.sh run.sh match.awk \
             caps.awk \
             dumpio.expected \
+            epoll_create1.expected \
             eventfd.expected \
             execve.expected \
             execve-v.expected \
diff --git a/tests/epoll_create1.c b/tests/epoll_create1.c
new file mode 100644 (file)
index 0000000..a165d65
--- /dev/null
@@ -0,0 +1,20 @@
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/syscall.h>
+
+int
+main(void)
+{
+#ifdef __NR_epoll_create1
+       (void) close(0);
+       if (syscall(__NR_epoll_create1, O_CLOEXEC))
+               return 77;
+       return syscall(__NR_epoll_create1, O_CLOEXEC | O_NONBLOCK) >= 0;
+#else
+        return 77;
+#endif
+}
diff --git a/tests/epoll_create1.expected b/tests/epoll_create1.expected
new file mode 100644 (file)
index 0000000..0e82f61
--- /dev/null
@@ -0,0 +1,2 @@
+epoll_create1\(EPOLL_CLOEXEC\) += 0
+epoll_create1\(EPOLL_CLOEXEC\|0x[[:xdigit:]]+\) += -1 EINVAL .*
diff --git a/tests/epoll_create1.test b/tests/epoll_create1.test
new file mode 100755 (executable)
index 0000000..fa93a2b
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# Check epoll_create1 syscall decoding.
+
+. "${srcdir=.}/init.sh"
+
+run_prog
+run_strace -e epoll_create1 $args
+match_grep
+
+exit 0
index a5ab4d062e9c8e52ec69e0971e80a1325795a56d..4f6b192f5f3f6149c48c3e034d3ed9f510d21b97 100644 (file)
@@ -1,2 +1 @@
-EPOLL_CLOEXEC
-EPOLL_NONBLOCK
+EPOLL_CLOEXEC  O_CLOEXEC