[PATCH Linux-next] perf test: Fix test case perf trace BTF general tests

Thomas Richter
2025-11-17T12:44:20Z

The following test case fails on linux-next repo:

❯ uname -a
Linux s83lp47.lnxne.boe 6.18.0-20251116.rc5.git0.0f2995693867.63.\
fc42.s390x+next #1 SMP Sun Nov 16 20:05:28 CET 2025 s390x GNU/Linux

# perf test -Fv 109
--- start ---
Checking if vmlinux BTF exists
Testing perf trace's string augmentation
Testing perf trace's buffer augmentation
Buffer augmentation test failed, output:
buffer content
echo/23281 write(1, buffer conten, 15, "") = 15
---- end ----
109: perf trace BTF general tests : FAILED!
#

The root case is a changed output format on linux-next.
There is an addional "" string as forth parameter in the write()
line. Here is the detailed output on linux-repo.
Please note that this depends on the kernel and not on the perf tool.

Output on linux next kernel:
# uname -a
Linux f43 6.18.0-rc5-next-20251114tmr-n #1 SMP PREEMPT_DYNAMIC ...
# perf config trace.show_arg_names=false trace.show_duration=false \
trace.show_timestamp=false trace.args_alignment=0
# ./perf trace --sort-events -e write --max-events=1 \
-- echo 'buffer content' 1>/dev/null
echo/7676 write(1, buffer content\10, 15, "") = 15
#

Output on linux kernel:
# uname -a
Linux b3560002.lnxne.boe 6.18.0-rc5m-perf #6 ....
# perf config trace.show_arg_names=false trace.show_duration=false \
trace.show_timestamp=false trace.args_alignment=0
# ./perf trace --sort-events -e write --max-events=1 \
-- echo 'buffer content' 1>/dev/null
echo/36932 write(1, buffer content\10, 15) = 15
#

Add the optional forth parameter in the extented regular expression to
accept both output formats.

Output after:
# ./perf test -Fv 'perf trace BTF general tests'
--- start ---
Checking if vmlinux BTF exists
Testing perf trace's string augmentation
Testing perf trace's buffer augmentation
Testing perf trace's struct augmentation
---- end ----
115: perf trace BTF general tests : Ok
#

Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
---
tools/perf/tests/shell/trace_btf_general.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/tests/shell/trace_btf_general.sh b/tools/perf/tests/shell/trace_btf_general.sh
index ef2da806be6b..9cd6180062d8 100755
--- a/tools/perf/tests/shell/trace_btf_general.sh
+++ b/tools/perf/tests/shell/trace_btf_general.sh
@@ -39,7 +39,7 @@ trace_test_buffer() {
echo "Testing perf trace's buffer augmentation"
# echo will insert a newline (\10) at the end of the buffer
output="$(perf trace --sort-events -e write --max-events=1 -- echo "${buffer}" 2>&1)"
- if ! echo "$output" | grep -q -E "^echo/[0-9]+ write\([0-9]+, ${buffer}.*, [0-9]+\) += +[0-9]+$"
+ if ! echo "$output" | grep -qE "^echo/[0-9]+ write\([0-9]+, ${buffer}\\\\10, [0-9]+(, ..)?\) += +[0-9]+$"
then
printf "Buffer augmentation test failed, output:\n$output\n"
err=1
--
2.51.1