Project

General

Profile

Bug #56492

Updated by Ken Dreyer almost 2 years ago

On s390x, I get a build failure related to atomics. 

 <pre> 
 [ 42%] Linking CXX executable ../../bin/ceph-bluestore-tool 
 cd /builddir/build/BUILD/ceph-17.2.1/redhat-linux-build/src/os && /usr/bin/cmake -E cmake_link_script CMakeFiles/ceph-bluestore-tool.dir/link.txt --verbose=1 
 /usr/bin/c++ -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1    -m64 -march=z14 -mtune=z15 -fasynchronous-unwind-tables -fstack-clash-protection -Wl,-z,relro -Wl,--as-needed    -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -rdynamic -pie CMakeFiles/ceph-bluestore-tool.dir/bluestore/bluestore_tool.cc.o -o ../../bin/ceph-bluestore-tool    -Wl,-rpath,/builddir/build/BUILD/ceph-17.2.1/redhat-linux-build/lib: ../../lib/libos.a ../../lib/libglobal.a ../../lib/libblk.a /lib64/libaio.so ../../../src/liburing/src/liburing.a ../../lib/libkv.a ../../lib/libheap_profiler.a /lib64/libtcmalloc.so ../rocksdb/librocksdb.a /lib64/libsnappy.so /usr/lib64/liblz4.so /usr/lib64/libz.so /usr/lib64/libfuse.so ../../lib/libceph-common.so.2 ../../lib/libjson_spirit.a ../../lib/libcommon_utf8.a ../../lib/liberasure_code.a ../../lib/libcrc32.a ../../lib/libarch.a ../../boost/lib/libboost_thread.a ../../boost/lib/libboost_chrono.a ../../boost/lib/libboost_atomic.a ../../boost/lib/libboost_system.a ../../boost/lib/libboost_random.a ../../boost/lib/libboost_program_options.a ../../boost/lib/libboost_date_time.a ../../boost/lib/libboost_iostreams.a ../../boost/lib/libboost_regex.a /usr/lib64/libblkid.so /usr/lib64/libcrypto.so /usr/lib64/libudev.so /usr/lib64/libibverbs.so /usr/lib64/librdmacm.so /usr/lib64/libz.so -ldl /usr/lib64/librt.a -lresolv  
 make[2]: Leaving directory '/builddir/build/BUILD/ceph-17.2.1/redhat-linux-build' 
 /usr/bin/ld: /tmp/ccrFZZvJ.ltrans64.ltrans.o: in function `boost::lockfree::queue<void*>::~queue()': 
 /usr/include/c++/11/atomic:285: undefined reference to `__atomic_load_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:285: undefined reference to `__atomic_load_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:285: undefined reference to `__atomic_load_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:271: undefined reference to `__atomic_store_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:285: undefined reference to `__atomic_load_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:271: undefined reference to `__atomic_store_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:271: undefined reference to `__atomic_store_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:285: undefined reference to `__atomic_load_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:285: undefined reference to `__atomic_load_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:271: undefined reference to `__atomic_store_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:285: undefined reference to `__atomic_load_16' 
 /usr/bin/ld: /tmp/ccrFZZvJ.ltrans64.ltrans.o: in function `bool boost::lockfree::queue<void*>::pop<void*>(void*&)': 
 /usr/include/c++/11/atomic:285: undefined reference to `__atomic_load_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:285: undefined reference to `__atomic_load_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:285: undefined reference to `__atomic_load_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:285: undefined reference to `__atomic_load_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:323: undefined reference to `__atomic_compare_exchange_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:285: undefined reference to `__atomic_load_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:323: undefined reference to `__atomic_compare_exchange_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:355: undefined reference to `__atomic_compare_exchange_16' 
 /usr/bin/ld: /tmp/ccrFZZvJ.ltrans64.ltrans.o: in function `HugePagePoolOfPools::from_desc(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)': 
 /usr/include/c++/11/atomic:285: undefined reference to `__atomic_load_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:271: undefined reference to `__atomic_store_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:285: undefined reference to `__atomic_load_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:323: undefined reference to `__atomic_compare_exchange_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:271: undefined reference to `__atomic_store_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:271: undefined reference to `__atomic_store_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:285: undefined reference to `__atomic_load_16' 
 /usr/bin/ld: /tmp/ccrFZZvJ.ltrans72.ltrans.o: in function `bool boost::lockfree::queue<void*>::do_push<false>(void* const&) [clone .isra.0]': 
 /usr/include/c++/11/atomic:285: undefined reference to `__atomic_load_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:323: undefined reference to `__atomic_compare_exchange_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:285: undefined reference to `__atomic_load_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:271: undefined reference to `__atomic_store_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:285: undefined reference to `__atomic_load_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:285: undefined reference to `__atomic_load_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:285: undefined reference to `__atomic_load_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:355: undefined reference to `__atomic_compare_exchange_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:323: undefined reference to `__atomic_compare_exchange_16' 
 /usr/bin/ld: /usr/include/c++/11/atomic:355: undefined reference to `__atomic_compare_exchange_16' 
 collect2: error: ld returned 1 exit status 
 make[2]: *** [src/os/CMakeFiles/ceph-bluestore-tool.dir/build.make:132: bin/ceph-bluestore-tool] Error 1 
 make[1]: *** [CMakeFiles/Makefile2:6990: src/os/CMakeFiles/ceph-bluestore-tool.dir/all] Error 2 
 </pre> 

 I do note that @HAVE_CXX11_ATOMIC@ is different between pacific and quincy: 

 v16.2.8 on RHEL 9: 
 <pre> 
 -- Performing Test HAVE_CXX11_ATOMIC 
 -- Performing Test HAVE_CXX11_ATOMIC - Failed 
 -- Performing Test HAVE_LIBATOMIC 
 -- Performing Test HAVE_LIBATOMIC - Success 

 </pre> 
 v17.2.1 on RHEL 9: 
 <pre> 
 -- Performing Test HAVE_CXX11_ATOMIC 
 -- Performing Test HAVE_CXX11_ATOMIC - Success 
 </pre> 



 Possibly a problem with this change? https://github.com/ceph/ceph/pull/44264 - EDIT: nevermind, that is in @main@, not in @v17.2.1@.

Back