aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/tools/testing/selftests/ftrace/test.d/kprobe/uprobe_syntax_errors.tc
blob: ec7389b7934ba4ab05f4d9cf01e134dcc454a371 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: Uprobe event parser error log check

[ -f uprobe_events ] || exit_unsupported # this is configurable

[ -f error_log ] || exit_unsupported

check_error() { # command-with-error-pos-by-^
pos=$(echo -n "${1%^*}" | wc -c) # error position
command=$(echo "$1" | tr -d ^)
echo "Test command: $command"
echo > error_log
(! echo "$command" > uprobe_events ) 2> /dev/null
grep "trace_uprobe: error:" -A 3 error_log
N=$(tail -n 1 error_log | wc -c)
# "  Command: " and "^\n" => 13
test $(expr 13 + $pos) -eq $N
}

check_error 'p ^/non_exist_file:100'	# FILE_NOT_FOUND
check_error 'p ^/sys:100'		# NO_REGULAR_FILE
check_error 'p /bin/sh:^10a'		# BAD_UPROBE_OFFS
check_error 'p /bin/sh:10(^1a)'		# BAD_REFCNT
check_error 'p /bin/sh:10(10^'		# REFCNT_OPEN_BRACE
check_error 'p /bin/sh:10(10)^a'	# BAD_REFCNT_SUFFIX

check_error 'p /bin/sh:10 ^@+ab'	# BAD_FILE_OFFS
check_error 'p /bin/sh:10 ^@symbol'	# SYM_ON_UPROBE

exit 0