From 10a40757bf76c7a84894afcfa68fe69893b8b8de Mon Sep 17 00:00:00 2001 From: "Dmitry V. Levin" Date: Fri, 18 Sep 2015 21:45:36 +0000 Subject: [PATCH] tests: uncouple pselect6 from select.test * tests/select.c Do not include . Include . [!__NR_select]: Skip the test. (main): Remove pselect6 support, test just select syscall. * tests/select.test: Remove all pselect6 checks, test just select syscall. --- tests/select.c | 59 +++++++++++++++++++++++++---------------------- tests/select.test | 17 ++++---------- 2 files changed, 36 insertions(+), 40 deletions(-) diff --git a/tests/select.c b/tests/select.c index 86e80c52..db87704e 100644 --- a/tests/select.c +++ b/tests/select.c @@ -2,13 +2,23 @@ * Based on test by Dr. David Alan Gilbert */ #include -#include #include #include +#include + +#undef NR_select + +#if defined __NR__newselect +# define NR_select __NR__newselect +#elif defined __NR_select +# define NR_select __NR_select +#endif + +#ifdef NR_select static fd_set set[0x1000000 / sizeof(fd_set)]; -int main(int ac, char **av) +int main(void) { int fds[2]; struct { @@ -18,7 +28,6 @@ int main(int ac, char **av) .tv = { .tv_usec = 123 }, .pad = { 0xdeadbeef, 0xbadc0ded } }; - int is_select = ac < 2 || strcmp(av[1], "pselect6"); if (pipe(fds)) return 77; @@ -29,17 +38,11 @@ int main(int ac, char **av) FD_ZERO(set); FD_SET(fds[0], set); FD_SET(fds[1], set); - if (select(fds[1] + 1, set, set, set, NULL) != 1) + if (syscall(NR_select, fds[1] + 1, set, set, set, NULL) != 1) return 77; - 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]); + 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]); /* * Now the crash case that trinity found, negative nfds @@ -47,29 +50,31 @@ int main(int ac, char **av) */ FD_ZERO(set); FD_SET(fds[1],set); - if (select(-1, NULL, set, NULL, NULL) != -1) + if (syscall(NR_select, -1, NULL, set, NULL, NULL) != -1) return 77; - 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); + printf("select(-1, NULL, %p, NULL, NULL) " + "= -1 EINVAL (Invalid argument)\n", set); /* * Another variant, with nfds exceeding FD_SETSIZE limit. */ FD_ZERO(set); FD_SET(fds[0],set); - if (select(FD_SETSIZE + 1, set, set + 1, NULL, &tm.tv)) + if (syscall(NR_select, FD_SETSIZE + 1, set, set + 1, NULL, &tm.tv)) return 77; - if (is_select) - printf("select(%d, [%d], [], NULL, {0, 123}) = 0 (Timeout)\n", - FD_SETSIZE + 1, fds[0]); - else - printf("pselect6(%d, [%d], [], NULL, {0, 123000}, NULL) " - "= 0 (Timeout)\n", FD_SETSIZE + 1, fds[0]); + printf("select(%d, [%d], [], NULL, {0, 123}) = 0 (Timeout)\n", + FD_SETSIZE + 1, fds[0]); puts("+++ exited with 0 +++"); return 0; } + +#else + +int +main(void) +{ + return 77; +} + +#endif diff --git a/tests/select.test b/tests/select.test index 846f9be1..74a78d97 100755 --- a/tests/select.test +++ b/tests/select.test @@ -1,23 +1,14 @@ #!/bin/sh -# Check select/pselect6 syscall decoding. +# Check select syscall decoding. . "${srcdir=.}/init.sh" -exe="./${ME_%.test}" -syscall=select -run_prog "$exe" $syscall > /dev/null -run_strace $args > /dev/null - -check_prog grep -if LC_ALL=C grep -x "pselect6(.*" "$LOG" > /dev/null; then - syscall=pselect6 - run_prog "$exe" $syscall > /dev/null -fi - +run_prog > /dev/null OUT="$LOG.out" -run_strace -a36 -e$syscall $args > "$OUT" +run_strace -a36 -eselect $args > "$OUT" match_diff "$OUT" "$LOG" + rm -f "$OUT" exit 0 -- 2.40.0