2 # SPDX-License-Identifier: GPL-2.0
3 # description: Kprobe event symbol argument
5 [ -f kprobe_events
] || exit_unsupported
# this is configurable
7 SYMBOL
="linux_proc_banner"
9 if [ ! -f /proc
/kallsyms
]; then
10 echo "Can not check the target symbol - please enable CONFIG_KALLSYMS"
12 elif ! grep "$SYMBOL\$" /proc
/kallsyms
; then
13 echo "Linux banner is not exported - please enable CONFIG_KALLSYMS_ALL"
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
23 echo "p:testprobe_bf _do_fork arg1=@linux_proc_banner:b8@4/32" >> kprobe_events
24 echo 1 > events
/kprobes
/enable
26 echo 0 > events
/kprobes
/enable
27 grep "testprobe_[usx]:.* arg1=.* arg2=.* arg3=.* arg4=.*" trace
28 grep "testprobe_bf:.* arg1=.*" trace
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
34 echo 0 > events
/kprobes
/enable
35 RESULT
=`grep "testprobe_str" trace | sed -e 's/.* arg1=\(.*\)/\1/'`
37 RESULT
=`echo $RESULT | sed -e 's/.* \((.*)\) \((.*)\) .*/\1 \2/'`
38 ORIG
=`cat /proc/version | sed -e 's/.* \((.*)\) \((.*)\) .*/\1 \2/'`
39 test "$RESULT" = "$ORIG"