#!/bin/sh -efu # Check decoding of return values injected into a syscall that "never fails". . "${srcdir=.}/scno_tampering.sh" case "$STRACE_ARCH" in alpha) SYSCALL=getpgrp ;; *) SYSCALL=getpid ;; esac run_prog prog="$args" fault_args="-a9 -e trace=${SYSCALL} -e inject=${SYSCALL}:retval=" test_rval() { local rval rval="$1"; shift run_strace $fault_args$rval $prog $rval > "$EXP" match_diff "$LOG" "$EXP" } test_rval 0 test_rval 1 test_rval 0x7fffffff test_rval 0x80000000 test_rval 0xfffff000 test_rval 0xfffffffe test_rval 0xffffffff case "$SIZEOF_KERNEL_LONG_T" in 8) test_rval 0x80000000 test_rval 0xfffff000 test_rval 0xfffffffe test_rval 0xffffffff test_rval 0x100000000 test_rval 0x7fffffffffffffff test_rval 0x8000000000000000 test_rval 0xfffffffffffff000 test_rval 0xfffffffffffffffe test_rval 0xffffffffffffffff ;; esac