aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMasami Hiramatsu <mhiramat@kernel.org>2018-08-30 10:20:56 -0400
committerShuah Khan (Samsung OSG) <shuah@kernel.org>2018-10-24 16:49:35 -0400
commit873b4af2103fbd1bb7895be202a58878254d89bc (patch)
tree8ddc0a6dd032130ddd105c4957497bb92725d8df
parent32f6e5da83c7f06db7e4efbdacdbc59c16fd6ecb (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/config1
-rw-r--r--tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_symbol.tc39
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
11CONFIG_MODULE_UNLOAD=y 11CONFIG_MODULE_UNLOAD=y
12CONFIG_SAMPLES=y 12CONFIG_SAMPLES=y
13CONFIG_SAMPLE_TRACE_PRINTK=m 13CONFIG_SAMPLE_TRACE_PRINTK=m
14CONFIG_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
7SYMBOL="linux_proc_banner"
8
9if [ ! -f /proc/kallsyms ]; then
10 echo "Can not check the target symbol - please enable CONFIG_KALLSYMS"
11 exit_unresolved
12elif ! grep "$SYMBOL\$" /proc/kallsyms; then
13 echo "Linux banner is not exported - please enable CONFIG_KALLSYMS_ALL"
14 exit_unresolved
15fi
16
17: "Test get basic types symbol argument"
18echo "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
19echo "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
20if 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
22fi
23echo "p:testprobe_bf _do_fork arg1=@linux_proc_banner:b8@4/32" >> kprobe_events
24echo 1 > events/kprobes/enable
25(echo "forked")
26echo 0 > events/kprobes/enable
27grep "testprobe_[usx]:.* arg1=.* arg2=.* arg3=.* arg4=.*" trace
28grep "testprobe_bf:.* arg1=.*" trace
29
30: "Test get string symbol argument"
31echo "p:testprobe_str _do_fork arg1=@linux_proc_banner:string" > kprobe_events
32echo 1 > events/kprobes/enable
33(echo "forked")
34echo 0 > events/kprobes/enable
35RESULT=`grep "testprobe_str" trace | sed -e 's/.* arg1=\(.*\)/\1/'`
36
37RESULT=`echo $RESULT | sed -e 's/.* \((.*)\) \((.*)\) .*/\1 \2/'`
38ORIG=`cat /proc/version | sed -e 's/.* \((.*)\) \((.*)\) .*/\1 \2/'`
39test "$RESULT" = "$ORIG"