Dmitry V. Levin
92e347b556
We do our best to keep copyright headers up to date, yet git history provides better information on this subject and is more accurate than copyright headers.
69 lines
2.2 KiB
Bash
Executable File
69 lines
2.2 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Check how strace -e abbrev=set, -e raw=set, -e trace=set,
|
|
# and -e verbose=set work.
|
|
#
|
|
# Copyright (c) 2014-2018 The strace developers.
|
|
# All rights reserved.
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
. "${srcdir=.}/init.sh"
|
|
|
|
run_prog ../umovestr
|
|
pattern_abbrev_verbose='execve("\.\./umovestr", \["\.\./umovestr"\], 0x[[:xdigit:]]* /\* [[:digit:]]* vars \*/) = 0'
|
|
pattern_nonabbrev_verbose='execve("\.\./umovestr", \["\.\./umovestr"\], \[".*\"\(\.\.\.\)\?\]) = 0'
|
|
pattern_nonverbose='execve("\.\./umovestr", 0x[[:xdigit:]]*, 0x[[:xdigit:]]*) = 0'
|
|
pattern_raw='execve(0x[[:xdigit:]]*, 0x[[:xdigit:]]*, 0x[[:xdigit:]]*) = 0'
|
|
|
|
check_output_mismatch()
|
|
{
|
|
local pattern
|
|
pattern="$1"; shift
|
|
run_strace "$@" ../umovestr
|
|
LC_ALL=C grep -x "$pattern" "$LOG" > /dev/null || {
|
|
printf '%s\n%s\n' \
|
|
'Failed patterns of expected output:' "$pattern"
|
|
dump_log_and_fail_with "$STRACE $args output mismatch"
|
|
}
|
|
}
|
|
|
|
check_output_mismatch "$pattern_abbrev_verbose" -e execve
|
|
LC_ALL=C grep -v -x "$pattern_abbrev_verbose" "$LOG" |
|
|
LC_ALL=C grep '^[[:alnum:]_]*(' > /dev/null &&
|
|
dump_log_and_fail_with "$STRACE $args unexpected output"
|
|
|
|
check_output_mismatch "$pattern_abbrev_verbose" -e trace=%process
|
|
LC_ALL=C grep '^chdir' "$LOG" > /dev/null &&
|
|
dump_log_and_fail_with "$STRACE $args unexpected output"
|
|
|
|
run_strace -e 42 ../umovestr
|
|
LC_ALL=C grep '^[[:alnum:]_]*(' "$LOG" > /dev/null &&
|
|
dump_log_and_fail_with "$STRACE $args unexpected output"
|
|
|
|
run_strace -e/ -e42 ../umovestr
|
|
LC_ALL=C grep '^[[:alnum:]_]*(' "$LOG" > /dev/null &&
|
|
dump_log_and_fail_with "$STRACE $args unexpected output"
|
|
|
|
for a in execve \!chdir /. all \!none \
|
|
file process \!desc \!ipc \!memory \!network \!signal; do
|
|
check_output_mismatch \
|
|
"$pattern_abbrev_verbose" -e abbrev="$a" -e execve
|
|
check_output_mismatch \
|
|
"$pattern_raw" -a22 -e raw="$a" -e execve
|
|
check_output_mismatch \
|
|
"$pattern_abbrev_verbose" -e verbose="$a" -e execve
|
|
done
|
|
|
|
for a in \!execve chdir 42 \!all none \
|
|
\!file \!process desc ipc memory network signal; do
|
|
check_output_mismatch \
|
|
"$pattern_nonabbrev_verbose" -e abbrev="$a" -e execve
|
|
check_output_mismatch \
|
|
"$pattern_abbrev_verbose" -e raw="$a" -e execve
|
|
check_output_mismatch \
|
|
"$pattern_nonverbose" -a31 -e verbose="$a" -e execve
|
|
done
|
|
|
|
exit 0
|