community icon indicating copy to clipboard operation
community copied to clipboard

Some Boost 1.67 packages are using the cxx11 ABI, when compiler.libcxx=libstdc++

Open datalogics-kam opened this issue 6 years ago • 4 comments
trafficstars

Description of Problem, Request, or Question

Some Boost 1.67 packages have

Package Details (Include if Applicable)

  • Package Name/Version: boost_*/1.67.0
  • Operating System: CentOS 6
  • Compiler+version: GCC 7.3.1 (from devtoolset-7)
  • Docker image: N/A

Steps to reproduce (Include if Applicable)

Unfortunately, the program I'm working on is proprietary, but I'll try to include as much detail as I can.

In function `boost::unit_test::make_test_case(boost::function<void ()> const&, boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long)':
/home/kam/.conan/data/boost_test/1.67.0/bincrafters/stable/package/39c592edeadc17fab29689acb950103193c0b674/test/include/boost/test/tree/test_unit.hpp:249: undefined reference to `boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)'

If I look at the library, it has abi:cxx11

$ nm -C /home/kam/.conan/data/boost_test/1.67.0/bincrafters/stable/package/39c592edeadc17fab29689acb950103193c0b674/test/lib/libboost_unit_test_framework.a | grep normalize_test_case_name
000000000000227f T boost::unit_test::ut_detail::normalize_test_case_name[abi:cxx11](boost::unit_test::basic_cstring<char const>)

Any insights you can offer will be welcome.

... but the referencing object does not.

                 U boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)

The Conan package says it's using libstdc++ (not 11):

$ more /home/kam/.conan/data/boost_test/1.67.0/bincrafters/stable/package/39c592edeadc17fab29689acb950103193c0b674/conaninfo.txt
[settings]
    arch=x86_64
    build_type=Debug
    compiler=gcc
    compiler.libcxx=libstdc++
    compiler.version=7
    os=Linux

I think it might be related to this issue from devtoolset-7: https://bugzilla.redhat.com/show_bug.cgi?id=1546704

Basically, on RHEL or CentOS before version 8, the cxx11 ABI is never used, despite any settings.

Interestingly enough, only some of the libraries I have used so far have abi:cxx11 in them:

