diff options
author | Masami Hiramatsu <mhiramat@kernel.org> | 2018-08-30 10:20:56 -0400 |
---|---|---|
committer | Shuah Khan (Samsung OSG) <shuah@kernel.org> | 2018-10-24 16:49:35 -0400 |
commit | 873b4af2103fbd1bb7895be202a58878254d89bc (patch) | |
tree | 8ddc0a6dd032130ddd105c4957497bb92725d8df | |
parent | 32f6e5da83c7f06db7e4efbdacdbc59c16fd6ecb (diff) |
selftests/ftrace: Add kprobe-event with symbol argument test
Add a testcase for kprobe-event with @symbol argument.
Since @symbol needs to refer the kernel data symbol
(linux_proc_banner), it requires CONFIG_KALLSYMS_ALL.
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Shuah Khan (Samsung OSG) <shuah@kernel.org>
-rw-r--r-- | tools/testing/selftests/ftrace/config | 1 | ||||
-rw-r--r-- | tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_symbol.tc | 39 |
2 files changed, 40 insertions, 0 deletions
diff --git a/tools/testing/selftests/ftrace/config b/tools/testing/selftests/ftrace/config index 32cf61b6bb54..b7ac74fcb0fa 100644 --- a/tools/testing/selftests/ftrace/config +++ b/tools/testing/selftests/ftrace/config | |||
@@ -11,3 +11,4 @@ CONFIG_MODULES=y | |||
11 | CONFIG_MODULE_UNLOAD=y | 11 | CONFIG_MODULE_UNLOAD=y |
12 | CONFIG_SAMPLES=y | 12 | CONFIG_SAMPLES=y |
13 | CONFIG_SAMPLE_TRACE_PRINTK=m | 13 | CONFIG_SAMPLE_TRACE_PRINTK=m |
14 | CONFIG_KALLSYMS_ALL=y | ||
diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_symbol.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_symbol.tc new file mode 100644 index 000000000000..2b6dd33f9076 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_symbol.tc | |||
@@ -0,0 +1,39 @@ | |||
1 | #!/bin/sh | ||
2 | # SPDX-License-Identifier: GPL-2.0 | ||
3 | # description: Kprobe event symbol argument | ||
4 | |||
5 | [ -f kprobe_events ] || exit_unsupported # this is configurable | ||
6 | |||
7 | SYMBOL="linux_proc_banner" | ||
8 | |||
9 | if [ ! -f /proc/kallsyms ]; then | ||
10 | echo "Can not check the target symbol - please enable CONFIG_KALLSYMS" | ||
11 | exit_unresolved | ||
12 | elif ! grep "$SYMBOL\$" /proc/kallsyms; then | ||
13 | echo "Linux banner is not exported - please enable CONFIG_KALLSYMS_ALL" | ||
14 | exit_unresolved | ||
15 | fi | ||
16 | |||
17 | : "Test get basic types symbol argument" | ||
18 | echo "p:testprobe_u _do_fork arg1=@linux_proc_banner:u64 arg2=@linux_proc_banner:u32 arg3=@linux_proc_banner:u16 arg4=@linux_proc_banner:u8" > kprobe_events | ||
19 | echo "p:testprobe_s _do_fork arg1=@linux_proc_banner:s64 arg2=@linux_proc_banner:s32 arg3=@linux_proc_banner:s16 arg4=@linux_proc_banner:s8" >> kprobe_events | ||
20 | if grep -q "x8/16/32/64" README; then | ||
21 | echo "p:testprobe_x _do_fork arg1=@linux_proc_banner:x64 arg2=@linux_proc_banner:x32 arg3=@linux_proc_banner:x16 arg4=@linux_proc_banner:x8" >> kprobe_events | ||
22 | fi | ||
23 | echo "p:testprobe_bf _do_fork arg1=@linux_proc_banner:b8@4/32" >> kprobe_events | ||
24 | echo 1 > events/kprobes/enable | ||
25 | (echo "forked") | ||
26 | echo 0 > events/kprobes/enable | ||
27 | grep "testprobe_[usx]:.* arg1=.* arg2=.* arg3=.* arg4=.*" trace | ||
28 | grep "testprobe_bf:.* arg1=.*" trace | ||
29 | |||
30 | : "Test get string symbol argument" | ||
31 | echo "p:testprobe_str _do_fork arg1=@linux_proc_banner:string" > kprobe_events | ||
32 | echo 1 > events/kprobes/enable | ||
33 | (echo "forked") | ||
34 | echo 0 > events/kprobes/enable | ||
35 | RESULT=`grep "testprobe_str" trace | sed -e 's/.* arg1=\(.*\)/\1/'` | ||
36 | |||
37 | RESULT=`echo $RESULT | sed -e 's/.* \((.*)\) \((.*)\) .*/\1 \2/'` | ||
38 | ORIG=`cat /proc/version | sed -e 's/.* \((.*)\) \((.*)\) .*/\1 \2/'` | ||
39 | test "$RESULT" = "$ORIG" | ||