--- /clang/lib/Basic/CMakeLists.txt +++ /clang/lib/Basic/CMakeLists.txt @@ -110,3 +110,16 @@ omp_gen ) +# libclangBasic compiled by GCC at least on 32-bit PowerPC may contain reference +# to __atomic_load_8. +if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + if (LLVM_LINKER_IS_GNULD OR LLVM_LINKER_IS_GOLD OR LLVM_LINKER_IS_LLD OR LLVM_LINKER_IS_MOLD) + target_link_libraries(clangBasic + PRIVATE + "-Wl,--push-state" + "-Wl,--as-needed" + atomic + "-Wl,--pop-state" + ) + endif() +endif() --- /llvm/cmake/modules/AddLLVM.cmake +++ /llvm/cmake/modules/AddLLVM.cmake @@ -212,6 +212,7 @@ else() if("${stdout}" MATCHES "^mold") set(LLVM_LINKER_DETECTED YES CACHE INTERNAL "") + set(LLVM_LINKER_IS_MOLD YES CACHE INTERNAL "") message(STATUS "Linker detection: mold") elseif("${stdout}" MATCHES "GNU gold") set(LLVM_LINKER_DETECTED YES CACHE INTERNAL "")