1cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin#!/bin/sh
2cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin
3cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin# Check how pread/pwrite and preadv/pwritev syscalls are traced.
4cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin
5cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin. "${srcdir=.}/init.sh"
6cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin
7cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levincheck_prog grep
8cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levincheck_prog rm
9cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin
10cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin./uio ||
11cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin	fail_ 'uio failed'
12cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin
13cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levinargs="-edesc ./uio"
14cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin$STRACE $args > $LOG 2>&1 || {
15cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin	cat $LOG
16cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin	fail_ "$STRACE $args failed"
17cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin}
18cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin
19cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levingrep_log()
20cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin{
21cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin	local syscall="$1"; shift
22cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin
23cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin	LC_ALL=C grep -E -x "$syscall$*" $LOG > /dev/null || {
24cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin		cat $LOG
25cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin		fail_ "$STRACE $args failed to trace \"$syscall\" properly"
26cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin	}
27cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin}
28cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin
29cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levingrep_log 'pread(64)?' '\(3, "\\0\\0\\0\\0", 4, 1004211379570065135\) += 4'
30cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levingrep_log 'preadv' '\(3, \[{"\\0\\0\\0\\0", 4}\], 1, 1004211379570065135\) += 4'
31cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levingrep_log 'pwrite(64)?' '\(3, "\\0\\0\\0\\0", 4, 1004211379570065135\) += 4'
32cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levingrep_log 'pwritev' '\(3, \[{"\\0\\0\\0\\0", 4}\], 1, 1004211379570065135\) += 4'
33cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levin
34cc3d59199d80588a53ee353da5d69726bd093c51Dmitry V. Levinexit 0
35