]> granicus.if.org Git - strace/commitdiff
tests: convert select.test from match_awk to match_diff
authorDmitry V. Levin <ldv@altlinux.org>
Thu, 27 Aug 2015 08:24:39 +0000 (08:24 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Thu, 27 Aug 2015 08:24:39 +0000 (08:24 +0000)
* tests/select.c (main): Print expected output.
* tests/select.test: Use match_diff instead of match_awk.
* tests/select.awk: Remove.
* tests/Makefile.am (EXTRA_DIST): Remove select.awk.

tests/Makefile.am
tests/select.awk [deleted file]
tests/select.c
tests/select.test

index 7b2986fb599e9567ff621dd66e3d31250fb31642..36bb5100699629462458084172caf3be6ff30e1d 100644 (file)
@@ -180,7 +180,6 @@ EXTRA_DIST = init.sh run.sh match.awk \
             readlinkat.awk \
             restart_syscall.expected \
             restart_syscall_unknown.expected \
-            select.awk \
             sigaction.awk \
             sigaltstack.expected \
             signalfd.expected \
diff --git a/tests/select.awk b/tests/select.awk
deleted file mode 100644 (file)
index 996d028..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-BEGIN {
-       r[1] = "^p?select6?\\(2, \\[0 1\\], \\[0 1\\], \\[0 1\\], NULL(, 0)?\\) += 1 \\(\\)$"
-       r[2] = "^p?select6?\\(-1, NULL, 0x[0-9a-f]+, NULL, NULL(, 0)?\\) += -1 "
-       r[3] = "^p?select6?\\(1025, \\[0\\], \\[\\], NULL, \\{0, 100(000)?\\}(, 0)?\\) += 0 \\(Timeout\\)$"
-       s[4] = "+++ exited with 0 +++"
-
-       lines = 4
-       fail = 0
-}
-
-@include "match.awk"
index 4ed644d8651954d52c074fbf1b53d1177907a917..d345add2a3533d8af0caea69a2b90feecd34e5de 100644 (file)
@@ -2,42 +2,65 @@
  * Based on test by Dr. David Alan Gilbert <dave@treblig.org>
  */
 #include <assert.h>
+#include <stdio.h>
+#include <string.h>
 #include <unistd.h>
 #include <sys/select.h>
 
 static fd_set set[0x1000000 / sizeof(fd_set)];
 
-int main()
+int main(int ac, char **av)
 {
        int fds[2];
        struct timeval timeout = { .tv_sec = 0, .tv_usec = 100 };
+       int is_select = ac < 2 || strcmp(av[1], "pselect6");
 
-       (void) close(0);
-       (void) close(1);
        assert(pipe(fds) == 0);
 
        /*
         * Start with a nice simple select.
         */
        FD_ZERO(set);
-       FD_SET(0, set);
-       FD_SET(1, set);
-       assert(select(2, set, set, set, NULL) == 1);
+       FD_SET(fds[0], set);
+       FD_SET(fds[1], set);
+       assert(select(fds[1] + 1, set, set, set, NULL) == 1);
+       if (is_select)
+               printf("select(%d, [%d %d], [%d %d], [%d %d], NULL) = 1 ()\n",
+                      fds[1] + 1, fds[0], fds[1],
+                      fds[0], fds[1], fds[0], fds[1]);
+       else
+               printf("pselect6(%d, [%d %d], [%d %d], [%d %d], NULL, NULL) "
+                      "= 1 ()\n",
+                      fds[1] + 1, fds[0], fds[1],
+                      fds[0], fds[1], fds[0], fds[1]);
 
        /*
         * Now the crash case that trinity found, negative nfds
         * but with a pointer to a large chunk of valid memory.
         */
        FD_ZERO(set);
-       FD_SET(1,set);
+       FD_SET(fds[1],set);
        assert(select(-1, NULL, set, NULL, NULL) == -1);
+       if (is_select)
+               printf("select(-1, NULL, %p, NULL, NULL) "
+                      "= -1 EINVAL (Invalid argument)\n", set);
+       else
+               printf("pselect6(-1, NULL, %p, NULL, NULL, NULL) "
+                      "= -1 EINVAL (Invalid argument)\n", set);
 
        /*
         * Another variant, with nfds exceeding FD_SETSIZE limit.
         */
        FD_ZERO(set);
-       FD_SET(0,set);
+       FD_SET(fds[0],set);
        assert(select(FD_SETSIZE + 1, set, set + 1, NULL, &timeout) == 0);
+       if (is_select)
+               printf("select(%d, [%d], [], NULL, {0, 100}) = 0 (Timeout)\n",
+                      FD_SETSIZE + 1, fds[0]);
+       else
+               printf("pselect6(%d, [%d], [], NULL, {0, 100000}, NULL) "
+                      "= 0 (Timeout)\n", FD_SETSIZE + 1, fds[0]);
 
+       puts("+++ exited with 0 +++");
        return 0;
 }
index 52b9f170fab750a2eebb6b75d55050f6cc1c253e..846f9be1b320b98aa54f879cbf1b5d6e433209f3 100755 (executable)
@@ -1,17 +1,23 @@
 #!/bin/sh
 
-# Check select syscall decoding.
+# Check select/pselect6 syscall decoding.
 
 . "${srcdir=.}/init.sh"
 
-syscall=
-$STRACE -epselect6 -h > /dev/null && syscall=$syscall,pselect6
-$STRACE -eselect -h > /dev/null && syscall=$syscall,select
-test -n "$syscall" ||
-       fail_ 'neither select not pselect6 syscall is supported on this architecture'
+exe="./${ME_%.test}"
+syscall=select
+run_prog "$exe" $syscall > /dev/null
+run_strace $args > /dev/null
 
-run_prog
-run_strace -e$syscall $args
-match_awk
+check_prog grep
+if LC_ALL=C grep -x "pselect6(.*" "$LOG" > /dev/null; then
+       syscall=pselect6
+       run_prog "$exe" $syscall > /dev/null
+fi
+
+OUT="$LOG.out"
+run_strace -a36 -e$syscall $args > "$OUT"
+match_diff "$OUT" "$LOG"
+rm -f "$OUT"
 
 exit 0