All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v1] tools build: Add explicitly sequenced -lzstd to libbfd feature fallback
@ 2026-09-09 18:10 Ian Rogers
  2026-09-09 18:18 ` sashiko-bot
  0 siblings, 1 reply; 2+ messages in thread
From: Ian Rogers @ 2026-09-09 18:10 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Peter Zijlstra, Ingo Molnar, Namhyung Kim, Jiri Olsa, Ian Rogers,
	Adrian Hunter, James Clark, Nick Terrell, David Sterba,
	Tomas Glozar, Michael Jeanson, Dmitrii Dolgov, Costa Shulyupin,
	Alexandre Chartre, Leo Yan, linux-kernel, linux-perf-users,
	Arnaldo Carvalho de Melo

Distributions like Fedora currently ship a statically compiled binutils
libbfd that natively depends on zstd to decompress sections (e.g.
undefined reference to 'ZSTD_decompress').

Since libbfd generally does not reliably distribute a .pc file for
pkg-config (e.g. 'binutils-dev' evaluates missing on standard PKG_CONFIG_PATH
checks), perf historically supplements manual linker flags in fallback
chains (-lbfd -ldl -liberty -lz).

Extend the testing cascade in tools/build/feature/Makefile and
tools/perf/Makefile.config to probe for '-lz -lzstd' when the basic
fallback variants fail, natively supporting statically compiled binutils on
recent distributions.

Reported-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Ian Rogers <irogers@google.com>
Assisted-by: Antigravity:gemini-3.1-pro
---
 tools/build/Makefile.feature |  3 ++-
 tools/build/feature/Makefile | 12 +++++++++---
 tools/perf/Makefile.config   |  2 ++
 3 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
index 99eb0ea09537..1268ac6f130e 100644
--- a/tools/build/Makefile.feature
+++ b/tools/build/Makefile.feature
@@ -121,6 +121,7 @@ FEATURE_TESTS_EXTRA :=                  \
          libcheck                       \
          libbfd-liberty                 \
          libbfd-liberty-z               \
+         libbfd-liberty-z-zstd          \
          libopencsd                     \
          libperl                        \
          llvm                           \
@@ -161,7 +162,7 @@ FEATURE_DISPLAY ?=              \
 # Declare group members of a feature to display the logical OR of the detection
 # result instead of each member result.
 #
-FEATURE_GROUP_MEMBERS-libbfd = libbfd-liberty libbfd-liberty-z
+FEATURE_GROUP_MEMBERS-libbfd = libbfd-liberty libbfd-liberty-z libbfd-liberty-z-zstd
 
 #
 # Declare list of feature dependency packages that provide pkg-config files.
diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
index 7d165018116a..410987df3a48 100644
--- a/tools/build/feature/Makefile
+++ b/tools/build/feature/Makefile
@@ -21,6 +21,7 @@ FILES=                                          \
          test-reallocarray.bin			\
          test-libbfd-liberty.bin                \
          test-libbfd-liberty-z.bin              \
+         test-libbfd-liberty-z-zstd.bin         \
          test-cplus-demangle.bin                \
          test-cxa-demangle.bin                  \
          test-libcap.bin			\
@@ -272,15 +273,17 @@ $(OUTPUT)test-libbfd.bin:
 	$(BUILD_BFD)
 
 $(OUTPUT)test-libbfd-threadsafe.bin:
-	$(BUILD_BFD) || $(BUILD_BFD) -liberty || $(BUILD_BFD) -liberty -lz
+	$(BUILD_BFD) || $(BUILD_BFD) -liberty || $(BUILD_BFD) -liberty -lz || $(BUILD_BFD) -liberty -lz -lzstd
 
 $(OUTPUT)test-disassembler-four-args.bin:
 	$(BUILD_BFD) -lopcodes || $(BUILD_BFD) -lopcodes -liberty || \
-	$(BUILD_BFD) -lopcodes -liberty -lz
+	$(BUILD_BFD) -lopcodes -liberty -lz || \
+	$(BUILD_BFD) -lopcodes -liberty -lz -lzstd
 
 $(OUTPUT)test-disassembler-init-styled.bin:
 	$(BUILD_BFD) -lopcodes || $(BUILD_BFD) -lopcodes -liberty || \
-	$(BUILD_BFD) -lopcodes -liberty -lz
+	$(BUILD_BFD) -lopcodes -liberty -lz || \
+	$(BUILD_BFD) -lopcodes -liberty -lz -lzstd
 
 $(OUTPUT)test-reallocarray.bin:
 	$(BUILD)
@@ -291,6 +294,9 @@ $(OUTPUT)test-libbfd-liberty.bin:
 $(OUTPUT)test-libbfd-liberty-z.bin:
 	$(CC) $(CFLAGS) -Wall -Werror -o $@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty -lz
 
+$(OUTPUT)test-libbfd-liberty-z-zstd.bin:
+	$(CC) $(CFLAGS) -Wall -Werror -o $@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty -lz -lzstd
+
 $(OUTPUT)test-cplus-demangle.bin:
 	$(BUILD) -liberty
 
diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
index 4d5993da9f94..24a99545c9bc 100644
--- a/tools/perf/Makefile.config
+++ b/tools/perf/Makefile.config
@@ -906,6 +906,8 @@ ifdef BUILD_NONDISTRO
     EXTLIBS += -lbfd -lopcodes -liberty
   else ifeq ($(feature-libbfd-liberty-z), 1)
     EXTLIBS += -lbfd -lopcodes -liberty -lz
+  else ifeq ($(feature-libbfd-liberty-z-zstd), 1)
+    EXTLIBS += -lbfd -lopcodes -liberty -lz -lzstd
   endif
 
   CFLAGS += -DHAVE_LIBBFD_SUPPORT
-- 
2.55.0.1003.g10538fe699-goog


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH v1] tools build: Add explicitly sequenced -lzstd to libbfd feature fallback
  2026-09-09 18:10 [PATCH v1] tools build: Add explicitly sequenced -lzstd to libbfd feature fallback Ian Rogers
@ 2026-09-09 18:18 ` sashiko-bot
  0 siblings, 0 replies; 2+ messages in thread
