xref: /linux/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_char.tc (revision 42d37fc0c819b81f6f6afd108b55d04ba9d32d0f)
1#!/bin/sh
2# SPDX-License-Identifier: GPL-2.0
3# description: Kprobe event char type argument
4# requires: kprobe_events
5
6case `uname -m` in
7x86_64)
8  ARG1=%di
9;;
10i[3456]86)
11  ARG1=%ax
12;;
13aarch64)
14  ARG1=%x0
15;;
16arm*)
17  ARG1=%r0
18;;
19ppc64*)
20  ARG1=%r3
21;;
22ppc*)
23  ARG1=%r3
24;;
25s390*)
26  ARG1=%r2
27;;
28mips*)
29  ARG1=%r4
30;;
31loongarch*)
32  ARG1=%r4
33;;
34riscv*)
35  ARG1=%a0
36;;
37*)
38  echo "Please implement other architecture here"
39  exit_untested
40esac
41
42: "Test get argument (1)"
43if grep -q eventfs_create_dir available_filter_functions; then
44  DIR_NAME="eventfs_create_dir"
45elif grep -q eventfs_add_dir available_filter_functions; then
46  DIR_NAME="eventfs_add_dir"
47else
48  DIR_NAME="tracefs_create_dir"
49fi
50echo "p:testprobe ${DIR_NAME} arg1=+0(${ARG1}):char" > kprobe_events
51echo 1 > events/kprobes/testprobe/enable
52echo "p:test $FUNCTION_FORK" >> kprobe_events
53grep -qe "testprobe.* arg1='t'" trace
54
55echo 0 > events/kprobes/testprobe/enable
56: "Test get argument (2)"
57echo "p:testprobe ${DIR_NAME} arg1=+0(${ARG1}):char arg2=+0(${ARG1}):char[4]" > kprobe_events
58echo 1 > events/kprobes/testprobe/enable
59echo "p:test $FUNCTION_FORK" >> kprobe_events
60grep -qe "testprobe.* arg1='t' arg2={'t','e','s','t'}" trace
61