The test "Check Arm64 callgraphs are complete in fp mode" depends on finding symbol leafloop in perf, and fails if perf has been stripped and no debug object is available. In that case, skip the test instead. Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Acked-by: Ian Rogers <irogers@google.com> Cc: German Gomez <german.gomez@arm.com> Cc: James Clark <james.clark@arm.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Leo Yan <leo.yan@linaro.org> Cc: Namhyung Kim <namhyung@kernel.org> Link: https://lore.kernel.org/r/20231123075848.9652-6-adrian.hunter@intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
47 lines
1.1 KiB
Bash
Executable file
47 lines
1.1 KiB
Bash
Executable file
#!/bin/sh
|
|
# Check Arm64 callgraphs are complete in fp mode
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
shelldir=$(dirname "$0")
|
|
# shellcheck source=lib/perf_has_symbol.sh
|
|
. "${shelldir}"/lib/perf_has_symbol.sh
|
|
|
|
lscpu | grep -q "aarch64" || exit 2
|
|
|
|
skip_test_missing_symbol leafloop
|
|
|
|
PERF_DATA=$(mktemp /tmp/__perf_test.perf.data.XXXXX)
|
|
TEST_PROGRAM="perf test -w leafloop"
|
|
|
|
cleanup_files()
|
|
{
|
|
rm -f "$PERF_DATA"
|
|
}
|
|
|
|
trap cleanup_files EXIT TERM INT
|
|
|
|
# Add a 1 second delay to skip samples that are not in the leaf() function
|
|
# shellcheck disable=SC2086
|
|
perf record -o "$PERF_DATA" --call-graph fp -e cycles//u -D 1000 --user-callchains -- $TEST_PROGRAM 2> /dev/null &
|
|
PID=$!
|
|
|
|
echo " + Recording (PID=$PID)..."
|
|
sleep 2
|
|
echo " + Stopping perf-record..."
|
|
|
|
kill $PID
|
|
wait $PID
|
|
|
|
# expected perf-script output:
|
|
#
|
|
# program
|
|
# 728 leaf
|
|
# 753 parent
|
|
# 76c leafloop
|
|
# ...
|
|
|
|
perf script -i "$PERF_DATA" -F comm,ip,sym | head -n4
|
|
perf script -i "$PERF_DATA" -F comm,ip,sym | head -n4 | \
|
|
awk '{ if ($2 != "") sym[i++] = $2 } END { if (sym[0] != "leaf" ||
|
|
sym[1] != "parent" ||
|
|
sym[2] != "leafloop") exit 1 }'
|