1*cf84ac9aSAndroid Build Coastguard Worker#!/bin/sh 2*cf84ac9aSAndroid Build Coastguard Worker# 3*cf84ac9aSAndroid Build Coastguard Worker# Check decoding and dumping of readv and writev syscalls. 4*cf84ac9aSAndroid Build Coastguard Worker# 5*cf84ac9aSAndroid Build Coastguard Worker# Copyright (c) 2016 Dmitry V. Levin <[email protected]> 6*cf84ac9aSAndroid Build Coastguard Worker# Copyright (c) 2016-2017 The strace developers. 7*cf84ac9aSAndroid Build Coastguard Worker# All rights reserved. 8*cf84ac9aSAndroid Build Coastguard Worker# 9*cf84ac9aSAndroid Build Coastguard Worker# Redistribution and use in source and binary forms, with or without 10*cf84ac9aSAndroid Build Coastguard Worker# modification, are permitted provided that the following conditions 11*cf84ac9aSAndroid Build Coastguard Worker# are met: 12*cf84ac9aSAndroid Build Coastguard Worker# 1. Redistributions of source code must retain the above copyright 13*cf84ac9aSAndroid Build Coastguard Worker# notice, this list of conditions and the following disclaimer. 14*cf84ac9aSAndroid Build Coastguard Worker# 2. Redistributions in binary form must reproduce the above copyright 15*cf84ac9aSAndroid Build Coastguard Worker# notice, this list of conditions and the following disclaimer in the 16*cf84ac9aSAndroid Build Coastguard Worker# documentation and/or other materials provided with the distribution. 17*cf84ac9aSAndroid Build Coastguard Worker# 3. The name of the author may not be used to endorse or promote products 18*cf84ac9aSAndroid Build Coastguard Worker# derived from this software without specific prior written permission. 19*cf84ac9aSAndroid Build Coastguard Worker# 20*cf84ac9aSAndroid Build Coastguard Worker# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 21*cf84ac9aSAndroid Build Coastguard Worker# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 22*cf84ac9aSAndroid Build Coastguard Worker# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 23*cf84ac9aSAndroid Build Coastguard Worker# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 24*cf84ac9aSAndroid Build Coastguard Worker# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 25*cf84ac9aSAndroid Build Coastguard Worker# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26*cf84ac9aSAndroid Build Coastguard Worker# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27*cf84ac9aSAndroid Build Coastguard Worker# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28*cf84ac9aSAndroid Build Coastguard Worker# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 29*cf84ac9aSAndroid Build Coastguard Worker# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30*cf84ac9aSAndroid Build Coastguard Worker 31*cf84ac9aSAndroid Build Coastguard Worker. "${srcdir=.}/init.sh" 32*cf84ac9aSAndroid Build Coastguard Worker 33*cf84ac9aSAndroid Build Coastguard Workerrun_strace_match_diff -a16 -e trace=readv,writev \ 34*cf84ac9aSAndroid Build Coastguard Worker -eread=all -ewrite='!none' 35*cf84ac9aSAndroid Build Coastguard Workerrun_strace_match_diff -a16 -e trace=readv,writev \ 36*cf84ac9aSAndroid Build Coastguard Worker -eread='!none' -ewrite=all 37*cf84ac9aSAndroid Build Coastguard Workerrun_strace_match_diff -a16 -e trace=readv,writev \ 38*cf84ac9aSAndroid Build Coastguard Worker -eread=none -ewrite='!all' -eread='!0,1,2' -ewrite='!0,1,2' 39*cf84ac9aSAndroid Build Coastguard Workerrun_strace_match_diff -a16 -e trace=readv,writev \ 40*cf84ac9aSAndroid Build Coastguard Worker -eread='!all' -ewrite=none -eread='!0,1,2' -ewrite='!0,1,2' 41*cf84ac9aSAndroid Build Coastguard Worker 42*cf84ac9aSAndroid Build Coastguard Workerwfd="$(../print_maxfd)" 43*cf84ac9aSAndroid Build Coastguard Workerrfd="$(($wfd - 1))" 44*cf84ac9aSAndroid Build Coastguard Workerrun_strace_match_diff -a16 -e trace=readv,writev \ 45*cf84ac9aSAndroid Build Coastguard Worker -eread="$rfd" -ewrite="$wfd" 46*cf84ac9aSAndroid Build Coastguard Workerrun_strace_match_diff -a16 -e trace=readv,writev \ 47*cf84ac9aSAndroid Build Coastguard Worker -eread="!$rfd" -ewrite="!$wfd" -eread="$rfd" -ewrite="$wfd" 48*cf84ac9aSAndroid Build Coastguard Worker 49*cf84ac9aSAndroid Build Coastguard Workerrfds='!!!0' 50*cf84ac9aSAndroid Build Coastguard Worker[ $rfd -lt 1023 ] || rfd=1023 51*cf84ac9aSAndroid Build Coastguard Workeri=0 52*cf84ac9aSAndroid Build Coastguard Workerwhile [ $i -lt $rfd ]; do 53*cf84ac9aSAndroid Build Coastguard Worker rfds="$rfds,$i" 54*cf84ac9aSAndroid Build Coastguard Worker i=$(($i + 1)) 55*cf84ac9aSAndroid Build Coastguard Workerdone 56*cf84ac9aSAndroid Build Coastguard Worker 57*cf84ac9aSAndroid Build Coastguard Workerwfds='!!!0' 58*cf84ac9aSAndroid Build Coastguard Worker[ $wfd -lt 1023 ] || wfd=1023 59*cf84ac9aSAndroid Build Coastguard Workeri=0 60*cf84ac9aSAndroid Build Coastguard Workerwhile [ $i -lt $wfd ]; do 61*cf84ac9aSAndroid Build Coastguard Worker wfds="$wfds,$i" 62*cf84ac9aSAndroid Build Coastguard Worker i=$(($i + 1)) 63*cf84ac9aSAndroid Build Coastguard Workerdone 64*cf84ac9aSAndroid Build Coastguard Worker 65*cf84ac9aSAndroid Build Coastguard Workerrun_strace_match_diff -a16 -e trace=readv,writev \ 66*cf84ac9aSAndroid Build Coastguard Worker -eread="$rfds" -ewrite="$wfds" 67