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" 40