Merge back cpufreq updates for v5.11.
[linux-2.6-microblaze.git] / tools / testing / selftests / ftrace / test.d / kprobe / kprobe_args_symbol.tc
1 #!/bin/sh
2 # SPDX-License-Identifier: GPL-2.0
3 # description: Kprobe event symbol argument
4 # requires: kprobe_events
5
6 SYMBOL="linux_proc_banner"
7
8 if [ ! -f /proc/kallsyms ]; then
9   echo "Can not check the target symbol - please enable CONFIG_KALLSYMS"
10   exit_unresolved
11 elif ! grep "$SYMBOL\$" /proc/kallsyms; then
12   echo "Linux banner is not exported - please enable CONFIG_KALLSYMS_ALL"
13   exit_unresolved
14 fi
15
16 : "Test get basic types symbol argument"
17 echo "p:testprobe_u kernel_clone arg1=@linux_proc_banner:u64 arg2=@linux_proc_banner:u32 arg3=@linux_proc_banner:u16 arg4=@linux_proc_banner:u8" > kprobe_events
18 echo "p:testprobe_s kernel_clone arg1=@linux_proc_banner:s64 arg2=@linux_proc_banner:s32 arg3=@linux_proc_banner:s16 arg4=@linux_proc_banner:s8" >> kprobe_events
19 if grep -q "x8/16/32/64" README; then
20   echo "p:testprobe_x kernel_clone arg1=@linux_proc_banner:x64 arg2=@linux_proc_banner:x32 arg3=@linux_proc_banner:x16 arg4=@linux_proc_banner:x8" >> kprobe_events
21 fi
22 echo "p:testprobe_bf kernel_clone arg1=@linux_proc_banner:b8@4/32" >> kprobe_events
23 echo 1 > events/kprobes/enable
24 (echo "forked")
25 echo 0 > events/kprobes/enable
26 grep "testprobe_[usx]:.* arg1=.* arg2=.* arg3=.* arg4=.*" trace
27 grep "testprobe_bf:.* arg1=.*" trace
28
29 : "Test get string symbol argument"
30 echo "p:testprobe_str kernel_clone arg1=@linux_proc_banner:string" > kprobe_events
31 echo 1 > events/kprobes/enable
32 (echo "forked")
33 echo 0 > events/kprobes/enable
34 RESULT=`grep "testprobe_str" trace | sed -e 's/.* arg1=\(.*\)/\1/'`
35
36 RESULT=`echo $RESULT | sed -e 's/.* \((.*)\) \((.*)\) .*/\1 \2/'`
37 ORIG=`cat /proc/version | sed -e 's/.* \((.*)\) \((.*)\) .*/\1 \2/'`
38 test "$RESULT" = "$ORIG"