Re: [PATCH v3 1/4] tools build: Add explicitly sequenced -lzstd to libbfd feature fallback
From: bot+bpf-ci
Date: Wed Nov 04 2026 - 00:04:01 EST
> tools build: Add explicitly sequenced -lzstd to libbfd feature fallback
TL;DR: Possible build break at this commit: the libbfd -lzstd fallback is
removed but no consumer uses the new feature test yet, so perf may fail to
link and bpftool may lose JIT disassembly.
> diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
> --- a/tools/build/feature/Makefile
> +++ b/tools/build/feature/Makefile
[ ... ]
> @@ -249,18 +250,21 @@ $(OUTPUT)test-python-module.bin:
> $(BUILD) $(FLAGS_PYTHON_EMBED)
>
> $(OUTPUT)test-libbfd.bin:
> - $(BUILD_BFD) || $(BUILD_BFD) -lzstd
> + $(BUILD_BFD)
>
> $(OUTPUT)test-libbfd-threadsafe.bin:
> - $(BUILD_BFD) || $(BUILD_BFD) -lzstd || $(BUILD_BFD) -liberty || $(BUILD_BFD) -liberty -lz
> + $(BUILD_BFD) || $(BUILD_BFD) -liberty || $(BUILD_BFD) -liberty -lz || \
> + $(BUILD_BFD) -liberty -lz -lzstd
Can this leave perf and bpftool unable to link libbfd at this commit?
Nothing here reads the new libbfd-liberty-z-zstd result. Neither
tools/perf/Makefile.config nor tools/bpf/bpftool/Makefile calls
feature_check for it or has a branch that uses it.
On a system where "-lbfd -ldl" fails but "-lbfd -ldl -lzstd" links, the
parent commit gave feature-libbfd=1 through the removed fallback. Here
feature-libbfd, feature-libbfd-liberty and feature-libbfd-liberty-z are
all 0, while feature-libbfd-threadsafe is 1 through the new
"-liberty -lz -lzstd" fallback.
With BUILD_NONDISTRO=1, perf's Makefile.config then passes the threadsafe
check but takes none of the EXTLIBS branches:
ifeq ($(feature-libbfd), 1)
EXTLIBS += -lbfd -lopcodes
else ifeq ($(feature-libbfd-liberty), 1)
EXTLIBS += -lbfd -lopcodes -liberty
else ifeq ($(feature-libbfd-liberty-z), 1)
EXTLIBS += -lbfd -lopcodes -liberty -lz
endif
CFLAGS += -DHAVE_LIBBFD_SUPPORT
util/libbfd.o is still built, so the perf link can fail with undefined
references to bfd_openr(), bfd_check_format() and disassembler(). bpftool
goes down the same chain, silently drops -lbfd and -DHAVE_LIBBFD_SUPPORT,
and loses JIT disassembly.
The consumers are added later in the series:
6eb66acc776f ("perf build: Add explicitly sequenced -lzstd to libbfd
feature fallback")
155513d3a59d ("bpftool: Add explicitly sequenced -lzstd to libbfd
feature fallback")
Would it be better to keep the old -lzstd fallback until those consumers
land, or to reorder or squash so that each commit remains buildable?
---
AI reviewed your patch. Please fix the bug or email reply why it's not a bug.
See: https://github.com/kernel-patches/vmtest/blob/master/ci/claude/README.md
CI run summary: https://github.com/kernel-patches/bpf/actions/runs/41774922004