lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <5fez6crfpybdn4vzjtb6ii2cv4wni5rscbbhjzk6hapjsqy4ym@5hcyya4uc534>
Date: Tue, 20 Jan 2026 21:29:21 -0800
From: Josh Poimboeuf <jpoimboe@...nel.org>
To: Sasha Levin <sashal@...nel.org>
Cc: "Rafael J. Wysocki" <rafael@...nel.org>, 
	Peter Zijlstra <peterz@...radead.org>, Arnaldo Carvalho de Melo <acme@...nel.org>, 
	the arch/x86 maintainers <x86@...nel.org>, Linus Torvalds <torvalds@...ux-foundation.org>, 
	Linux Kernel Mailing List <linux-kernel@...r.kernel.org>, Linux regressions mailing list <regressions@...ts.linux.dev>, 
	irogers@...gle.com
Subject: Re: [Regression in 6.19-rc6] Build breakage after commit 436326bc525d

On Tue, Jan 20, 2026 at 08:18:35PM -0500, Sasha Levin wrote:
> On Tue, Jan 20, 2026 at 10:33:12PM +0100, Rafael J. Wysocki wrote:
> > On Tue, Jan 20, 2026 at 9:22 PM Sasha Levin <sashal@...nel.org> wrote:
> > > 
> > > On Tue, Jan 20, 2026 at 09:04:25PM +0100, Rafael J. Wysocki wrote:
> > > >On Tue, Jan 20, 2026 at 8:58 PM Sasha Levin <sashal@...nel.org> wrote:
> > > >>
> > > >> On Tue, Jan 20, 2026 at 07:29:58PM +0100, Rafael J. Wysocki wrote:
> > > >> >On Tue, Jan 20, 2026 at 6:40 PM Sasha Levin <sashal@...nel.org> wrote:
> > > >> >>
> > > >> >> On Tue, Jan 20, 2026 at 11:28:32AM +0100, Peter Zijlstra wrote:
> > > >> >> >On Mon, Jan 19, 2026 at 09:19:31PM +0100, Rafael J. Wysocki wrote:
> > > >> >> >> Hi Sasha,
> > > >> >> >>
> > > >> >> >> Commit 436326bc525d ("objtool: fix build failure due to missing
> > > >> >> >> libopcodes check") breaks kernel build for me.
> > > >> >> >>
> > > >> >> >> Here's what I get when I try to build the kernel after that commit:
> > > >> >> >>
> > > >> >> >>   LD      /scratch/rafael/work/build/xps13/tools/objtool/objtool-in.o
> > > >> >> >>   LINK    /scratch/rafael/work/build/xps13/tools/objtool/objtool
> > > >> >> >> /usr/lib64/gcc/x86_64-suse-linux/15/../../../../x86_64-suse-linux/bin/ld:
> > > >> >> >> /usr/lib64/gcc/x86_64-suse-linux/15/../../../../lib64/libopcodes.a(aarch64-dis.o):
> > > >> >> >> in function `print_operands':
> > > >> >> >> /home/abuild/rpmbuild/BUILD/binutils-2.45/build-dir/opcodes/../../opcodes/aarch64-dis.c:3945:(.text+0x6317):
> > > >> >> >> undefined reference to `xmalloc'
> > > >> >> >> /usr/lib64/gcc/x86_64-suse-linux/15/../../../../x86_64-suse-linux/bin/ld:
> > > >> >> >> /home/abuild/rpmbuild/BUILD/binutils-2.45/build-dir/opcodes/../../opcodes/aarch64-dis.c:3992:(.text+0x6723):
> > > >> >> >> undefined reference to `_sch_istable'
> > > >> >> >> /usr/lib64/gcc/x86_64-suse-linux/15/../../../../x86_64-suse-linux/bin/ld:
> > > >> >> >> /usr/lib64/gcc/x86_64-suse-linux/15/../../../../lib64/libopcodes.a(aarch64-dis.o):
> > > >> >> >> in function `print_insn_aarch64':
> > > >> >> >> /home/abuild/rpmbuild/BUILD/binutils-2.45/build-dir/opcodes/../../opcodes/aarch64-dis.c:4559:(.text+0x6b1e):
> > > >> >> >> undefined reference to `bfd_get_bits'
> > > >> >> >> /usr/lib64/gcc/x86_64-suse-linux/15/../../../../x86_64-suse-linux/bin/ld:
> > > >> >> >> /usr/lib64/gcc/x86_64-suse-linux/15/../../../../lib64/libopcodes.a(aarch64-dis.o):
> > > >> >> >> in function `parse_aarch64_dis_option':
> > > >> >> >> /home/abuild/rpmbuild/BUILD/binutils-2.45/build-dir/opcodes/../../opcodes/aarch64-dis.c:103:(.text+0x6dea):
> > > >> >> >> undefined reference to `_bfd_error_handler'
> > > >> >> >> /usr/lib64/gcc/x86_64-suse-linux/15/../../../../x86_64-suse-linux/bin/ld:
> > > >> >> >> /usr/lib64/gcc/x86_64-suse-linux/15/../../../../lib64/libopcodes.a(aarch64-opc.o):
> > > >> >> >> in function `init_insn_sequence':
> > > >> >> >> /home/abuild/rpmbuild/BUILD/binutils-2.45/build-dir/opcodes/../../opcodes/aarch64-opc.c:5561:(.text+0x5c06):
> > > >> >> >> undefined reference to `xcalloc'
> > > >> >> >> /usr/lib64/gcc/x86_64-suse-linux/15/../../../../x86_64-suse-linux/bin/ld:
> > > >> >> >> /usr/lib64/gcc/x86_64-suse-linux/15/../../../../lib64/libopcodes.a(disassemble.o):
> > > >> >> >> in function `remove_whitespace_and_extra_commas':
> > > >> >> >> /home/abuild/rpmbuild/BUILD/binutils-2.45/build-dir/opcodes/../../opcodes/disassemble.c:801:(.text+0x346):
> > > >> >> >> undefined reference to `_sch_istable'
> > > >> >> >> ...
> > > >> >> >>
> > > >> >> >> (many more similar messages skipped).
> > > >> >> >>
> > > >> >> >> Reverting commit 436326bc525d makes the problem go away.
> > > >> >>
> > > >> >> Thanks for the report Rafael!
> > > >> >>
> > > >> >> Could you confirm that you're linking against static libraries? I haven't
> > > >> >> tested that scenario.
> > > >> >
> > > >> >How do I check that?
> > > >>
> > > >> What do you get running the below?
> > > >>
> > > >>    ls /usr/lib/*/libopcodes*
> > > >
> > > >"No such file or directory"
> > > >
> > > >However,
> > > >
> > > >> ls /usr/lib64/libopcodes*
> > > >/usr/lib64/libopcodes-2.45.0.20251103-150100757.so  /usr/lib64/libopcodes.a
> > > 
> > > The linker looks for libopcodes.so (not the versioned .so). Without that
> > > symlink, it falls back to libopcodes.a. So yes, looks like you're using static
> > > linking.
> > > 
> > > To confirm, can you try to:
> > > 
> > >    sudo ln -s libopcodes-2.45.0.20251103-150100757.so /usr/lib64/libopcodes.so
> > > 
> > > Any then running the build again?
> > 
> > Yes, this makes the build work (without reverting the commit in question).
> 
> Great! So something like the patch below should fix the static scenario. I've
> tested it locally on Debian but it'll be great to give it a go on a different
> distro.
> 
> It's also a bit ugly, but I'm not really sure what we can do about it. No
> dependency info in static libs :/
> 
> 
> diff --git a/tools/objtool/Makefile b/tools/objtool/Makefile
> index 9b4503113ce5f..a40f302329291 100644
> --- a/tools/objtool/Makefile
> +++ b/tools/objtool/Makefile
> @@ -77,8 +77,21 @@ HOST_OVERRIDES := CC="$(HOSTCC)" LD="$(HOSTLD)" AR="$(HOSTAR)"
>  # We check using HOSTCC directly rather than the shared feature framework
>  # because objtool is a host tool that links against host libraries.
>  #
> -HAVE_LIBOPCODES := $(shell echo 'int main(void) { return 0; }' | \
> -                       $(HOSTCC) -xc - -o /dev/null -lopcodes 2>/dev/null && echo y)
> +# When using shared libraries, -lopcodes is sufficient as dependencies are
> +# resolved automatically. With static libraries, we must explicitly link
> +# against libopcodes' dependencies: libbfd, libiberty, and sometimes libz.
> +# Try each combination and use the first one that succeeds.
> +#
> +LIBOPCODES_LIBS := $(shell \
> +       for libs in "-lopcodes" \
> +                   "-lopcodes -lbfd" \
> +                   "-lopcodes -lbfd -liberty" \
> +                   "-lopcodes -lbfd -liberty -lz"; do \

Instead of hard-coding all the libraries, I think we can just use
pkg-config to tell us the needed dependencies.

See for example what we're already doing elsewhere in that Makefile:

LIBELF_FLAGS := $(shell $(HOSTPKG_CONFIG) libelf --cflags 2>/dev/null)
LIBELF_LIBS  := $(shell $(HOSTPKG_CONFIG) libelf --libs 2>/dev/null || echo -lelf)

-- 
Josh

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