$ find . -name '*.a' | grep 1.67.0 | while read file; do echo $file; nm -C $file | grep abi:cxx11 >/dev/null && echo ...has cxx11; done
./boost_iostreams/1.67.0/bincrafters/stable/package/b2190ccac01e7f0edd98ddde89925865f1deb5db/iostreams/lib/libboost_iostreams.a
...has cxx11
./boost_test/1.67.0/bincrafters/stable/package/39c592edeadc17fab29689acb950103193c0b674/test/lib/libboost_unit_test_framework.a
...has cxx11
./boost_test/1.67.0/bincrafters/stable/package/39c592edeadc17fab29689acb950103193c0b674/test/lib/libboost_prg_exec_monitor.a
...has cxx11
./boost_test/1.67.0/bincrafters/stable/package/39c592edeadc17fab29689acb950103193c0b674/test/lib/libboost_test_exec_monitor.a
...has cxx11
./boost_level11group/1.67.0/bincrafters/stable/package/67c519136e4f21a6b7cf6949c0bd967ed4110417/serialization/lib/libboost_serialization.a
...has cxx11
./boost_level11group/1.67.0/bincrafters/stable/package/67c519136e4f21a6b7cf6949c0bd967ed4110417/serialization/lib/libboost_wserialization.a
./boost_level11group/1.67.0/bincrafters/stable/package/67c519136e4f21a6b7cf6949c0bd967ed4110417/thread/lib/libboost_thread.a
...has cxx11
./boost_level11group/1.67.0/bincrafters/stable/package/67c519136e4f21a6b7cf6949c0bd967ed4110417/date_time/lib/libboost_date_time.a
...has cxx11
./boost_timer/1.67.0/bincrafters/stable/package/10e119e5494964a752ea5a2894f0260f63c61691/timer/lib/libboost_timer.a
...has cxx11
./boost_regex/1.67.0/bincrafters/stable/package/15e7d71b06a3f8f4aacf46f96e7b8f68235c7d15/regex/lib/libboost_regex.a
...has cxx11
./boost_exception/1.67.0/bincrafters/stable/package/6b17eeaaaffb5489ae41c65f46316d2e5ff61239/exception/lib/libboost_exception.a
./boost_chrono/1.67.0/bincrafters/stable/package/fcaeb0cd4be3b21fc9e7a662fbb4ff5c92dabb16/chrono/lib/libboost_chrono.a
...has cxx11
./boost_filesystem/1.67.0/bincrafters/stable/package/27ae3cd202805bd90966b7d9c94e88b061aa7e20/filesystem/lib/libboost_filesystem.a
...has cxx11
./boost_stacktrace/1.67.0/bincrafters/stable/package/51dafa0fc1f4d656c2eee1003aaf0c63aa027c86/stacktrace/lib/libboost_stacktrace_backtrace.a
...has cxx11
./boost_stacktrace/1.67.0/bincrafters/stable/package/51dafa0fc1f4d656c2eee1003aaf0c63aa027c86/stacktrace/lib/libboost_stacktrace_addr2line.a
...has cxx11
./boost_stacktrace/1.67.0/bincrafters/stable/package/51dafa0fc1f4d656c2eee1003aaf0c63aa027c86/stacktrace/lib/libboost_stacktrace_noop.a
...has cxx11
./boost_stacktrace/1.67.0/bincrafters/stable/package/51dafa0fc1f4d656c2eee1003aaf0c63aa027c86/stacktrace/lib/libboost_stacktrace_basic.a
...has cxx11
./boost_random/1.67.0/bincrafters/stable/package/7c52c7fcae28eb9e2f5f949572447351cd6a73cd/random/lib/libboost_random.a
...has cxx11
./boost_level8group/1.67.0/bincrafters/stable/package/05228efb530991d3beb21701eeca327109608e5b/math/lib/libboost_math_tr1.a
./boost_level8group/1.67.0/bincrafters/stable/package/05228efb530991d3beb21701eeca327109608e5b/math/lib/libboost_math_tr1l.a
./boost_level8group/1.67.0/bincrafters/stable/package/05228efb530991d3beb21701eeca327109608e5b/math/lib/libboost_math_c99f.a
./boost_level8group/1.67.0/bincrafters/stable/package/05228efb530991d3beb21701eeca327109608e5b/math/lib/libboost_math_c99.a
./boost_level8group/1.67.0/bincrafters/stable/package/05228efb530991d3beb21701eeca327109608e5b/math/lib/libboost_math_c99l.a
./boost_level8group/1.67.0/bincrafters/stable/package/05228efb530991d3beb21701eeca327109608e5b/math/lib/libboost_math_tr1f.a
./boost_atomic/1.67.0/bincrafters/stable/package/6351756a3c3e8686f1ea0061525ace29fd73d840/atomic/lib/libboost_atomic.a
./boost_system/1.67.0/bincrafters/stable/package/ec9a200fd06d2d42876facdaae8c54328b1c7662/system/lib/libboost_system.a
...has cxx11
./boost_container/1.67.0/bincrafters/stable/package/73023705e1cae84b8124747a8f6eee40a30c7e47/container/lib/libboost_container.a
./boost_locale/1.67.0/bincrafters/stable/package/9b104764e5cb6504de42ff3fc6054bd57b12419a/locale/lib/libboost_locale.a
...has cxx11

datalogics-kam avatar Dec 14 '18 21:12 datalogics-kam

Any insights appreciated. For now, we're going to force local builds and see if that helps.

datalogics-kam avatar Dec 14 '18 21:12 datalogics-kam

@datalogics-kam we have to rebuild libraries I believe, I'll trigger rebuild and let you know

SSE4 avatar Dec 15 '18 04:12 SSE4

@SSE4 do we know if the rebuild fixed this?

solvingj avatar Dec 22 '18 20:12 solvingj

@solvingj unfortunately, no, seems to be a different problem (the one with rebuild was about 1.66.0 branch). sorry for the inconveniences.

SSE4 avatar Dec 23 '18 14:12 SSE4