From: Khem Raj Date: Mon, 13 Apr 2026 07:37:22 +0000 (-0700) Subject: pulseaudio: Fix build with LLD linker X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=db89c7fd54bd943e4cf16bafaeb24f925c876bf0;p=thirdparty%2Fopenembedded%2Fopenembedded-core.git pulseaudio: Fix build with LLD linker LLD is stricter with version scripts This is a classic LLD vs GNU ld compatibility issue with version scripts. LLD is stricter than GNU ld — by default it treats unmatched version script symbols as hard errors, whereas GNU ld silently ignores them. What's happening is that the version script e.g. map.pa, declares symbols like pa_glib_mainloop_new under PULSE_0, but those symbols aren't being compiled into the current library target. Signed-off-by: Khem Raj Signed-off-by: Mathieu Dubois-Briand --- diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio.inc b/meta/recipes-multimedia/pulseaudio/pulseaudio.inc index b9dc8e236f..a8a5a1e074 100644 --- a/meta/recipes-multimedia/pulseaudio/pulseaudio.inc +++ b/meta/recipes-multimedia/pulseaudio/pulseaudio.inc @@ -74,6 +74,12 @@ USE_NLS = "yes" # Helps tests for -msse fail on non-SSE architectures which is all non-x86 TUNE_CCARGS:append:toolchain-clang = " -Werror=unused-command-line-argument" +# Fixes +# aarch64-yoe-linux-ld.lld: error: version script assignment of 'PULSE_0' to symbol 'pa_glib_mainloop_free' failed: symbol not defined +# aarch64-yoe-linux-ld.lld: error: version script assignment of 'PULSE_0' to symbol 'pa_glib_mainloop_get_api' failed: symbol not defined +# aarch64-yoe-linux-ld.lld: error: version script assignment of 'PULSE_0' to symbol 'pa_glib_mainloop_new' failed: symbol not defined +LDFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}" + # mix_neon.c:179:9: error: invalid operand in inline asm: 'vld1.s32 ${0:h}, [$2] # vld1.s32 ${1:h}, [$3] ' TOOLCHAIN:armv7ve = "gcc" @@ -209,7 +215,7 @@ ALLOW_EMPTY:${PN} = "1" CONFFILES:libpulse = "${sysconfdir}/pulse/client.conf" -CONFFILES:pulseaudio-server = "\ +CONFFILES:pulseaudio-server = "\ ${sysconfdir}/pulse/default.pa \ ${sysconfdir}/pulse/daemon.conf \ ${sysconfdir}/pulse/system.pa \