Bugzilla – Bug 1219745
ARM binutils no longer load LTO plugin automatically
Last modified: 2024-07-16 18:39:06 UTC
Since the latest ARM tumbleweed snapshot, several packages i maintain (in “experimental” projects) have failed building on armv7 and armv6 due to an underlink: signal-desktop: https://build.opensuse.org/package/live_build_log/network:im:signal/signal-desktop/openSUSE_Tumbleweed/armv7l Here you can see %check detecting undefined symbols in `better_sqlite3.node` (they should have come from `Release/obj.target/deps/sqlite3.a`) and in `libsignal_client_linux_arm.node` (they should have come from `-lssl -lcrypto` — here it refers a custom boringssl build, NOT the system openssl3) code: https://build.opensuse.org/package/live_build_log/devel:tools:ide:vscode/code/openSUSE_Tumbleweed/armv7l Here an undefined symbol in a library that is not shipped (only used during build) causes dlopen to fail. I have run this build locally (under qemu-user — i don't have arm hardware) and verified that `tree_sitter_runtime_binding.node` indeed fails to include the `Release/obj.target/tree_sitter.a` archive that was specifed on the linker commandline.
I have noticed the following warning appearing multiple times in the buildlog which clues us to the nature of the problem: BFD: Release/obj.target/tree_sitter/vendor/tree-sitter/lib/src/lib.o: plugin needed to handle lto object …indeed, setting AR=gcc-ar NM=gcc-nm RANLIB=gcc-ranlib works around this problem.
has worked for a while normally