From: Adrian Hunter <adrian.hunter@intel.com>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>, Namhyung Kim <namhyung@kernel.org>,
Ian Rogers <irogers@google.com>,
James Clark <james.clark@arm.com>,
German Gomez <german.gomez@arm.com>, Leo Yan <leo.yan@linaro.org>,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org
Subject: [PATCH 2/8] perf tests lib: Add perf_has_symbol.sh
Date: Thu, 23 Nov 2023 09:58:42 +0200 [thread overview]
Message-ID: <20231123075848.9652-3-adrian.hunter@intel.com> (raw)
In-Reply-To: <20231123075848.9652-1-adrian.hunter@intel.com>
Some shell tests depend on finding symbols for perf itself, and fail if
perf has been stripped and no debug object is available. Add helper
functions to check if perf has a needed symbol. This is preparation for
amending the tests themselves to be skipped if a needed symbol is not
found.
The functions make use of the "Symbols" test which reads and checks symbols
from a dso, perf itself by default. Note the "Symbols" test will find
symbols using the same method as other perf tests, including, for example,
looking in the buildid cache.
An alternative would be to prevent the needed symbols from being stripped,
which seems to work with gcc's externally_visible attribute, but that
attribute is not supported by clang.
Another alternative would be to use option -Wl,-E (which is already used
when perf is built with perl support) which causes the linker to add all
(global) symbols to the dynamic symbol table. Then the required symbols
need only be made global in scope to avoid being strippable. However that
goes beyond what is needed.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
---
tools/perf/tests/shell/lib/perf_has_symbol.sh | 21 +++++++++++++++++++
1 file changed, 21 insertions(+)
create mode 100644 tools/perf/tests/shell/lib/perf_has_symbol.sh
diff --git a/tools/perf/tests/shell/lib/perf_has_symbol.sh b/tools/perf/tests/shell/lib/perf_has_symbol.sh
new file mode 100644
index 000000000000..5d59c32ae3e7
--- /dev/null
+++ b/tools/perf/tests/shell/lib/perf_has_symbol.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+
+perf_has_symbol()
+{
+ if perf test -vv "Symbols" 2>&1 | grep "[[:space:]]$1$"; then
+ echo "perf does have symbol '$1'"
+ return 0
+ fi
+ echo "perf does not have symbol '$1'"
+ return 1
+}
+
+skip_test_missing_symbol()
+{
+ if ! perf_has_symbol "$1" ; then
+ echo "perf is missing symbols - skipping test"
+ exit 2
+ fi
+ return 0
+}
--
2.34.1
next prev parent reply other threads:[~2023-11-23 7:59 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-23 7:58 [PATCH 0/8] perf tests: Reduce inexplicable test failures Adrian Hunter
2023-11-23 7:58 ` [PATCH 1/8] perf header: Fix segfault on build_mem_topology() error path Adrian Hunter
2023-11-23 7:58 ` Adrian Hunter [this message]
2023-11-23 7:58 ` [PATCH 3/8] perf tests: Skip pipe test if noploop symbol is missing Adrian Hunter
2023-11-23 7:58 ` [PATCH 4/8] perf tests: Skip record test if test_loop " Adrian Hunter
2023-11-23 7:58 ` [PATCH 5/8] perf tests: Skip Arm64 callgraphs test if leafloop " Adrian Hunter
2023-11-23 7:58 ` [PATCH 6/8] perf tests: Skip branch stack sampling test if brstack_bench " Adrian Hunter
2023-11-23 7:58 ` [PATCH 7/8] perf tests: Make data symbol test wait for perf to start Adrian Hunter
2023-11-23 7:58 ` [PATCH 8/8] perf tests: Skip data symbol test if buf1 symbol is missing Adrian Hunter
2023-11-23 14:06 ` [PATCH 0/8] perf tests: Reduce inexplicable test failures Arnaldo Carvalho de Melo
2023-11-27 7:19 ` Athira Rajeev
2023-11-27 13:23 ` Arnaldo Carvalho de Melo
2023-11-27 14:31 ` Arnaldo Carvalho de Melo
2023-11-27 17:34 ` Ian Rogers
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=20231123075848.9652-3-adrian.hunter@intel.com \
--to=adrian.hunter@intel.com \
--cc=acme@kernel.org \
--cc=german.gomez@arm.com \
--cc=irogers@google.com \
--cc=james.clark@arm.com \
--cc=jolsa@kernel.org \
--cc=leo.yan@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=namhyung@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox