mirror of
https://github.com/torvalds/linux.git
synced 2024-11-28 15:11:31 +00:00
selftests: ftrace: Add a testcase for probepoint
Add a testcase for probe point definition. This tests symbol, address and symbol+offset syntax. The offset must be positive and smaller than UINT_MAX. Link: http://lkml.kernel.org/r/152129043097.31874.14273580606301767394.stgit@devbox Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org> Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
This commit is contained in:
parent
5fbdbed797
commit
dfa453bc90
43
tools/testing/selftests/ftrace/test.d/kprobe/probepoint.tc
Normal file
43
tools/testing/selftests/ftrace/test.d/kprobe/probepoint.tc
Normal file
@ -0,0 +1,43 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# description: Kprobe events - probe points
|
||||
|
||||
[ -f kprobe_events ] || exit_unsupported # this is configurable
|
||||
|
||||
TARGET_FUNC=create_trace_kprobe
|
||||
|
||||
dec_addr() { # hexaddr
|
||||
printf "%d" "0x"`echo $1 | tail -c 8`
|
||||
}
|
||||
|
||||
set_offs() { # prev target next
|
||||
A1=`dec_addr $1`
|
||||
A2=`dec_addr $2`
|
||||
A3=`dec_addr $3`
|
||||
TARGET="0x$2" # an address
|
||||
PREV=`expr $A1 - $A2` # offset to previous symbol
|
||||
NEXT=+`expr $A3 - $A2` # offset to next symbol
|
||||
OVERFLOW=+`printf "0x%x" ${PREV}` # overflow offset to previous symbol
|
||||
}
|
||||
|
||||
# We have to decode symbol addresses to get correct offsets.
|
||||
# If the offset is not an instruction boundary, it cause -EILSEQ.
|
||||
set_offs `grep -A1 -B1 ${TARGET_FUNC} /proc/kallsyms | cut -f 1 -d " " | xargs`
|
||||
|
||||
UINT_TEST=no
|
||||
# printf "%x" -1 returns (unsigned long)-1.
|
||||
if [ `printf "%x" -1 | wc -c` != 9 ]; then
|
||||
UINT_TEST=yes
|
||||
fi
|
||||
|
||||
echo 0 > events/enable
|
||||
echo > kprobe_events
|
||||
echo "p:testprobe ${TARGET_FUNC}" > kprobe_events
|
||||
echo "p:testprobe ${TARGET}" > kprobe_events
|
||||
echo "p:testprobe ${TARGET_FUNC}${NEXT}" > kprobe_events
|
||||
! echo "p:testprobe ${TARGET_FUNC}${PREV}" > kprobe_events
|
||||
if [ "${UINT_TEST}" = yes ]; then
|
||||
! echo "p:testprobe ${TARGET_FUNC}${OVERFLOW}" > kprobe_events
|
||||
fi
|
||||
echo > kprobe_events
|
||||
clear_trace
|
Loading…
Reference in New Issue
Block a user