<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/61693>61693</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Can't link libomptarget.so.6 because of missing symbols
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          liam-clink
      </td>
    </tr>
</table>

<pre>
    When building with clang 15.0.3 using config:
`cmake -S ../llvm -B . -G Ninja -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_ENABLE_PROJECTS="bolt;llvm;clang;lld;lldb;clang-tools-extra;cross-project-tests;libclc;polly;pstl" -DLLVM_ENABLE_RUNTIMES="openmp;libcxx;libcxxabi;libunwind;compiler-rt" -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLIBCXX_USE_COMPILER_RT=YES -DLLVM_USE_LINKER=lld -DLIBCXXABI_USE_LLVM_UNWINDER=YES -DLLVM_INSTALL_UTILS=ON -DCMAKE_INSTALL_PREFIX=$HOME/llvm15_temp -DLLDB_ENABLE_PYTHON=TRUE -DPython3_EXECUTABLE=`which python3` -DLLVM_PARALLEL_LINK_JOBS=1 -DLLVM_ENABLE_LIBCXX=ON`

I get an error at the linking stage of libomptarget.so.6
<details>
<summary>Linking CXX shared library /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libomptarget.so.16</summary>

```
ld.lld: error: undefined symbol: llvm::sys::DynamicLibrary::getPermanentLibrary(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*)
>>> referenced by ompt_callback.cpp
>>> openmp/libomptarget/src/CMakeFiles/omptarget.dir/ompt_callback.cpp.o:(OmptLibraryConnectorTy::initialize())
>>> referenced by rtl.cpp
>>> openmp/libomptarget/src/CMakeFiles/omptarget.dir/rtl.cpp.o:(RTLsTy::attemptLoadRTL(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, RTLInfoTy&))

ld.lld: error: undefined symbol: std::__1::error_category::~error_category()
>>> referenced by Error.cpp
>>> Error.cpp.o:(llvm::ErrorList::convertToErrorCode() const) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a
>>> referenced by Error.cpp
>>>               Error.cpp.o:((anonymous namespace)::ErrorErrorCategory::~ErrorErrorCategory()) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a
>>> referenced by Error.cpp
>>>               Error.cpp.o:(vtable for (anonymous namespace)::ErrorErrorCategory) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a
>>> referenced 3 more times

ld.lld: error: undefined symbol: std::__1::error_code::message() const
>>> referenced by Error.cpp
>>> Error.cpp.o:(llvm::StringError::log(llvm::raw_ostream&) const) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a
>>> referenced by Error.cpp
>>> Error.cpp.o:(llvm::ECError::log(llvm::raw_ostream&) const) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a
>>> referenced by raw_ostream.cpp
>>> raw_ostream.cpp.o:(llvm::raw_fd_ostream::~raw_fd_ostream()) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a

ld.lld: error: undefined symbol: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> std::__1::operator+<char, std::__1::char_traits<char>, std::__1::allocator<char>>(char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&)
>>> referenced by Error.cpp
>>> Error.cpp.o:(llvm::StringError::log(llvm::raw_ostream&) const) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a
>>> referenced by TimeProfiler.cpp
>>> TimeProfiler.cpp.o:(llvm::timeTraceProfilerWrite(llvm::StringRef, llvm::StringRef)) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a
>>> referenced by TimeProfiler.cpp
>>> TimeProfiler.cpp.o:(llvm::TimeTraceProfiler::write(llvm::raw_pwrite_stream&)::'lambda'()::operator()() const) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a

ld.lld: error: undefined symbol: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::basic_string(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&)
>>> referenced by Error.cpp
>>> Error.cpp.o:(llvm::ErrorInfoBase::message() const) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a
>>> referenced by TimeProfiler.cpp
>>> TimeProfiler.cpp.o:(llvm::TimeTraceProfiler::begin(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, llvm::function_ref<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> ()>)) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a
>>> referenced by TimeProfiler.cpp
>>> TimeProfiler.cpp.o:(llvm::TimeTraceProfiler::begin(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, llvm::function_ref<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> ()>)) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a
>>> referenced 12 more times

ld.lld: error: undefined symbol: std::__1::error_category::default_error_condition(int) const
>>> referenced by Error.cpp
>>>               Error.cpp.o:(vtable for (anonymous namespace)::ErrorErrorCategory) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a
>>> referenced by Error.cpp
>>>               Error.cpp.o:(vtable for (anonymous namespace)::_object_error_category) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMObject.a

ld.lld: error: undefined symbol: std::__1::error_category::equivalent(int, std::__1::error_condition const&) const
>>> referenced by Error.cpp
>>> Error.cpp.o:(vtable for (anonymous namespace)::ErrorErrorCategory) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a
>>> referenced by Error.cpp
>>>               Error.cpp.o:(vtable for (anonymous namespace)::_object_error_category) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMObject.a

ld.lld: error: undefined symbol: std::__1::error_category::equivalent(std::__1::error_code const&, int) const
>>> referenced by Error.cpp
>>>               Error.cpp.o:(vtable for (anonymous namespace)::ErrorErrorCategory) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a
>>> referenced by Error.cpp
>>>               Error.cpp.o:(vtable for (anonymous namespace)::_object_error_category) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMObject.a

ld.lld: error: undefined symbol: std::__1::mutex::lock()
>>> referenced by ErrorHandling.cpp
>>> ErrorHandling.cpp.o:(llvm::report_fatal_error(llvm::Twine const&, bool)) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a
>>> referenced by ErrorHandling.cpp
>>> ErrorHandling.cpp.o:(llvm::report_bad_alloc_error(char const*, bool)) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a
>>> referenced by TimeProfiler.cpp
>>> TimeProfiler.cpp.o:(llvm::timeTraceProfilerCleanup()) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a
>>> referenced 2 more times

ld.lld: error: undefined symbol: std::__1::mutex::unlock()
>>> referenced by ErrorHandling.cpp
>>> ErrorHandling.cpp.o:(llvm::report_fatal_error(llvm::Twine const&, bool)) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a
>>> referenced by ErrorHandling.cpp
>>> ErrorHandling.cpp.o:(llvm::report_bad_alloc_error(char const*, bool)) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a
>>> referenced by TimeProfiler.cpp
>>> TimeProfiler.cpp.o:(llvm::timeTraceProfilerCleanup()) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a
>>> referenced 2 more times

ld.lld: error: undefined symbol: std::__1::recursive_mutex::lock()
>>> referenced by ManagedStatic.cpp
>>> ManagedStatic.cpp.o:(llvm::ManagedStaticBase::RegisterManagedStatic(void* (*)(), void (*)(void*)) const) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a

ld.lld: error: undefined symbol: std::__1::recursive_mutex::unlock()
>>> referenced by ManagedStatic.cpp
>>> ManagedStatic.cpp.o:(llvm::ManagedStaticBase::RegisterManagedStatic(void* (*)(), void (*)(void*)) const) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a

ld.lld: error: undefined symbol: std::__1::recursive_mutex::recursive_mutex()
>>> referenced by ManagedStatic.cpp
>>> ManagedStatic.cpp.o:(llvm::ManagedStaticBase::RegisterManagedStatic(void* (*)(), void (*)(void*)) const) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a

ld.lld: error: undefined symbol: std::__1::recursive_mutex::~recursive_mutex()
>>> referenced by ManagedStatic.cpp
>>> ManagedStatic.cpp.o:(llvm::ManagedStaticBase::RegisterManagedStatic(void* (*)(), void (*)(void*)) const) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a

ld.lld: error: undefined symbol: std::__1::to_string(unsigned long)
>>> referenced by SmallVector.cpp
>>> SmallVector.cpp.o:(report_size_overflow(unsigned long, unsigned long)) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a
>>> referenced by SmallVector.cpp
>>> SmallVector.cpp.o:(report_size_overflow(unsigned long, unsigned long)) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a
>>> referenced by SmallVector.cpp
>>> SmallVector.cpp.o:(report_at_maximum_capacity(unsigned long)) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a

ld.lld: error: undefined symbol: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::~basic_string()
>>> referenced by SmallVector.cpp
>>> SmallVector.cpp.o:(report_size_overflow(unsigned long, unsigned long)) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a
>>> referenced by SmallVector.cpp
>>> SmallVector.cpp.o:(report_size_overflow(unsigned long, unsigned long)) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a
>>> referenced by SmallVector.cpp
>>> SmallVector.cpp.o:(report_size_overflow(unsigned long, unsigned long)) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a
>>> referenced 3 more times

ld.lld: error: undefined symbol: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::append(char const*)
>>> referenced by SmallVector.cpp
>>> SmallVector.cpp.o:(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> std::__1::operator+[abi:v15003]<char, std::__1::char_traits<char>, std::__1::allocator<char>>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&&, char const*)) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a
>>> referenced by TimeProfiler.cpp
>>> TimeProfiler.cpp.o:(llvm::timeTraceProfilerWrite(llvm::StringRef, llvm::StringRef)) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a

ld.lld: error: undefined symbol: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::append(char const*, unsigned long)
>>> referenced by SmallVector.cpp
>>> SmallVector.cpp.o:(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> std::__1::operator+[abi:v15003]<char, std::__1::char_traits<char>, std::__1::allocator<char>>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&&)) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a
>>> referenced by raw_ostream.cpp
>>> raw_ostream.cpp.o:(llvm::raw_string_ostream::write_impl(char const*, unsigned long)) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a

ld.lld: error: undefined symbol: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::insert(unsigned long, char const*)
>>> referenced by SmallVector.cpp
>>> SmallVector.cpp.o:(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> std::__1::operator+[abi:v15003]<char, std::__1::char_traits<char>, std::__1::allocator<char>>(char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&&)) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a

ld.lld: error: undefined symbol: std::__1::chrono::system_clock::now()
>>> referenced by TimeProfiler.cpp
>>> TimeProfiler.cpp.o:(llvm::TimeTraceProfiler::TimeTraceProfiler(unsigned int, llvm::StringRef)) in archive /home/liam/Downloads/llvm-project-16.0.0.src/build/lib/libLLVMSupport.a
```
</details>
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsHEtz4jjz14iLCsrIgYQDBx5ml13yKHB2MieXbAvQjiz5k-Qk7GF--1eSbYKBnczskJBkSFHE7m7L_XarLYGVogtOSBe0-qA1rOFML4XsMoqTesQo_1ILRbzqfloSDsOMspjyBXygegkjhvkCNlsNp-HCTBl4JPicLoDbA84QOD3QdqIEfyGwPoONBkAjxu4TWO_DBqz_Bq8o_xvD-nBw2fvTC_q348kw8D_feMAdTgkjWBFYH04mf10Gfm_6m-fPAv86JwPu8O6iXWK9q15_4gU30-s_vIE_A-4QIBQKpoHbNzcEbt-yak_j_DssgXUtBFN18qglNjAplKqnUvxNIl3XRGllLqBhxCLg9lPB2Mr8V5oBhLY4mN5e-eNLr-BApIQnaXH14-P6AIc0P874A-WGn0gkKWVE1qXOB801MggG15c344k3Be4wV_YadXe3gwSoD1DfsDTuG_ztzFvTBFMfuMPP3qzk2CAn46s_7eWMxevLev1xjrRUV5_GV0NLs3Ht-Grm9yaT4NYfT4ys11drvkrUzdQbje-sHs5-v770CtM3W4EmSWoHGvbXhvvs_359BdyhP731YH14s9JLwd3Au_MGt74hMQO1nYcljZYwzbGg7ZT83PSmvcnEm1iBgj-u-4ap5pZtcukst6DtFO5pv8dwQTTEHBIphYRYQ70k0Hi-8Wil8YJAMYeMhiJJNZYLohtKNNrFGO4gJhpTpoDrrUEqSxIsV8D1JsU4g7s7qJZYktiMJLFcQYBGS5EQoxuKE4BGQ_HAmcCxKtS19sNmu-E0nIaSEUAjG4T2ojD_rrDVbAN3ANDoiYNNWY3o-ceesrhhI6KXy24OMh6TOeUkhmqVhIIZWB5EPeD21ErlB8MVxwmNJrkoOWxB9A2RCeaE6xKBLqIlliYvKA1QD6ABVDrO6YMgenxsNvOTECsaBUpLagJ1YK6qEBtAoCWmJiBztOtVKDBjIsLaiLHGG5IeQJ3SMF7-gZLMiSQ8IjEMV9AoMIgwYyGOvjSiNN0mL0K5qm2jZGuQwSX-QkaUEWO3J2PEVBbnlbEbwrCLLq6TtNTSQHBOIi2kX2iScqopZvQfAtCFYf85CaRmB-a7GLHkdupPVMkd1iaI9UTgeOpPALp4XYuWztQ2tFN_MuZz4a_s-YaifsS_N_gveLfkQYQ1WYjSvb9uAXPLfNMsnrlin2HWiFK_TyFmUROqdKElwe-J1L6w8IGIC5cotdCBlEMsoyW9JwfLKCZxzrI0FVI38H8Usfq3IzBAF5gLvkpEpiDHCVEpjojR6JMWcpGrRtiDKEPknWriXuOQETgXEv64Uo4rtQsTIQnUNCHqkHFnvNyeJ0QpvKi6_MEjbmZTlFdwCtweE4sKgcQPgVBaEqPT9nsIvm_ll8F7lHSDsX3ybqF3pTYE83gtW55LtoCvnUd-LlSee7yuCZ9_zq5J_-WBu0soUiItHeq_7L2fKSBfXxdPxccLPPvfbybyaUJupJibaew-obfxu7Kbh4gvcbQm-ySpJnvUMyVzY7G94DdQBvy8JvxtTeTghx19GG9ILTjY9IkcCdA5w0kYY4DOi9S2Fbp5ujtKMfleUt-e-1WmOx8s_1iUmU_1sfpGBfZxYywkC8qPbOJqcptnPNJU8ECSOXAHR_W9Mo14HzvRnpzgnThBE73Q_LPScojJHGdMB-XclMfU2AKgC8r1z05LP25v4FWkDkRoWA62W3MvJvm1vd-B6ph93kb-l9F7zIhxrdzB9sXmli9uVgWH7ZKcHPCXdsBvdegqffhTKjy21O_bE5NMk8ey5xF9-e6XK79jHjPKF_-azDYJ9rQFiTFeMMcas1xz1QLxgfKqn4dCsOMXPoeVPsRxYIu9tQZ2Wm5vRuwX6DMNGME8S9_Ea6SDF7QbcZXxU2SdIusUWQeKLEmiTCp6T4L_8Oy6xBwvSDzTWNNon7Z3CHbVXSF5athNyYIqTWQFbSoJQWOAevn8vbdu_RofNKgKvKAtrPa-msN77fL9ue9kmde1zDbwZKI3Z6KvJxu9JRtp8fQqKuN28XYMmTDnzxhllmDG_rIrDfeZZAtdGqSoZRT9hwTinsg5Ew-7tx7AHV6OXtKc5P0BebEOEvxIkywJIpziiOrVPgd7L1Hy2u-Iv269JD4F40neX0fegy8Efe3wxWlKeLw7QX-RIH7Di_lafbs9qXffbDmOC1rDF1_ed9y37O2i-7Rj9qPnj19wRd3HSBl7kvMph_wKOeQtcPEGEtchlurnKqsu188XutIkZd8Vc6e0tT9tUa6I1PtqylPp88pp603tbDhGBvm5yImWUnCRH6uV0iQJItvmtxBuJ07PuvGLrSLdBW-EXLGw6-gVV3U7eL5z_Gk7ey3uunHH7eAa6Tbb551zp9k569SW3agduigKiRu2kHN2juNO85y4DonD5ryFnFaNdpGDXMdFZ8htIdRpuJg0L5pn52GnTVrIdcCZQxJMWcMI0BByUaNKZaTbbrY7bo3hkDBlf5ECIU4eoEUChEBrWJNdK3SYLRQ4cxhVWj2NoqlmpDvAHKBzbTfx727chyGJcKbsrv6EKvvDFbmfqVomWXepdWq3uaMRQKMF1cssbEQiKdS9pXWARpY7Yw3L_f8DAAD__zqdBo0">