Add a testcase for string type with kprobe event. This tests good/bad syntax combinations and also the traced data is correct in several way. Link: http://lkml.kernel.org/r/152129038381.31874.9201387794548737554.stgit@devbox
Unified · Split
| @@ -0,0 +1,46 @@ | ||
| 1 | +#!/bin/sh | |
| 2 | +# SPDX-License-Identifier: GPL-2.0 | |
| 3 | +# description: Kprobe event string type argument | |
| 4 | + | |
| 5 | +[ -f kprobe_events ] || exit_unsupported # this is configurable | |
| 6 | + | |
| 7 | +echo 0 > events/enable | |
| 8 | +echo > kprobe_events | |
| 9 | + | |
| 10 | +case `uname -m` in | |
| 11 | +x86_64) | |
| 12 | + ARG2=%si | |
| 13 | + OFFS=8 | |
| 14 | +;; | |
| 15 | +i[3456]86) | |
| 16 | + ARG2=%cx | |
| 17 | + OFFS=4 | |
| 18 | +;; | |
| 19 | +aarch64) | |
| 20 | + ARG2=%x1 | |
| 21 | + OFFS=8 | |
| 22 | +;; | |
| 23 | +arm*) | |
| 24 | + ARG2=%r1 | |
| 25 | + OFFS=4 | |
| 26 | +;; | |
| 27 | +*) | |
| 28 | + echo "Please implement other architecture here" | |
| 29 | + exit_untested | |
| 30 | +esac | |
| 31 | + | |
| 32 | +: "Test get argument (1)" | |
| 33 | +echo "p:testprobe create_trace_kprobe arg1=+0(+0(${ARG2})):string" > kprobe_events | |
| 34 | +echo 1 > events/kprobes/testprobe/enable | |
| 35 | +! echo test >> kprobe_events | |
| 36 | +tail -n 1 trace | grep -qe "testprobe.* arg1=\"test\"" | |
| 37 | + | |
| 38 | +echo 0 > events/kprobes/testprobe/enable | |
| 39 | +: "Test get argument (2)" | |
| 40 | +echo "p:testprobe create_trace_kprobe arg1=+0(+0(${ARG2})):string arg2=+0(+${OFFS}(${ARG2})):string" > kprobe_events | |
| 41 | +echo 1 > events/kprobes/testprobe/enable | |
| 42 | +! echo test1 test2 >> kprobe_events | |
| 43 | +tail -n 1 trace | grep -qe "testprobe.* arg1=\"test1\" arg2=\"test2\"" | |
| 44 | + | |
| 45 | +echo 0 > events/enable | |
| 46 | +echo > kprobe_events | |