Skip to content

Commit dc67a35

Browse files
committed
Merge tag 'objtool-urgent-2026-01-24' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull objtool fix from Ingo Molnar: "Fix objtool build error in non-standard static library build environments" * tag 'objtool-urgent-2026-01-24' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: objtool: Fix libopcodes linking with static libraries
2 parents 4fc8d3f + 3f2de81 commit dc67a35

1 file changed

Lines changed: 17 additions & 4 deletions

File tree

tools/objtool/Makefile

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,19 +77,32 @@ HOST_OVERRIDES := CC="$(HOSTCC)" LD="$(HOSTLD)" AR="$(HOSTAR)"
7777
# We check using HOSTCC directly rather than the shared feature framework
7878
# because objtool is a host tool that links against host libraries.
7979
#
80-
HAVE_LIBOPCODES := $(shell echo 'int main(void) { return 0; }' | \
81-
$(HOSTCC) -xc - -o /dev/null -lopcodes 2>/dev/null && echo y)
80+
# When using shared libraries, -lopcodes is sufficient as dependencies are
81+
# resolved automatically. With static libraries, we must explicitly link
82+
# against libopcodes' dependencies: libbfd, libiberty, and sometimes libz.
83+
# Try each combination and use the first one that succeeds.
84+
#
85+
LIBOPCODES_LIBS := $(shell \
86+
for libs in "-lopcodes" \
87+
"-lopcodes -lbfd" \
88+
"-lopcodes -lbfd -liberty" \
89+
"-lopcodes -lbfd -liberty -lz"; do \
90+
echo 'extern void disassemble_init_for_target(void *);' \
91+
'int main(void) { disassemble_init_for_target(0); return 0; }' | \
92+
$(HOSTCC) -xc - -o /dev/null $$libs 2>/dev/null && \
93+
echo "$$libs" && break; \
94+
done)
8295

8396
# Styled disassembler support requires binutils >= 2.39
8497
HAVE_DISASM_STYLED := $(shell echo '$(pound)include <dis-asm.h>' | \
8598
$(HOSTCC) -E -xc - 2>/dev/null | grep -q disassembler_style && echo y)
8699

87100
BUILD_DISAS := n
88101

89-
ifeq ($(HAVE_LIBOPCODES),y)
102+
ifneq ($(LIBOPCODES_LIBS),)
90103
BUILD_DISAS := y
91104
OBJTOOL_CFLAGS += -DDISAS -DPACKAGE='"objtool"'
92-
OBJTOOL_LDFLAGS += -lopcodes
105+
OBJTOOL_LDFLAGS += $(LIBOPCODES_LIBS)
93106
ifeq ($(HAVE_DISASM_STYLED),y)
94107
OBJTOOL_CFLAGS += -DDISASM_INIT_STYLED
95108
endif

0 commit comments

Comments
 (0)