xref: /linux/tools/testing/selftests/ftrace/test.d/kprobe/probepoint.tc (revision 9a87ffc99ec8eb8d35eed7c4f816d75f5cc9662e)
1dfa453bcSMasami Hiramatsu#!/bin/sh
2dfa453bcSMasami Hiramatsu# SPDX-License-Identifier: GPL-2.0
3dfa453bcSMasami Hiramatsu# description: Kprobe events - probe points
43591e90fSMasami Hiramatsu# requires: kprobe_events
5dfa453bcSMasami Hiramatsu
66fc7c411SMasami HiramatsuTARGET_FUNC=tracefs_create_dir
7dfa453bcSMasami Hiramatsu
8dfa453bcSMasami Hiramatsudec_addr() { # hexaddr
9dfa453bcSMasami Hiramatsu  printf "%d" "0x"`echo $1 | tail -c 8`
10dfa453bcSMasami Hiramatsu}
11dfa453bcSMasami Hiramatsu
12dfa453bcSMasami Hiramatsuset_offs() { # prev target next
13dfa453bcSMasami Hiramatsu  A1=`dec_addr $1`
14dfa453bcSMasami Hiramatsu  A2=`dec_addr $2`
15dfa453bcSMasami Hiramatsu  A3=`dec_addr $3`
16dfa453bcSMasami Hiramatsu  TARGET="0x$2" # an address
17dfa453bcSMasami Hiramatsu  PREV=`expr $A1 - $A2` # offset to previous symbol
18dfa453bcSMasami Hiramatsu  NEXT=+`expr $A3 - $A2` # offset to next symbol
19dfa453bcSMasami Hiramatsu  OVERFLOW=+`printf "0x%x" ${PREV}` # overflow offset to previous symbol
20dfa453bcSMasami Hiramatsu}
21dfa453bcSMasami Hiramatsu
22dfa453bcSMasami Hiramatsu# We have to decode symbol addresses to get correct offsets.
23dfa453bcSMasami Hiramatsu# If the offset is not an instruction boundary, it cause -EILSEQ.
24*96cd93afSMasami Hiramatsu (Google)set_offs `grep -v __pfx_ /proc/kallsyms | grep -A1 -B1 ${TARGET_FUNC} | cut -f 1 -d " " | xargs`
25dfa453bcSMasami Hiramatsu
26dfa453bcSMasami HiramatsuUINT_TEST=no
27dfa453bcSMasami Hiramatsu# printf "%x" -1 returns (unsigned long)-1.
28dfa453bcSMasami Hiramatsuif [ `printf "%x" -1 | wc -c` != 9 ]; then
29dfa453bcSMasami Hiramatsu  UINT_TEST=yes
30dfa453bcSMasami Hiramatsufi
31dfa453bcSMasami Hiramatsu
32dfa453bcSMasami Hiramatsuecho "p:testprobe ${TARGET_FUNC}" > kprobe_events
33dfa453bcSMasami Hiramatsuecho "p:testprobe ${TARGET}" > kprobe_events
34dfa453bcSMasami Hiramatsuecho "p:testprobe ${TARGET_FUNC}${NEXT}" > kprobe_events
35dfa453bcSMasami Hiramatsu! echo "p:testprobe ${TARGET_FUNC}${PREV}" > kprobe_events
36dfa453bcSMasami Hiramatsuif [ "${UINT_TEST}" = yes ]; then
37dfa453bcSMasami Hiramatsu! echo "p:testprobe ${TARGET_FUNC}${OVERFLOW}" > kprobe_events
38dfa453bcSMasami Hiramatsufi
39