Bugzilla – Bug 1133255
LTO: libvpx build fails
Last modified: 2023-10-01 08:05:16 UTC
Fails with LTO due to many unresolved symbols: [ 106s] g++ -m64 -o test_libvpx test/../ivfenc.c.o test/../md5_utils.c.o test/../third_party/libwebm/mkvparser/mkvparser.cc.o test/../third_party/libwebm/mkvparser/mkvreader.cc.o test/../webmdec.cc.o test/../y4menc.c.o test/../y4minput.c.o test/active_map_refresh_test.cc.o test/active_map_test.cc.o test/alt_ref_aq_segment_test.cc.o test/altref_test.cc.o test/aq_segment_test.cc.o test/bench.cc.o test/borders_test.cc.o test/byte_alignment_test.cc.o test/config_test.cc.o test/cpu_speed_test.cc.o test/cq_test.cc.o test/decode_api_test.cc.o test/decode_corrupted.cc.o test/decode_svc_test.cc.o test/decode_test_driver.cc.o test/encode_api_test.cc.o test/encode_test_driver.cc.o test/error_resilience_test.cc.o test/external_frame_buffer_test.cc.o test/frame_size_tests.cc.o test/invalid_file_test.cc.o test/keyframe_test.cc.o test/level_test.cc.o test/realtime_test.cc.o test/resize_test.cc.o test/svc_datarate_test.cc.o test/svc_end_to_end_test.cc.o test/svc_test.cc.o test/test_libvpx.cc.o test/test_vector_test.cc.o test/test_vectors.cc.o test/user_priv_test.cc.o test/vp8_datarate_test.cc.o test/vp9_datarate_test.cc.o test/vp9_end_to_end_test.cc.o test/vp9_ethread_test.cc.o test/vp9_lossless_test.cc.o test/vp9_motion_vector_test.cc.o test/vp9_skip_loopfilter_test.cc.o test/y4m_test.cc.o -L. -lvpx -lgtest -lpthread -lm -lpthread [ 186s] /usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/ld: /tmp/test_libvpx.ilnXoM.ltrans0.ltrans.o: in function `testing::internal::scoped_ptr<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::reset(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*) [clone .isra.0] [clone .constprop.0]': [ 186s] <artificial>:(.text+0x15): undefined reference to `testing::internal::IsTrue(bool)' [ 186s] /usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/ld: /tmp/test_libvpx.ilnXoM.ltrans0.ltrans.o: in function `testing::internal::scoped_ptr<std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> > >::reset(std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >*) [clone .isra.0] [clone .constprop.0]': [ 186s] <artificial>:(.text+0x70): undefined reference to `testing::internal::IsTrue(bool)' [ 186s] /usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/ld: /tmp/test_libvpx.ilnXoM.ltrans0.ltrans.o: in function `testing::internal::scoped_ptr<testing::internal::ParamIteratorInterface<libvpx_test::CodecFactory const*> >::reset(testing::internal::ParamIteratorInterface<libvpx_test::CodecFactory const*>*) [clone .isra.0] [clone .constprop.0]': [ 186s] <artificial>:(.text+0x179): undefined reference to `testing::internal::IsTrue(bool)' [ 186s] /usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/ld: <artificial>:(.text+0x1b5): undefined reference to `testing::internal::IsTrue(bool)' [ 186s] /usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/ld: /tmp/test_libvpx.ilnXoM.ltrans0.ltrans.o: in function `libvpx_test::Encoder::Control(int, vpx_active_map*) [clone .constprop.0]': [ 186s] <artificial>:(.text+0x26c): undefined reference to `testing::Message::Message()' [ 186s] /usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/ld: <artificial>:(.text+0x2c0): undefined reference to `testing::internal::AssertHelper::AssertHelper(testing::TestPartResult::Type, char const*, int, char const*)' [ 186s] /usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/ld: <artificial>:(.text+0x2cb): undefined reference to `testing::internal::AssertHelper::operator=(testing::Message const&) const' [ 186s] /usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/ld: <artificial>:(.text+0x2d3): undefined reference to `testing::internal::AssertHelper::~AssertHelper()' [ 186s] /usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/ld: /tmp/test_libvpx.ilnXoM.ltrans0.ltrans.o: in function `testing::AssertionResult testing::internal::CmpHelperEQFailure<int, vpx_codec_err_t>(char const*, char const*, int const&, vpx_codec_err_t const&) [clone .constprop.0]': [ 186s] <artificial>:(.text+0x8ca): undefined reference to `testing::internal::EqFailure(char const*, char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)' [ 186s] /usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/ld: /tmp/test_libvpx.ilnXoM.ltrans0.ltrans.o: in function `testing::internal::scoped_ptr<testing::internal::TestMetaFactoryBase<std::tuple<libvpx_test::CodecFactory const*, (anonymous namespace)::DecodeParam> > >::reset(testing::internal::TestMetaFactoryBase<std::tuple<libvpx_test::CodecFactory const*, (anonymous namespace)::DecodeParam> >*) [clone .isra.0] [clone .constprop.0]': [ 186s] <artificial>:(.text+0x940): undefined reference to `testing::internal::IsTrue(bool)' [ 186s] /usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/ld: /tmp/test_libvpx.ilnXoM.ltrans0.ltrans.o: in function `testing::AssertionResult testing::internal::CmpHelperEQFailure<int, unsigned short>(char const*, char const*, int const&, unsigned short const&) [clone .constprop.0]': [ 186s] <artificial>:(.text+0x9f7): undefined reference to `testing::internal::EqFailure(char const*, char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)' [ 186s] /usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/ld: /tmp/test_libvpx.ilnXoM.ltrans0.ltrans.o: in function `testing::internal::scoped_ptr<testing::internal::ParamIteratorInterface<std::tuple<libvpx_test::CodecFactory const*, libvpx_test::TestMode, int> > >::reset(testing::internal::ParamIteratorInterface<std::tuple<libvpx_test::CodecFactory const*, libvpx_test::TestMode, int> >*) [clone .isra.0] [clone .constprop.0]':
thank you for fixing it:)
Your welcome, I'll keep it open as we may want to analyse that one day. I'm assigning the bug to me.
I looked briefly at this during bumping libvpx to 1.13.1 Building with LTO enabled still fails for TW :-( but: it looks like fedorians are able to build with LTO "on" See https://src.fedoraproject.org/rpms/libvpx/blob/rawhide/f/libvpx.spec Since its a early sunday I opted not to pull all the patches and other bells and whistles they do to see if I could replicate the win. Just leaving a comment here in case someone else feels like picking up the mantle