Firefox-136.0: when built with --with-system-av1 linking fails with "ld.lld: error: undefined symbol: aom_codec_av1_cx"
Categories
(Firefox Build System :: General, defect)
Tracking
(firefox138 fixed)
Tracking | Status | |
---|---|---|
firefox138 | --- | fixed |
People
(Reporter: juippis, Assigned: sergesanspaille)
References
Details
Attachments
(3 files)
Steps to reproduce:
Build firefox-136.0 with the newly introduced --with-system-av1
flag that uses system lib instead of the bundled one.
Actual results:
Linking phase fails to:
ld.lld: error: undefined symbol: aom_codec_av1_cx
9:22.05 /usr/lib/llvm/19/bin/x86_64-pc-linux-gnu-clang++-19 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fstack-clash-protection -fstrict-flex-arrays=1 -fno-rtti -pthread -fno-sized-deallocation -fno-aligned-new -ffunction-sections -fdata-sections -fno-math-errno -fno-exceptions -fPIC -march=native -pipe -frecord-gcc-switches -O2 -fomit-frame-pointer -funwind-tables -shared -Wl,-z,defs -Wl,--gc-sections -Wl,-h,libmozavcodec.so -o ../../../dist/bin/libmozavcodec.so -Wl,@/var/tmp/portage/www-client/firefox-136.0/work/firefox_build/media/ffvpx/libavcodec/libmozavcodec_so.list -B /var/tmp/portage/www-client/firefox-136.0/work/firefox_build/build/unix/elfhack -Wl,--real-linker,/usr/lib/llvm/19/bin/ld.lld -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,--defsym=__gentoo_check_ldflags__=0 -Wl,--undefined-version -Wl,-rpath=/usr/lib64/firefox,--enable-new-dtags -Wl,-z,noexecstack -Wl,-z,text -Wl,-z,relro -Wl,-z,now -Wl,-z,nocopyreloc -fuse-ld=lld -fstack-protector-strong -fstack-clash-protection -Wl,-rpath-link,/var/tmp/portage/www-client/firefox-136.0/work/firefox_build/dist/bin ../../../build/pure_virtual/libpure_virtual.a ../../../dist/bin/libgkcodecs.so ../../../dist/bin/libmozavutil.so -Wl,--version-script,libmozavcodec.so.symbols -ldl -ldav1d -lvpx -lm
9:22.13 ld.lld: error: undefined symbol: aom_codec_av1_cx
9:22.13 >>> referenced by libaomenc.c
9:22.13 >>> libaomenc.o:(av1_init)
9:22.13 >>> referenced by libaomenc.c
9:22.13 >>> libaomenc.o:(av1_get_supported_config)
9:22.14 ld.lld: error: undefined symbol: aom_img_remove_metadata
9:22.14 >>> referenced by libaomenc.c
9:22.14 >>> libaomenc.o:(aom_encode)
9:22.14 >>> referenced by libaomenc.c
9:22.14 >>> libaomenc.o:(aom_free)
9:22.14 ld.lld: error: undefined symbol: aom_img_add_metadata
9:22.14 >>> referenced by libaomenc.c
9:22.14 >>> libaomenc.o:(aom_encode)
9:22.14 ld.lld: error: undefined symbol: aom_codec_control
9:22.14 >>> referenced by libaomenc.c
9:22.14 >>> libaomenc.o:(aom_encode)
9:22.14 >>> referenced by libaomenc.c
9:22.14 >>> libaomenc.o:(codecctl_int)
9:22.14 >>> referenced by libaomenc.c
9:22.14 >>> libaomenc.o:(codecctl_svcp)
9:22.14 >>> referenced 2 more times
9:22.15 ld.lld: error: undefined symbol: aom_codec_encode
9:22.15 >>> referenced by libaomenc.c
9:22.15 >>> libaomenc.o:(aom_encode)
9:22.15 ld.lld: error: undefined symbol: aom_codec_get_cx_data
9:22.15 >>> referenced by libaomenc.c
9:22.15 >>> libaomenc.o:(aom_encode)
9:22.15 >>> referenced by libaomenc.c
9:22.15 >>> libaomenc.o:(aom_encode)
9:22.15 ld.lld: error: undefined symbol: aom_codec_destroy
9:22.15 >>> referenced by libaomenc.c
9:22.15 >>> libaomenc.o:(aom_free)
9:22.15 ld.lld: error: undefined symbol: aom_codec_version
9:22.15 >>> referenced by libaomenc.c
9:22.15 >>> libaomenc.o:(av1_get_supported_config)
9:22.15 ld.lld: error: undefined symbol: aom_codec_get_caps
9:22.15 >>> referenced by libaomenc.c
9:22.15 >>> libaomenc.o:(av1_get_supported_config)
9:22.15 >>> referenced by libaomenc.c
9:22.15 >>> libaomenc.o:(aom_init)
9:22.15 ld.lld: error: undefined symbol: aom_codec_version_str
9:22.15 >>> referenced by libaomenc.c
9:22.15 >>> libaomenc.o:(aom_init)
9:22.15 ld.lld: error: undefined symbol: aom_codec_build_config
9:22.16 >>> referenced by libaomenc.c
9:22.16 >>> libaomenc.o:(aom_init)
9:22.16 ld.lld: error: undefined symbol: aom_codec_enc_config_default
9:22.16 >>> referenced by libaomenc.c
9:22.16 >>> libaomenc.o:(aom_init)
9:22.16 ld.lld: error: undefined symbol: aom_codec_err_to_string
9:22.16 >>> referenced by libaomenc.c
9:22.16 >>> libaomenc.o:(aom_init)
9:22.16 ld.lld: error: undefined symbol: aom_codec_enc_init_ver
9:22.16 >>> referenced by libaomenc.c
9:22.16 >>> libaomenc.o:(aom_init)
9:22.16 ld.lld: error: undefined symbol: aom_codec_set_option
9:22.16 >>> referenced by libaomenc.c
9:22.16 >>> libaomenc.o:(aom_init)
9:22.16 ld.lld: error: undefined symbol: aom_img_wrap
9:22.16 >>> referenced by libaomenc.c
9:22.16 >>> libaomenc.o:(aom_init)
9:22.16 ld.lld: error: undefined symbol: aom_codec_error
9:22.17 >>> referenced by libaomenc.c
9:22.17 >>> libaomenc.o:(log_encoder_error)
9:22.17 ld.lld: error: undefined symbol: aom_codec_error_detail
9:22.17 >>> referenced by libaomenc.c
9:22.17 >>> libaomenc.o:(log_encoder_error)
9:22.17 x86_64-pc-linux-gnu-clang++-19: error: linker command failed with exit code 1 (use -v to see invocation)
9:22.17 gmake[4]: *** [/var/tmp/portage/www-client/firefox-136.0/work/firefox-136.0/config/rules.mk:539: ../../../dist/bin/libmozavcodec.so] Error 1
9:22.17 gmake[4]: Leaving directory '/var/tmp/portage/www-client/firefox-136.0/work/firefox_build/media/ffvpx/libavcodec'
9:22.17 gmake[3]: *** [/var/tmp/portage/www-client/firefox-136.0/work/firefox-136.0/config/recurse.mk:72: media/ffvpx/libavcodec/target] Error 2
9:22.17 gmake[3]: *** Waiting for unfinished jobs....
Find the full build.log attached.
Expected results:
Build should succeed. If I manually add -laom
to my LDFLAGS
then the build passes and produces a working Firefox browser.
Reporter | ||
Comment 1•16 days ago
|
||
Note that when using bundled av1 there's no need to pass external LDFLAGS
to the build environment.
Comment 2•16 days ago
|
||
The Bugbug bot thinks this bug should belong to the 'Firefox Build System::General' component, and is moving the bug to that component. Please correct in case you think the bot is wrong.
Assignee | ||
Comment 3•16 days ago
|
||
Assignee | ||
Updated•16 days ago
|
Assignee | ||
Comment 4•16 days ago
|
||
Joonas, can you check if the attached patch fixes your issue?
Reporter | ||
Comment 5•16 days ago
|
||
Hey,
unfortunately no. Seems to error out in the same place and same error:
* Applying user patches from /etc/portage/patches ...
* Applying bmo-1951581-add-missing-system-av1-includes.patch ...
[ ok ]
* User patches applied.
8:54.91 ld.lld: error: undefined symbol: aom_codec_av1_cx
8:54.91 >>> referenced by libaomenc.c
8:54.91 >>> libaomenc.o:(av1_init)
8:54.91 >>> referenced by libaomenc.c
8:54.91 >>> libaomenc.o:(av1_get_supported_config)
8:54.92 ld.lld: error: undefined symbol: aom_img_remove_metadata
8:54.92 >>> referenced by libaomenc.c
8:54.92 >>> libaomenc.o:(aom_encode)
8:54.93 >>> referenced by libaomenc.c
8:54.93 >>> libaomenc.o:(aom_free)
8:54.93 ld.lld: error: undefined symbol: aom_img_add_metadata
8:54.93 >>> referenced by libaomenc.c
8:54.93 >>> libaomenc.o:(aom_encode)
8:54.93 ld.lld: error: undefined symbol: aom_codec_control
8:54.93 >>> referenced by libaomenc.c
8:54.93 >>> libaomenc.o:(aom_encode)
8:54.93 >>> referenced by libaomenc.c
8:54.93 >>> libaomenc.o:(codecctl_int)
8:54.93 >>> referenced by libaomenc.c
8:54.93 >>> libaomenc.o:(codecctl_svcp)
8:54.93 >>> referenced 2 more times
8:54.93 ld.lld: error: undefined symbol: aom_codec_encode
8:54.93 >>> referenced by libaomenc.c
8:54.93 >>> libaomenc.o:(aom_encode)
8:54.93 ld.lld: error: undefined symbol: aom_codec_get_cx_data
8:54.93 >>> referenced by libaomenc.c
8:54.93 >>> libaomenc.o:(aom_encode)
8:54.93 >>> referenced by libaomenc.c
8:54.93 >>> libaomenc.o:(aom_encode)
8:54.93 ld.lld: error: undefined symbol: aom_codec_destroy
8:54.93 >>> referenced by libaomenc.c
8:54.93 >>> libaomenc.o:(aom_free)
8:54.93 ld.lld: error: undefined symbol: aom_codec_version
8:54.93 >>> referenced by libaomenc.c
8:54.93 >>> libaomenc.o:(av1_get_supported_config)
8:54.93 ld.lld: error: undefined symbol: aom_codec_get_caps
8:54.93 >>> referenced by libaomenc.c
8:54.93 >>> libaomenc.o:(av1_get_supported_config)
8:54.93 >>> referenced by libaomenc.c
8:54.94 >>> libaomenc.o:(aom_init)
8:54.94 ld.lld: error: undefined symbol: aom_codec_version_str
8:54.94 >>> referenced by libaomenc.c
8:54.94 >>> libaomenc.o:(aom_init)
8:54.94 ld.lld: error: undefined symbol: aom_codec_build_config
8:54.94 >>> referenced by libaomenc.c
8:54.94 >>> libaomenc.o:(aom_init)
8:54.94 ld.lld: error: undefined symbol: aom_codec_enc_config_default
8:54.94 >>> referenced by libaomenc.c
8:54.94 >>> libaomenc.o:(aom_init)
8:54.94 ld.lld: error: undefined symbol: aom_codec_err_to_string
8:54.94 >>> referenced by libaomenc.c
8:54.94 >>> libaomenc.o:(aom_init)
8:54.94 ld.lld: error: undefined symbol: aom_codec_enc_init_ver
8:54.94 >>> referenced by libaomenc.c
8:54.94 >>> libaomenc.o:(aom_init)
8:54.94 ld.lld: error: undefined symbol: aom_codec_set_option
8:54.94 >>> referenced by libaomenc.c
8:54.94 >>> libaomenc.o:(aom_init)
8:54.94 ld.lld: error: undefined symbol: aom_img_wrap
8:54.94 >>> referenced by libaomenc.c
8:54.94 >>> libaomenc.o:(aom_init)
8:54.95 ld.lld: error: undefined symbol: aom_codec_error
8:54.95 >>> referenced by libaomenc.c
8:54.95 >>> libaomenc.o:(log_encoder_error)
8:54.95 ld.lld: error: undefined symbol: aom_codec_error_detail
8:54.95 >>> referenced by libaomenc.c
8:54.95 >>> libaomenc.o:(log_encoder_error)
8:54.95 x86_64-pc-linux-gnu-clang++-19: error: linker command failed with exit code 1 (use -v to see invocation)
8:54.95 gmake[4]: *** [/var/tmp/portage/www-client/firefox-136.0/work/firefox-136.0/config/rules.mk:539: ../../../dist/bin/libmozavcodec.so] Error 1
8:54.95 gmake[4]: Leaving directory '/var/tmp/portage/www-client/firefox-136.0/work/firefox_build/media/ffvpx/libavcodec'
8:54.95 gmake[3]: *** [/var/tmp/portage/www-client/firefox-136.0/work/firefox-136.0/config/recurse.mk:72: media/ffvpx/libavcodec/target] Error 2
8:54.95 gmake[3]: *** Waiting for unfinished jobs....
Assignee | ||
Comment 7•15 days ago
|
||
mmmh can you share the config.status?
Reporter | ||
Comment 8•14 days ago
|
||
Of course! Attached.
Reporter | ||
Comment 9•14 days ago
|
||
cat /usr/lib64/pkgconfig/aom.pc
# libaom pkg-config.
prefix=/usr
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib64
Name: aom
Description: Alliance for Open Media AV1 codec library v3.10.0.
Version: 3.10.0
Requires:
Conflicts:
Libs: -L${libdir} -laom
Libs.private: -lm
Cflags: -I${includedir}
Assignee | ||
Comment 10•14 days ago
|
||
Thanks, patch updated, it should work now
Updated•14 days ago
|
Reporter | ||
Comment 11•14 days ago
|
||
Thank you! The current revision indeed makes it build.
$ grep aom /var/db/pkg/www-client/firefox-136.0/NEEDED
/usr/lib64/firefox/libxul.so libmozsandbox.so,libgkcodecs.so,liblgpllibs.so,libmozsqlite3.so,libmozgtk.so,libmozwayland.so,libicui18n.so.76,libicuuc.so.76,libgraphite2.so.3,libaom.so.3,libdav1d.so.7,libX11.so.6,libXcomposite.so.1,libXdamage.so.1,libXext.so.6,libXfixes.so.3,libXrandr.so.2,libasound.so.2,libc.so.6,ld-linux-x86-64.so.2,libffi.so.8,libplc4.so,libnspr4.so,libz.so.1,libm.so.6,libssl3.so,libsmime3.so,libnss3.so,libnssutil3.so,libfreetype.so.6,libfontconfig.so.1,libgtk-3.so.0,libgdk-3.so.0,libpango-1.0.so.0,libharfbuzz.so.0,libatk-1.0.so.0,libcairo-gobject.so.2,libcairo.so.2,libgdk_pixbuf-2.0.so.0,libgio-2.0.so.0,libgobject-2.0.so.0,libglib-2.0.so.0,libjpeg.so.62,libwebp.so.7,libwebpdemux.so.2,libevent-2.1.so.7,libvpx.so.9,libpixman-1.so.0,libdbus-1.so.3,libxcb-shm.so.0,libX11-xcb.so.1,libxcb.so.1,libstdc++.so.6,libgcc_s.so.1
/usr/lib64/firefox/libmozavcodec.so libgkcodecs.so,libmozavutil.so,libdav1d.so.7,libaom.so.3,libvpx.so.9,libm.so.6,libc.so.6
Comment 12•13 days ago
|
||
Comment 13•13 days ago
|
||
bugherder |
Description
•