Bug 1133255 - LTO: libvpx build fails
Summary: LTO: libvpx build fails
Status: REOPENED
Alias: None
Product: openSUSE Tumbleweed
Classification: openSUSE
Component: Basesystem (show other bugs)
Version: Current
Hardware: Other Other
: P5 - None : Normal (vote)
Target Milestone: ---
Assignee: Martin Liška
QA Contact: E-mail List
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 1133084
  Show dependency treegraph
 
Reported: 2019-04-24 12:34 UTC by Martin Liška
Modified: 2023-10-01 08:05 UTC (History)
1 user (show)

See Also:
Found By: ---
Services Priority:
Business Priority:
Blocker: ---
Marketing QA Status: ---
IT Deployment: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Martin Liška 2019-04-24 12:34:13 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]':
Comment 1 Adrian Schröter 2019-04-25 07:59:12 UTC
thank you for fixing it:)
Comment 2 Martin Liška 2019-04-25 08:20:25 UTC
Your welcome, I'll keep it open as we may want to analyse that one day. I'm assigning the bug to me.
Comment 5 Bjørn Lie 2023-10-01 08:05:16 UTC
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