From: "Masami Hiramatsu (Google)" <mhiramat@kernel.org>
To: linux-trace-kernel@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
Steven Rostedt <rostedt@goodmis.org>,
mhiramat@kernel.org, Martin KaFai Lau <martin.lau@linux.dev>,
bpf@vger.kernel.org, Sven Schnelle <svens@linux.ibm.com>,
Alexei Starovoitov <ast@kernel.org>
Subject: [PATCH v4 8/9] selftests/ftrace: Add BTF fields access testcases
Date: Mon, 31 Jul 2023 16:31:22 +0900 [thread overview]
Message-ID: <169078868262.173706.15416052542086569996.stgit@devnote2> (raw)
In-Reply-To: <169078860386.173706.3091034523220945605.stgit@devnote2>
From: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Add test cases for accessing the data structure fields using BTF info.
This includes the field access from parameters and retval, and accessing
string information.
Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Reviewed-by: Alan Maguire <alan.maguire@oracle.com>
---
Changes in v2:
- Use '$retval' instead of 'retval'.
- Add a test that use both '$retval' and '$arg1' for fprobe.
Changes in v3:
- Change a test case with a numeric value.
- Add a test case with mixed '.' and '->' operators.
---
.../ftrace/test.d/dynevent/add_remove_btfarg.tc | 14 ++++++++++++++
.../ftrace/test.d/dynevent/fprobe_syntax_errors.tc | 4 ++++
2 files changed, 18 insertions(+)
diff --git a/tools/testing/selftests/ftrace/test.d/dynevent/add_remove_btfarg.tc b/tools/testing/selftests/ftrace/test.d/dynevent/add_remove_btfarg.tc
index f34b14ef9781..4bfd2f45db42 100644
--- a/tools/testing/selftests/ftrace/test.d/dynevent/add_remove_btfarg.tc
+++ b/tools/testing/selftests/ftrace/test.d/dynevent/add_remove_btfarg.tc
@@ -21,6 +21,9 @@ echo 0 > events/enable
echo > dynamic_events
TP=kfree
+TP2=kmem_cache_alloc
+TP3=getname_flags
+TP4=sched_wakeup
if [ "$FPROBES" ] ; then
echo "f:fpevent $TP object" >> dynamic_events
@@ -33,6 +36,7 @@ echo > dynamic_events
echo "f:fpevent $TP "'$arg1' >> dynamic_events
grep -q "fpevent.*object=object" dynamic_events
+
echo > dynamic_events
echo "f:fpevent $TP "'$arg*' >> dynamic_events
@@ -45,6 +49,16 @@ fi
echo > dynamic_events
+echo "t:tpevent ${TP2} obj_size=s->object_size" >> dynamic_events
+echo "f:fpevent ${TP3}%return path=\$retval->name:string" >> dynamic_events
+echo "t:tpevent2 ${TP4} p->se.group_node.next->prev" >> dynamic_events
+
+grep -q "tpevent .*obj_size=s->object_size" dynamic_events
+grep -q "fpevent.*path=\$retval->name:string" dynamic_events
+grep -q 'tpevent2 .*p->se.group_node.next->prev' dynamic_events
+
+echo > dynamic_events
+
if [ "$KPROBES" ] ; then
echo "p:kpevent $TP object" >> dynamic_events
grep -q "kpevent.*object=object" dynamic_events
diff --git a/tools/testing/selftests/ftrace/test.d/dynevent/fprobe_syntax_errors.tc b/tools/testing/selftests/ftrace/test.d/dynevent/fprobe_syntax_errors.tc
index 72563b2e0812..49758f77c923 100644
--- a/tools/testing/selftests/ftrace/test.d/dynevent/fprobe_syntax_errors.tc
+++ b/tools/testing/selftests/ftrace/test.d/dynevent/fprobe_syntax_errors.tc
@@ -103,6 +103,10 @@ check_error 'f vfs_read%return ^$arg*' # NOFENTRY_ARGS
check_error 'f vfs_read ^hoge' # NO_BTFARG
check_error 'f kfree ^$arg10' # NO_BTFARG (exceed the number of parameters)
check_error 'f kfree%return ^$retval' # NO_RETVAL
+check_error 'f vfs_read%return $retval->^foo' # NO_PTR_STRCT
+check_error 'f vfs_read file->^foo' # NO_BTF_FIELD
+check_error 'f vfs_read file^-.foo' # BAD_HYPHEN
+check_error 'f vfs_read ^file:string' # BAD_TYPE4STR
else
check_error 'f vfs_read ^$arg*' # NOSUP_BTFARG
check_error 't kfree ^$arg*' # NOSUP_BTFARG
next prev parent reply other threads:[~2023-07-31 7:31 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-31 7:30 [PATCH v4 0/9] tracing: Improbe BTF support on probe events Masami Hiramatsu (Google)
2023-07-31 7:30 ` [PATCH v4 1/9] tracing/probes: Support BTF argument on module functions Masami Hiramatsu (Google)
2023-07-31 7:30 ` [PATCH v4 2/9] bpf/btf: tracing: Move finding func-proto API and getting func-param API to BTF Masami Hiramatsu (Google)
2023-07-31 7:30 ` [PATCH v4 3/9] bpf/btf: Add a function to search a member of a struct/union Masami Hiramatsu (Google)
2023-07-31 21:59 ` Alexei Starovoitov
2023-07-31 23:57 ` Masami Hiramatsu
2023-08-01 0:29 ` Alexei Starovoitov
2023-08-01 15:02 ` Masami Hiramatsu
2023-08-01 15:20 ` Steven Rostedt
2023-08-01 15:32 ` Steven Rostedt
2023-08-01 22:18 ` Alexei Starovoitov
2023-08-01 23:09 ` Steven Rostedt
2023-08-01 23:44 ` Alexei Starovoitov
2023-08-02 0:21 ` Masami Hiramatsu
2023-08-02 0:40 ` Steven Rostedt
2023-08-02 0:44 ` Steven Rostedt
2023-08-02 2:22 ` Alexei Starovoitov
2023-08-02 2:32 ` Steven Rostedt
2023-08-02 14:07 ` Masami Hiramatsu
2023-08-02 15:08 ` Florent Revest
2023-08-02 13:56 ` Masami Hiramatsu
2023-08-02 14:48 ` Florent Revest
2023-08-02 15:47 ` Florent Revest
2023-08-03 1:55 ` Masami Hiramatsu
2023-08-02 18:24 ` Alexei Starovoitov
2023-08-02 18:38 ` Steven Rostedt
2023-08-02 19:48 ` Alexei Starovoitov
2023-08-02 20:12 ` Steven Rostedt
2023-08-02 21:28 ` Alexei Starovoitov
2023-08-02 14:44 ` Florent Revest
2023-08-02 16:11 ` Steven Rostedt
2023-08-03 15:42 ` Masami Hiramatsu
2023-08-03 16:37 ` Florent Revest
2023-08-07 20:48 ` Jiri Olsa
2023-08-08 14:32 ` Masami Hiramatsu
2023-08-01 1:15 ` Steven Rostedt
2023-08-01 2:24 ` Alexei Starovoitov
2023-08-01 13:35 ` Steven Rostedt
2023-08-01 15:18 ` Masami Hiramatsu
2023-08-01 22:21 ` Alexei Starovoitov
2023-08-01 23:17 ` Masami Hiramatsu
2023-07-31 7:30 ` [PATCH v4 4/9] tracing/probes: Support BTF based data structure field access Masami Hiramatsu (Google)
2023-07-31 7:30 ` [PATCH v4 5/9] tracing/probes: Support BTF field access from $retval Masami Hiramatsu (Google)
2023-07-31 7:31 ` [PATCH v4 6/9] tracing/probes: Add string type check with BTF Masami Hiramatsu (Google)
2023-07-31 7:31 ` [PATCH v4 7/9] tracing/fprobe-event: Assume fprobe is a return event by $retval Masami Hiramatsu (Google)
2023-07-31 7:31 ` Masami Hiramatsu (Google) [this message]
2023-07-31 7:31 ` [PATCH v4 9/9] Documentation: tracing: Update fprobe event example with BTF field Masami Hiramatsu (Google)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=169078868262.173706.15416052542086569996.stgit@devnote2 \
--to=mhiramat@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=martin.lau@linux.dev \
--cc=rostedt@goodmis.org \
--cc=svens@linux.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.