0001
0002
0003
0004
0005
0006 SYMBOL="linux_proc_banner"
0007
0008 if [ ! -f /proc/kallsyms ]; then
0009 echo "Can not check the target symbol - please enable CONFIG_KALLSYMS"
0010 exit_unresolved
0011 elif ! grep "$SYMBOL\$" /proc/kallsyms; then
0012 echo "Linux banner is not exported - please enable CONFIG_KALLSYMS_ALL"
0013 exit_unresolved
0014 fi
0015
0016 : "Test get basic types symbol argument"
0017 echo "p:testprobe_u $FUNCTION_FORK arg1=@linux_proc_banner:u64 arg2=@linux_proc_banner:u32 arg3=@linux_proc_banner:u16 arg4=@linux_proc_banner:u8" > kprobe_events
0018 echo "p:testprobe_s $FUNCTION_FORK arg1=@linux_proc_banner:s64 arg2=@linux_proc_banner:s32 arg3=@linux_proc_banner:s16 arg4=@linux_proc_banner:s8" >> kprobe_events
0019 if grep -q "x8/16/32/64" README; then
0020 echo "p:testprobe_x $FUNCTION_FORK arg1=@linux_proc_banner:x64 arg2=@linux_proc_banner:x32 arg3=@linux_proc_banner:x16 arg4=@linux_proc_banner:x8" >> kprobe_events
0021 fi
0022 echo "p:testprobe_bf $FUNCTION_FORK arg1=@linux_proc_banner:b8@4/32" >> kprobe_events
0023 echo 1 > events/kprobes/enable
0024 (echo "forked")
0025 echo 0 > events/kprobes/enable
0026 grep "testprobe_[usx]:.* arg1=.* arg2=.* arg3=.* arg4=.*" trace
0027 grep "testprobe_bf:.* arg1=.*" trace
0028
0029 : "Test get string symbol argument"
0030 echo "p:testprobe_str $FUNCTION_FORK arg1=@linux_proc_banner:string" > kprobe_events
0031 echo 1 > events/kprobes/enable
0032 (echo "forked")
0033 echo 0 > events/kprobes/enable
0034 RESULT=`grep "testprobe_str" trace | sed -e 's/.* arg1=\(.*\)/\1/'`
0035
0036 RESULT=`echo $RESULT | sed -e 's/.* \((.*)\) \((.*)\) .*/\1 \2/'`
0037 ORIG=`cat /proc/version | sed -e 's/.* \((.*)\) \((.*)\) .*/\1 \2/'`
0038 test "$RESULT" = "$ORIG"