mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-10-28 04:45:43 +01:00
objtool: Validate disassembler headers in libopcodes probe
commit3f2de814c0("objtool: Fix libopcodes linking with static libraries") tested for libopcodes availability by linking a test snippet with a forward declaration of disassemble_init_for_target(). However, testing symbol linkage with an extern declaration only verifies the presence of the library (.so/.a) and bypasses checking for development headers (binutils-dev). On systems where libopcodes is present without development headers installed, the probe succeeds, enabling BUILD_DISAS. Subsequent compilation of objtool then fails: fatal error: 'bfd.h' file not found 113 | #include <bfd.h> Additionally, the probe invokes $(HOSTCC) without $(HOSTCFLAGS), ignoring any sysroot or include flags specified for the host compiler. Fix this by including <bfd.h> and <dis-asm.h> directly in the test snippet, passing $(HOSTCFLAGS) so host compiler options are respected, and defining PACKAGE="objtool" to satisfy the configuration check in <bfd.h>. Fixes:3f2de814c0("objtool: Fix libopcodes linking with static libraries") Fixes:436326bc52("objtool: fix build failure due to missing libopcodes check") Reported-by: Alice Ryhl <[email protected]> Assisted-by: Antigravity:Gemini-Next Signed-off-by: Ulises Mendez Martinez <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Josh Poimboeuf <[email protected]>
This commit is contained in:
1 parent
ac323c9467
commit
7e61560628
1 file changed
+5
-3
@@ -89,9 +89,11 @@ LIBOPCODES_LIBS := $(shell \
|
||||
"-lopcodes -lbfd" \
|
||||
"-lopcodes -lbfd -liberty" \
|
||||
"-lopcodes -lbfd -liberty -lz"; do \
|
||||
echo 'extern void disassemble_init_for_target(void *);' \
|
||||
'int main(void) { disassemble_init_for_target(0); return 0; }' | \
|
||||
$(HOSTCC) -xc - -o /dev/null $$libs 2>/dev/null && \
|
||||
printf '%s\n' \
|
||||
'$(pound)include <bfd.h>' \
|
||||
'$(pound)include <dis-asm.h>' \
|
||||
'int main(void) { disassemble_init_for_target(0); return 0; }' | \
|
||||
$(HOSTCC) $(HOSTCFLAGS) -DPACKAGE='"objtool"' -xc - -o /dev/null $$libs 2>/dev/null && \
|
||||
echo "$$libs" && break; \
|
||||
done)
|
||||
|
||||
|
||||
Reference in new issue
Block a user