1#!/bin/sh
2# SPDX-License-Identifier: GPL-2.0
3# description: Kprobe event char type argument
4# requires: kprobe_events available_filter_functions
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;;
31*)
32  echo "Please implement other architecture here"
33  exit_untested
34esac
35
36: "Test get argument (1)"
37if grep -q eventfs_add_dir available_filter_functions; then
38  DIR_NAME="eventfs_add_dir"
39else
40  DIR_NAME="tracefs_create_dir"
41fi
42echo "p:testprobe ${DIR_NAME} arg1=+0(${ARG1}):char" > kprobe_events
43echo 1 > events/kprobes/testprobe/enable
44echo "p:test $FUNCTION_FORK" >> kprobe_events
45grep -qe "testprobe.* arg1='t'" trace
46
47echo 0 > events/kprobes/testprobe/enable
48: "Test get argument (2)"
49echo "p:testprobe ${DIR_NAME} arg1=+0(${ARG1}):char arg2=+0(${ARG1}):char[4]" > kprobe_events
50echo 1 > events/kprobes/testprobe/enable
51echo "p:test $FUNCTION_FORK" >> kprobe_events
52grep -qe "testprobe.* arg1='t' arg2={'t','e','s','t'}" trace
53