lkml.org 
[lkml]   [2018]   [May]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 293/496] selftests: ftrace: Add a testcase for probepoint
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Masami Hiramatsu <mhiramat@kernel.org>

    [ Upstream commit dfa453bc90eca0febff33c8d292a656e53702158 ]

    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>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    tools/testing/selftests/ftrace/test.d/kprobe/probepoint.tc | 43 +++++++++++++
    1 file changed, 43 insertions(+)
    create mode 100644 tools/testing/selftests/ftrace/test.d/kprobe/probepoint.tc

    --- /dev/null
    +++ b/tools/testing/selftests/ftrace/test.d/kprobe/probepoint.tc
    @@ -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

    \
     
     \ /
      Last update: 2018-05-28 14:57    [W:4.050 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site