kill -0 $$
run_prog ../attach-f-p-cmd > /dev/null
-rm -f "$OUT"
-../set_ptracer_any sh -c "exec ../attach-f-p >> $OUT" > /dev/null &
+../set_ptracer_any sh -c "exec ../attach-f-p >> $EXP" > /dev/null &
tracee_pid=$!
-while ! [ -s "$OUT" ]; do
+while ! [ -s "$EXP" ]; do
kill -0 $tracee_pid 2> /dev/null ||
fail_ 'set_ptracer_any sh failed'
done
-run_strace -a32 -f -echdir -p $tracee_pid ../attach-f-p-cmd > "$OUT"
-match_diff "$LOG" "$OUT"
-rm -f "$OUT"
+run_strace -a32 -f -echdir -p $tracee_pid ../attach-f-p-cmd > "$EXP"
+match_diff "$LOG" "$EXP"
run_prog_skip_if_failed \
kill -0 $$
-rm -rf attach-p-cmd.test-lock
-rm -f "$OUT"
-../set_ptracer_any ../attach-p-cmd-p >> "$OUT" &
+../set_ptracer_any ../attach-p-cmd-p >> "$EXP" &
tracee_pid=$!
-while ! [ -s "$OUT" ]; do
+while ! [ -s "$EXP" ]; do
kill -0 $tracee_pid 2> /dev/null ||
fail_ 'set_ptracer_any ../attach-p-cmd-p failed'
done
-run_strace -a30 -echdir -p $tracee_pid ../attach-p-cmd-cmd > "$OUT"
-match_diff "$LOG" "$OUT"
-rm -f "$OUT"
+run_strace -a30 -echdir -p $tracee_pid ../attach-p-cmd-cmd > "$EXP"
+match_diff "$LOG" "$EXP"
run_prog > /dev/null
run_strace -a10 -ebrk $args > "$EXP"
match_grep "$LOG" "$EXP"
-rm -f "$EXP"
. "${srcdir=.}/init.sh"
+check_prog grep
run_prog ../btrfs -v > /dev/null
run_strace -a16 -veioctl $args > "$EXP"
-check_prog grep
grep -v '^ioctl([012],' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
skip_ "\$BTRFS_MOUNTPOINT does not point to a directory"
fi
+check_prog grep
run_prog ../btrfs -v -w "${BTRFS_MOUNTPOINT}" > /dev/null
run_strace -a16 -veioctl $args > "$EXP"
-check_prog grep
grep -v '^ioctl([012],' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
skip_ "\$BTRFS_MOUNTPOINT does not point to a directory"
fi
+check_prog grep
run_prog ../btrfs -w "${BTRFS_MOUNTPOINT}" > /dev/null
run_strace -a16 -eioctl $args > "$EXP"
-check_prog grep
grep -v '^ioctl([012],' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
return 0
}
-rm -f "$LOG"
$STRACE -p $tracee_pid 2> "$LOG" &
while ! grep -F "Process $tracee_pid attached" "$LOG" > /dev/null; do
set -e
-rm -f "$LOG"
../set_ptracer_any sleep $((2*$TIMEOUT_DURATION)) > "$LOG" &
while ! [ -s "$LOG" ]; do
return 0
}
-rm -f "$LOG"
$STRACE -p $tracee_pid 2> "$LOG" &
while ! grep -F "Process $tracee_pid attached" "$LOG" > /dev/null; do
set -e
-rm -f "$LOG"
+> "$LOG"
../set_ptracer_any sleep $((2*$TIMEOUT_DURATION)) > "$LOG" &
while ! [ -s "$LOG" ]; do
return 0
}
-rm -f "$LOG"
+> "$LOG"
$STRACE -p $tracee_pid 2> "$LOG" &
while ! grep -F "Process $tracee_pid attached" "$LOG" > /dev/null; do
# Filter out execve() call made by strace.
grep -F test.execve < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
# Filter out execve() call made by strace.
grep -F test.execve < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
check_prog grep
grep -v "^$NAME([0123]," < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
run_prog > /dev/null
sample=$syscall.sample
> "$sample"
-run_strace -ve$syscall -P$sample -a21 $args > "$OUT"
-match_diff "$LOG" "$OUT"
-rm -f "$OUT"
-
-exit 0
+run_strace -ve$syscall -P$sample -a21 $args > "$EXP"
+match_diff "$LOG" "$EXP"
. "${srcdir=.}/init.sh"
-rm -rf -- "$LOG".dir
run_strace_match_diff -a22 -v
. "${srcdir=.}/init.sh"
-rm -rf -- "$LOG".dir
run_strace_match_diff -a24 -v
run_strace -qq -a9 -e$NAME $args > "$EXP"
uniq < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-rm -f "$OUT" "$EXP"
run_prog > /dev/null
run_strace "$@" $args > "$EXP"
match_diff "$LOG" "$EXP"
- rm -f "$EXP"
}
# Print kernel version code.
. "${srcdir=.}/init.sh"
+check_prog grep
run_prog > /dev/null
run_strace -a16 -eioctl $args > "$EXP"
-check_prog grep
grep -v '^ioctl([012],' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
. "${srcdir=.}/init.sh"
+check_prog grep
run_prog > /dev/null
run_strace -a16 -s9 -veioctl $args > "$EXP"
-check_prog grep
grep -v '^ioctl([012],' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
. "${srcdir=.}/init.sh"
+check_prog grep
run_prog > /dev/null
run_strace -a16 -s9 -eioctl $args > "$EXP"
-check_prog grep
grep -v '^ioctl([012],' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
. "${srcdir=.}/init.sh"
+check_prog grep
run_prog > /dev/null
run_strace -a16 -veioctl $args > "$EXP"
-check_prog grep
grep -v '^ioctl([012],' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
. "${srcdir=.}/init.sh"
+check_prog grep
run_prog > /dev/null
run_strace -a22 -eioctl -e verbose=none $args > "$EXP"
-check_prog grep
grep -v '^ioctl([012],' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
. "${srcdir=.}/init.sh"
+check_prog grep
run_prog > /dev/null
run_strace -a22 -v -eioctl $args > "$EXP"
-check_prog grep
grep -v '^ioctl([012],' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
. "${srcdir=.}/init.sh"
+check_prog grep
run_prog > /dev/null
run_strace -a22 -eioctl $args > "$EXP"
-check_prog grep
grep -v '^ioctl([012],' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
. "${srcdir=.}/init.sh"
+check_prog grep
run_prog > /dev/null
run_strace -a16 -veioctl $args > "$EXP"
-check_prog grep
grep -v '^ioctl([012],' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
. "${srcdir=.}/init.sh"
+check_prog grep
run_prog > /dev/null
run_strace -a28 -s1 -eioctl $args > "$EXP"
-check_prog grep
grep -v '^ioctl([012],' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
. "${srcdir=.}/init.sh"
run_prog > /dev/null
-run_strace -eipc $args > "$OUT"
-match_grep "$LOG" "$OUT"
-
-rm -f "$OUT"
+run_strace -eipc $args > "$EXP"
+match_grep "$LOG" "$EXP"
exit 0
run_strace -e_llseek $args > "$EXP"
grep -v '^lseek([0-9]' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
run_strace -a30 -elseek $args > "$EXP"
grep -v '^lseek([0-9]' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
run_strace -a20 -e$syscall $args > "$EXP"
sed -n "/^$mmap(NULL, 0, PROT_NONE,/,\$p" < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
check_prog sed
run_prog "../$NAME" > /dev/null
-
run_strace -a20 -y -eclose,network $args > "$EXP"
+
# Filter out close() calls made by ld.so and libc.
sed -n '/socket/,$p' < "$LOG" > "$OUT"
-
match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
framework_skip_ '/proc/self/fd/ is not available'
check_prog sed
-run_prog ../netlink_inet_diag
+run_prog ../netlink_inet_diag
run_prog "../$NAME" > /dev/null
-
run_strace -a22 -yy -eclose,network $args > "$EXP"
+
# Filter out close() calls made by ld.so and libc.
sed -n '/socket/,$p' < "$LOG" > "$OUT"
-
match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
framework_skip_ '/proc/self/fd/ is not available'
check_prog sed
-run_prog ../netlink_netlink_diag
+run_prog ../netlink_netlink_diag
run_prog "../$NAME" > /dev/null
-
run_strace -a22 -yy -eclose,network $args > "$EXP"
+
# Filter out close() calls made by ld.so and libc.
sed -n '/socket/,$p' < "$LOG" > "$OUT"
-
match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
framework_skip_ '/proc/self/fd/ is not available'
check_prog sed
-run_prog ../netlink_unix_diag
+run_prog ../netlink_unix_diag
run_prog "../$NAME" > /dev/null
-
run_strace -a22 -yy -eclose,network $args > "$EXP"
+
# Filter out close() calls made by ld.so and libc.
sed -n '/socket/,$p' < "$LOG" > "$OUT"
-
match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
run_prog grep chdir $srcdir/umovestr.expected > "$EXP"
run_prog ../umovestr
-> "$LOG" || fail_ "failed to write $LOG"
$STRACE -o "|cat > $LOG && $SLEEP_A_BIT && grep chdir < $LOG > $OUT" -e chdir $args ||
dump_log_and_fail_with "$STRACE $args failed"
match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
[ -z "$args" ] ||
dump_log_and_fail_with \
"strace $args failed to print expected diagnostics"
-
-rm -f "$EXP"
[ -n "$addr" ] ||
dump_log_and_fail_with
-EXPECTED="$LOG.expected"
-cat > "$EXPECTED" << __EOF__
+cat > "$EXP" << __EOF__
\\[[[:xdigit:]]{$len}\\] munmap\\(0x[[:xdigit:]]+, 0\\) += -1 .*
\\[pid +$pid\\] \\[$ip\\] --- SIGSEGV \\{si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x$addr\\} ---
\\[pid +$pid\\] \\[\\?{$len}\\] \\+\\+\\+ killed by SIGSEGV( \\(core dumped\\))? \\+\\+\\+
\\[\\?{$len}\\] \\+\\+\\+ exited with 0 \\+\\+\\+
__EOF__
-match_grep "$LOG" "$EXPECTED"
-rm -f "$EXPECTED"
-
-exit 0
+match_grep "$LOG" "$EXP"
. "${srcdir=.}/init.sh"
run_prog > /dev/null
-run_strace -a20 -epersonality $args > "$OUT"
-match_grep "$LOG" "$OUT"
-rm -f "$OUT"
-
-exit 0
+run_strace -a20 -epersonality $args > "$EXP"
+match_grep "$LOG" "$EXP"
. "${srcdir=.}/init.sh"
run_prog > /dev/null
-run_strace -a16 -vepoll $args > "$OUT"
-match_diff "$LOG" "$OUT"
+run_strace -a16 -vepoll $args > "$EXP"
+match_diff "$LOG" "$EXP"
for abbrev in 0 1 2 3 4 5; do
run_prog "../$NAME" $abbrev > /dev/null
- run_strace -a16 -epoll -s$abbrev $args > "$OUT"
- match_diff "$LOG" "$OUT"
+ run_strace -a16 -epoll -s$abbrev $args > "$EXP"
+ match_diff "$LOG" "$EXP"
done
-
-rm -f "$OUT"
LC_ALL=C grep -Ev '^prctl\(PR_[GS]ET_([^CEF]|.[^HNP]|..[^DEI])' \
< "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
run_strace -a23 -eprctl $args > "$EXP"
grep -v '^prctl(PR_[GS]ET_[^D][^U]' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
run_strace -a23 -eprctl $args > "$EXP"
grep -v '^prctl(PR_GET_[^N][^A]' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
run_strace -a21 -eprctl $args > "$EXP"
grep -v '^prctl(PR_[GS]ET_[^KST][^EI][^CEM]' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
run_strace -a30 -eprctl $args > "$EXP"
grep -v '^prctl(PR_[GS]ET_[^P][^D]' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
run_strace -v -eprctl $args > "$EXP"
grep -v '^prctl(PR_GET_' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
run_strace -eprctl "$@" > "$EXP"
grep -v '^prctl(PR_GET_' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
run_strace -a25 -eprctl $args > "$EXP"
grep -v '^prctl(PR_[GS]ET_[^S][^E][^C][^U]' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
run_strace -a23 -eprctl $args > "$EXP"
LC_ALL=C grep -Ev '^prctl\(PR_[GS]ET_([^T]|.[^I]|..[^D])' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
run_strace -a24 -eprctl $args > "$EXP"
grep -v '^prctl(PR_[GS]ET_[^T][^S]' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
framework_skip_ '/proc/self/fd/ is not available'
tmpfile=pread64-pwrite64-tmpfile
-> $tmpfile
run_strace_match_diff \
-a21 -eread=0 -ewrite=1 -e trace=pread64,pwrite64 \
-P $tmpfile -P /dev/zero -P /dev/null
-
-rm -f $tmpfile
match_diff "$EXP" "$LOG"
match_diff "$outexp" "$outgot"
- rm -f "$EXP" "$outexp" "$outgot"
}
for err in '' ENOSYS 22 einval; do
run_strace -a12 -e$syscall -einject="$syscall:retval=$rval" "$@" \
../qual_inject-retval "$rval" > "$EXP"
match_diff "$LOG" "$EXP"
- rm -f "$EXP"
}
check_injection 0
run_prog "../$NAME" "$@" > /dev/null
run_strace -e trace=none -e signal="$sigs" "../$NAME" "$@" > "$EXP"
match_diff "$LOG" "$EXP"
- rm -f "$EXP"
}
test_sigs()
framework_skip_ '/proc/self/fd/ is not available'
tmpfile=read-write-tmpfile
-> $tmpfile
run_strace_match_diff \
-a15 -eread=0 -ewrite=1 -e trace=read,write \
-P $tmpfile -P /dev/zero -P /dev/null
-
-rm -f $tmpfile
. "${srcdir=.}/init.sh"
-rm -rf -- "$LOG".dir
run_strace_match_diff -a16
a2="$2"
a3="$3"
+ rm -f "$LOG" "$fd0" "$fd1" "$fd2"
touch "$LOG" "$fd0" ||
framework_skip_ 'failed to create files'
set -- "$STRACE" -o"$LOG" -echdir "$@"
eval "$@" "<${a1:-&-}" ">${a2:-&-}" "2>${a3:-&-}" ||
dump_log_and_fail_with "$* failed with code $?"
-
- rm -f "$LOG" "$fd0" "$fd1" "$fd2"
}
check_fd "$fd0" "$fd1" "$fd2"
if [ -s "$OUT" ]; then
fail_ "$STRACE failed to redirect standard output"
fi
-
-rm -f -- "$OUT"
run_prog > /dev/null
syscalls=nanosleep,restart_syscall
-run_strace -a20 -e trace=$syscalls $args > "$OUT"
-match_grep "$LOG" "$OUT"
-rm -f "$OUT"
-
-exit 0
+run_strace -a20 -e trace=$syscalls $args > "$EXP"
+match_grep "$LOG" "$EXP"
run_strace -qq -esignal=none -e%sched ../$s > /dev/null
match_diff "$LOG" /dev/null
} < /dev/null; done < negative.list
-
-rm "$EXP"
framework_skip_ '/proc/self/fd/ is not available'
check_prog mkdir
-check_prog rm
check_prog seq
check_prog touch
-dir="$LOG.dir"
-rm -rf -- "$dir"
-mkdir -- "$dir" ||
+mkdir dir ||
framework_skip_ 'failed to create a directory'
-file="$dir/$(for i in $(seq 1 127); do echo A; done; echo Z)"
+file="dir/$(for i in $(seq 1 127); do echo A; done; echo Z)"
touch -- "$file" ||
framework_skip_ 'failed to create a file'
rights='\{cmsg_len='"$n"', cmsg_level=SOL_SOCKET, cmsg_type=SCM_RIGHTS, cmsg_data='"$rights_data"'\}'
creds='\{cmsg_len='"$n"', cmsg_level=SOL_SOCKET, cmsg_type=SCM_CREDENTIALS, cmsg_data='"$ids"'\}'
-EXPECTED="$LOG.expected"
-
-cat > "$EXPECTED" << __EOF__
+cat > "$EXP" << __EOF__
sendmsg\\(3$socket, $msg_head\\[$rights\\]$msg_tail\\}, 0\\) = 15
recvmsg\\(0$socket, $msg_head\\[$creds, $rights\\]$msg_tail\\}, 0\\) = 15
__EOF__
-match_grep "$LOG" "$EXPECTED"
-rm -f "$EXPECTED"
-rm -rf -- "$dir"
-
-exit 0
+match_grep "$LOG" "$EXP"
}
run_strace -eseccomp "$@" > "$EXP"
match_diff "$LOG" "$EXP"
-rm -f "$EXP"
c='[[:space:]]+([^[:space:]]+)'
test_c calls '-n -r' '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'[[:space:]].*/\4/p'
test_c name '' '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'([[:space:]]+[0-9]+)?'"$c"'$/\6/p'
-
-rm -f "$OUT"
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
__EOF__
-match_diff "$EXP" "$LOG"
-rm -f "$EXP"
+match_diff "$LOG" "$EXP"
fail_ 'set_ptracer_any sleep failed'
done
-rm -f "$LOG".*
run_strace -a14 -eexit_group -ff -p $tracee_pid
# check that output matches
set -- "$LOG".*
[ "$LOG.$tracee_pid" = "$*" ] ||
fail_ "too many output files: $*"
-
-rm -f "$OUT" "$LOG.$tracee_pid"
run_strace -t -eexecve $args
t1="$(date +%T)"
-EXPECTED="$LOG.expected"
-cat > "$EXPECTED" << __EOF__
+cat > "$EXP" << __EOF__
($t0|$t1) execve\\("\\.\\./sleep", \\["\\.\\./sleep", "0"\\], \\[/\\* [[:digit:]]+ vars \\*/\\]\\) = 0
__EOF__
-match_grep "$LOG" "$EXPECTED"
-rm -f "$EXPECTED"
+match_grep "$LOG" "$EXP"
__EOF__
match_grep "$LOG" "$EXP"
-rm -f "$EXP"
__EOF__
match_grep "$LOG" "$EXP"
-rm -f "$EXP"
while [ $i -le 9 ]; do
run_strace "$@" > "$EXP"
diff -- "$EXP" "$LOG" || continue
- rm -f "$EXP"
exit 0
done
check_prog sed
sed 1d < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
uniq < "$LOG" >> "$OUT"
match_diff "$OUT" "$EXP"
-rm -f "$OUT" "$EXP"
. "${srcdir=.}/init.sh"
run_prog > /dev/null
-run_strace -e utimensat $args > "$OUT"
+run_strace -e $NAME $args > "$EXP"
check_prog grep
-LC_ALL=C grep -x "utimensat(.*" "$LOG" > /dev/null || {
- rm -f "$OUT"
- skip_ 'test executable does not use utimensat syscall'
-}
+LC_ALL=C grep -x "$NAME(.*" "$LOG" > /dev/null ||
+ skip_ "../$NAME executable does not use $NAME syscall"
-match_diff "$LOG" "$OUT"
-
-rm -f "$OUT"
-
-exit 0
+match_diff "$LOG" "$EXP"