Files
linux/tools/testing/selftests/ftrace/test.d/kprobe/probepoint.tc
Masami Hiramatsu 6fc7c4110c selftests/ftrace: Fix kprobe string testcase to not probe notrace function
Fix kprobe string argument testcase to not probe notrace
function. Instead, it probes tracefs function which must
be available with ftrace.

Link: http://lkml.kernel.org/r/153294607107.32740.1664854684396589624.stgit@devbox

Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
2018-07-30 18:41:52 -04:00

44 lines
1.2 KiB
Bash

#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: Kprobe events - probe points
[ -f kprobe_events ] || exit_unsupported # this is configurable
TARGET_FUNC=tracefs_create_dir
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