From: Mike Frysinger Date: Fri, 27 Feb 2015 06:39:25 +0000 (-0500) Subject: tests/ipc_sem: detect broken kernels X-Git-Tag: v4.10~47 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4ed340bae64c84897fa7e42f6142592ef899f0cd;p=strace tests/ipc_sem: detect broken kernels When running 32bit ipc tests on ppc/sparc with a 64bit kernel, the ipc logic wrongly returns errors. Detect that and throw an error. * tests/ipc_sem.c: Return 99 when errno is EFAULT. * tests/ipc_sem.test: Save output to $OUT and show it when failing. Handle exit status 99 to throw an ERROR. --- diff --git a/tests/ipc_sem.c b/tests/ipc_sem.c index 115221b9..3f2fbe7b 100644 --- a/tests/ipc_sem.c +++ b/tests/ipc_sem.c @@ -44,6 +44,6 @@ done: return rc; fail: - rc = 1; + rc = errno == EFAULT ? 99 : 1; goto done; } diff --git a/tests/ipc_sem.test b/tests/ipc_sem.test index df9a9bb8..f448b66e 100755 --- a/tests/ipc_sem.test +++ b/tests/ipc_sem.test @@ -8,15 +8,26 @@ check_prog grep OUT="$LOG.out" -./ipc_sem > /dev/null || { - if [ $? -eq 77 ]; then +./ipc_sem > "$OUT" || { + case $? in + 77) + rm -f "$OUT" framework_skip_ 'ipc semget/semctl syscalls do not behave as expected' - else + ;; + 99) + cat "$OUT" + rm -f "$OUT" + framework_failure_ 'broken kernel detected' + ;; + *) + cat "$OUT" + rm -f "$OUT" fail_ 'ipc_sem failed' - fi + ;; + esac } -args="-eipc ./ipc_sem $f" +args='-eipc ./ipc_sem' $STRACE -o "$LOG" $args > "$OUT" && LC_ALL=C grep -E -x -f "$OUT" "$LOG" > /dev/null || { cat "$OUT" "$LOG"