linux-loongson/tools/testing/selftests/ftrace/test.d/kprobe/probepoint.tc
Masami Hiramatsu (Google) 96cd93af79 selftests/ftrace: Fix probepoint testcase to ignore __pfx_* symbols
Fix kprobe probepoint testcase to ignore __pfx_* prefix symbols. Those are
introduced by commit b341b20d64 ("x86: Add prefix symbols for function
padding") for identifying PADDING_BYTES of NOPs. Since kprobe events can
not probe these prefix symbols, this testcase has to skip those symbols.

Link: https://lore.kernel.org/all/167309835609.640500.9664678940260305746.stgit@devnote3/

Fixes: b341b20d64 ("x86: Add prefix symbols for function padding")
Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Reviewed-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Acked-by: Shuah Khan <skhan@linuxfoundation.org>
2023-02-21 08:49:16 +09:00

39 lines
1.1 KiB
Bash

#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: Kprobe events - probe points
# requires: kprobe_events
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 -v __pfx_ /proc/kallsyms | grep -A1 -B1 ${TARGET_FUNC} | 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 "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