I guess it happens because static libraries built by gcc are not understandable by clang and vice versa. example fail from build.log: ``` # .---command stderr------------ # | /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld.bfd: /var/tmp/portage/sys-libs/libcxx-19.0.0_pre20240623/work/runtimes_build-abi_x86_32.x86/lib/libc++experimental.a: error adding symbols: file format not recognized # | i686-pc-linux-gnu-clang++: error: linker command failed with exit code 1 (use -v to see invocation) # `----------------------------- ``` also from build.log: ``` ******************** Failed Tests (40): llvm-libc++-shared.cfg.in :: libcxx/time/time.zone/time.zone.db/leap_seconds.pass.cpp llvm-libc++-shared.cfg.in :: libcxx/time/time.zone/time.zone.db/links.pass.cpp llvm-libc++-shared.cfg.in :: libcxx/time/time.zone/time.zone.db/rules.pass.cpp llvm-libc++-shared.cfg.in :: libcxx/time/time.zone/time.zone.db/time.zone.db.list/erase_after.pass.cpp llvm-libc++-shared.cfg.in :: libcxx/time/time.zone/time.zone.db/time.zone.db.remote/reload_tzdb.pass.cpp llvm-libc++-shared.cfg.in :: libcxx/time/time.zone/time.zone.db/time.zone.db.tzdb/locate_zone.pass.cpp llvm-libc++-shared.cfg.in :: libcxx/time/time.zone/time.zone.db/version.pass.cpp llvm-libc++-shared.cfg.in :: libcxx/time/time.zone/time.zone.db/zones.pass.cpp llvm-libc++-shared.cfg.in :: libcxx/time/time.zone/time.zone.timezone/time.zone.members/get_info.sys_time.pass.cpp llvm-libc++-shared.cfg.in :: libcxx/time/time.zone/time.zone.timezone/time.zone.members/get_info.sys_time.rule_selection.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.db/leap_seconds.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.db/time.zone.db.access/current_zone.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.db/time.zone.db.access/get_tzdb.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.db/time.zone.db.access/get_tzdb_list.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.db/time.zone.db.access/locate_zone.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.db/time.zone.db.list/front.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.db/time.zone.db.list/iterators.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.db/time.zone.db.remote/reload_tzdb.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.db/time.zone.db.remote/remote_version.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.db/time.zone.db.tzdb/current_zone.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.db/time.zone.db.tzdb/locate_zone.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.db/time.zone.db.tzdb/tzdb.members.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.exception/time.zone.exception.ambig/ctor.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.exception/time.zone.exception.ambig/types.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.exception/time.zone.exception.nonexist/ctor.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.exception/time.zone.exception.nonexist/types.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.leap/members/date.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.leap/members/value.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.leap/nonmembers/comparison.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.link/time.zone.link.members/name.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.link/time.zone.link.members/target.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.link/time.zone.link.nonmembers/comparison.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.timezone/time.zone.members/name.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.timezone/time.zone.members/sys_info.zdump.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.timezone/time.zone.members/to_local.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.timezone/time.zone.members/to_sys.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.timezone/time.zone.members/to_sys_choose.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.timezone/time.zone.nonmembers/comparison.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtraits/const_time_zone_default_zone.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtraits/const_time_zone_locate_zone.pass.cpp Testing Time: 710.78s Total Discovered Tests: 9662 Unsupported : 606 (6.27%) Passed : 8994 (93.09%) Expectedly Failed: 22 (0.23%) Failed : 40 (0.41%) FAILED: libcxx/test/CMakeFiles/check-cxx /var/tmp/portage/sys-libs/libcxx-19.0.0_pre20240623/work/runtimes_build-abi_x86_32.x86/libcxx/test/CMakeFiles/check-cxx cd /var/tmp/portage/sys-libs/libcxx-19.0.0_pre20240623/work/runtimes_build-abi_x86_32.x86/libcxx/test && /usr/bin/python3.12 /usr/bin/lit -vv -j 24 /var/tmp/portage/sys-libs/libcxx-19.0.0_pre20240623/work/runtimes_build-abi_x86_32.x86/libcxx/test ```
Created attachment 896905 [details] build.log in zip
Created attachment 896906 [details] environment // profile default/linux/amd64/23.0/split-usr/desktop/plasma gcc-13.2.1_p20240210 O3 pipe march=native(verbose) lto graphite ggdb3
Please provide emerge --info.
(In reply to Mike Gilbert from comment #3) > Please provide emerge --info. Here's environment file for this.
emerge --info : https://bugs.gentoo.org/attachment.cgi?id=897087
reproducible with sys-libs/libcxx-20.0.0_pre20240808
> I guess it happens because static libraries built by gcc are not understandable by clang and vice versa. ... with LTO, yes.
reproducible with sys-libs/libcxx-20.0.0_pre20240830 from build.log: ``` ******************** Failed Tests (67): llvm-libc++-shared.cfg.in :: libcxx/time/time.zone/time.zone.db/leap_seconds.pass.cpp llvm-libc++-shared.cfg.in :: libcxx/time/time.zone/time.zone.db/links.pass.cpp llvm-libc++-shared.cfg.in :: libcxx/time/time.zone/time.zone.db/rules.pass.cpp llvm-libc++-shared.cfg.in :: libcxx/time/time.zone/time.zone.db/time.zone.db.list/erase_after.pass.cpp llvm-libc++-shared.cfg.in :: libcxx/time/time.zone/time.zone.db/time.zone.db.remote/reload_tzdb.pass.cpp llvm-libc++-shared.cfg.in :: libcxx/time/time.zone/time.zone.db/time.zone.db.tzdb/locate_zone.pass.cpp llvm-libc++-shared.cfg.in :: libcxx/time/time.zone/time.zone.db/version.pass.cpp llvm-libc++-shared.cfg.in :: libcxx/time/time.zone/time.zone.db/zones.pass.cpp llvm-libc++-shared.cfg.in :: libcxx/time/time.zone/time.zone.timezone/time.zone.members/get_info.sys_time.pass.cpp llvm-libc++-shared.cfg.in :: libcxx/time/time.zone/time.zone.timezone/time.zone.members/get_info.sys_time.rule_selection.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.db/leap_seconds.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.db/time.zone.db.access/current_zone.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.db/time.zone.db.access/get_tzdb.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.db/time.zone.db.access/get_tzdb_list.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.db/time.zone.db.access/locate_zone.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.db/time.zone.db.list/front.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.db/time.zone.db.list/iterators.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.db/time.zone.db.remote/reload_tzdb.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.db/time.zone.db.remote/remote_version.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.db/time.zone.db.tzdb/current_zone.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.db/time.zone.db.tzdb/locate_zone.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.db/time.zone.db.tzdb/tzdb.members.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.exception/time.zone.exception.ambig/ctor.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.exception/time.zone.exception.ambig/types.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.exception/time.zone.exception.nonexist/ctor.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.exception/time.zone.exception.nonexist/types.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.leap/members/date.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.leap/members/value.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.leap/nonmembers/comparison.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.link/time.zone.link.members/name.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.link/time.zone.link.members/target.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.link/time.zone.link.nonmembers/comparison.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.timezone/time.zone.members/name.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.timezone/time.zone.members/sys_info.zdump.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.timezone/time.zone.members/to_local.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.timezone/time.zone.members/to_sys.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.timezone/time.zone.members/to_sys_choose.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.timezone/time.zone.nonmembers/comparison.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtime/copy.assign.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtime/copy.ctor.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtime/deduction.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtime/time.zone.zonedtime.ctor/default.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtime/time.zone.zonedtime.ctor/string_view.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtime/time.zone.zonedtime.ctor/string_view_local_time.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtime/time.zone.zonedtime.ctor/string_view_local_time_choose.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtime/time.zone.zonedtime.ctor/string_view_sys_time.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtime/time.zone.zonedtime.ctor/string_view_zoned_time_duration2_time_zone_ptr2.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtime/time.zone.zonedtime.ctor/string_view_zoned_time_duration2_time_zone_ptr2_choose.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtime/time.zone.zonedtime.ctor/sys_time.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtime/time.zone.zonedtime.ctor/time_zone_pointer.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtime/time.zone.zonedtime.ctor/time_zone_pointer_local_time.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtime/time.zone.zonedtime.ctor/time_zone_pointer_local_time_choose.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtime/time.zone.zonedtime.ctor/time_zone_pointer_sys_time.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtime/time.zone.zonedtime.ctor/time_zone_ptr_zoned_time_duration2_time_zone_ptr2.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtime/time.zone.zonedtime.ctor/time_zone_ptr_zoned_time_duration2_time_zone_ptr2_choose.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtime/time.zone.zonedtime.ctor/zoned_time_duration2.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtime/time.zone.zonedtime.members/assign.local_time.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtime/time.zone.zonedtime.members/assign.sys_time.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtime/time.zone.zonedtime.members/get_info.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtime/time.zone.zonedtime.members/get_local_time.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtime/time.zone.zonedtime.members/get_sys_time.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtime/time.zone.zonedtime.members/get_time_zone.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtime/time.zone.zonedtime.members/operator_local_time.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtime/time.zone.zonedtime.members/operator_sys_time.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtime/time.zone.zonedtime.nonmembers/eq.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtraits/const_time_zone_default_zone.pass.cpp llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.zonedtraits/const_time_zone_locate_zone.pass.cpp Testing Time: 697.59s Total Discovered Tests: 9745 Unsupported : 606 (6.22%) Passed : 9050 (92.87%) Expectedly Failed: 22 (0.23%) Failed : 67 (0.69%) ```
reproducible with sys-libs/libcxx-20.0.0_pre20240917 . Same tests fail as in sys-libs/libcxx-20.0.0_pre20240830
reproducible with sys-libs/libcxx-20.0.0_pre20241106
No need for "reproducible with ..." messages on this. I already analysed it and explained the problem. It is not something that will go away with new versions.