From: Dmitry V. Levin Date: Sat, 1 Aug 2015 23:04:32 +0000 (+0000) Subject: epoll_create1: fix flags decoding X-Git-Tag: v4.11~297 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bf62c1b52db799335a13fa56db363ab5d94d44fa;p=strace epoll_create1: fix flags decoding * 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. --- diff --git a/tests/.gitignore b/tests/.gitignore index 9b73a955..ee71e788 100644 --- a/tests/.gitignore +++ b/tests/.gitignore @@ -1,5 +1,6 @@ bpf caps +epoll_create1 eventfd execve execveat diff --git a/tests/Makefile.am b/tests/Makefile.am index dc76ddda..180f4739 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -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 index 00000000..a165d65d --- /dev/null +++ b/tests/epoll_create1.c @@ -0,0 +1,20 @@ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include + +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 index 00000000..0e82f61e --- /dev/null +++ b/tests/epoll_create1.expected @@ -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 index 00000000..fa93a2b3 --- /dev/null +++ b/tests/epoll_create1.test @@ -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 diff --git a/xlat/epollflags.in b/xlat/epollflags.in index a5ab4d06..4f6b192f 100644 --- a/xlat/epollflags.in +++ b/xlat/epollflags.in @@ -1,2 +1 @@ -EPOLL_CLOEXEC -EPOLL_NONBLOCK +EPOLL_CLOEXEC O_CLOEXEC