1#!/bin/sh 2 3# Check -i option. 4 5. "${srcdir=.}/init.sh" 6 7check_prog sed 8 9run_prog > /dev/null 10 11args="-if $args" 12$STRACE $args 2> "$LOG" || 13 dump_log_and_fail_with "$STRACE $args failed" 14 15len="$(sed -n 's/^\[[[:xdigit:]]\+\] write(-1, NULL, \([[:digit:]]\{1,2\}\))[[:space:]]\+= -1 .*/\1/p' "$LOG")" && 16[ -n "$len" ] && 17pid="$(sed -n 's/^\[[[:xdigit:]]\{'"$len"'\}\] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_\(KILLED\|DUMPED\), si_pid=\([[:digit:]]\+\), .*/\2/p' "$LOG")" && 18[ -n "$pid" ] && 19ip="$(sed -n 's/^\[pid \+'"$pid"'\] \[\([[:xdigit:]]\{'"$len"'\}\)] --- SIGSEGV {.*} ---$/\1/p' "$LOG")" && 20[ -n "$ip" ] && 21addr="$(echo "$ip" |sed 's/^0\+//')" && 22[ -n "$addr" ] || 23 dump_log_and_fail_with 24 25EXPECTED="$LOG.expected" 26cat > "$EXPECTED" << __EOF__ 27\\[[[:xdigit:]]{$len}\\] munmap\\(0x[[:xdigit:]]+, 0\\) += -1 .* 28\\[pid +$pid\\] \\[$ip\\] --- SIGSEGV \\{si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x$addr\\} --- 29\\[pid +$pid\\] \\[\\?{$len}\\] \\+\\+\\+ killed by SIGSEGV( \\(core dumped\\))? \\+\\+\\+ 30\\[\\?{$len}\\] \\+\\+\\+ exited with 0 \\+\\+\\+ 31__EOF__ 32 33match_grep "$LOG" "$EXPECTED" 34rm -f "$EXPECTED" 35 36exit 0 37