From: sashiko-bot @ 2026-09-09 18:18 UTC (permalink / raw)
  To: Ian Rogers; +Cc: linux-perf-users

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] The newly added fallback feature test 'libbfd-liberty-z-zstd' is never executed, making the new libbfd zstd fallback condition dead code and failing to fix the link error.
--

commit 5475f00ff10a072611b6ed7d2a3b54cfea18c571
Author: Ian Rogers <irogers@google.com>

tools build: Add explicitly sequenced -lzstd to libbfd feature fallback

This commit extends the build feature testing cascade to probe for -lz -lzstd
when basic libbfd fallback variants fail. This aims to natively support
recent distributions that ship statically compiled binutils with zstd
dependencies.

> diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
> --- a/tools/perf/Makefile.config
> +++ b/tools/perf/Makefile.config
[ ... ]
> @@ -905,6 +905,8 @@ ifdef BUILD_NONDISTRO
>      EXTLIBS += -lbfd -lopcodes -liberty
>    else ifeq ($(feature-libbfd-liberty-z), 1)
>      EXTLIBS += -lbfd -lopcodes -liberty -lz
> +  else ifeq ($(feature-libbfd-liberty-z-zstd), 1)
> +    EXTLIBS += -lbfd -lopcodes -liberty -lz -lzstd

[Severity: Medium]
Is the feature-libbfd-liberty-z-zstd check actually executed?

It looks like $(call feature_check,libbfd-liberty-z-zstd) is missing from
the BUILD_NONDISTRO feature checks earlier in tools/perf/Makefile.config.
Without the feature check being called to trigger the evaluation, will this
conditional always evaluate to false and act as dead code, leaving the build
still failing on systems requiring the zstd fallback?

>    endif
>  
>    CFLAGS += -DHAVE_LIBBFD_SUPPORT

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260909181030.1870496-1-irogers@google.com?part=1

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-09-09 18:18 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-09 18:10 [PATCH v1] tools build: Add explicitly sequenced -lzstd to libbfd feature fallback Ian Rogers
2026-09-09 18:18 ` sashiko-bot

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.