<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/125343>125343</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[LLD] Linker errors: Undefined symbols in `libclang-cpp` during `clang-21` build (ProcessWarningOptions, DiagnosticBuilder, EmitDiagnostic, createDiagnostics)
</td>
</tr>
<tr>
<th>Labels</th>
<td>
lld
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ms178
</td>
</tr>
</table>
<pre>
Steps to reproduce:
1) Get three build scripts from:
https://github.com/ms178/archpkgbuilds/tree/main/toolchain-experimental/llvm-bolt-scripts-master
- https://github.com/ms178/archpkgbuilds/blob/main/toolchain-experimental/llvm-bolt-scripts-master/setup_llvm_repo.bash
- https://github.com/ms178/archpkgbuilds/blob/main/toolchain-experimental/llvm-bolt-scripts-master/build_stage1.bash
- https://github.com/ms178/archpkgbuilds/blob/main/toolchain-experimental/llvm-bolt-scripts-master/build_stage2-prof-generate.bash
2) Make them executable and run them in the given order.
CPU: Intel Raptor Lake
OS: CachyOS
The used script used to work fine until it broke some months ago.
```
[3543/3736] Linking CXX executable bin/clang-21
FAILED: bin/clang-21
: && /home/marcus/toolchain/llvm/llvm-bolt/bin/clang++ -O2 -g3 -march=native -mtune=native -falign-functions=32 -fno-semantic-interposition -fno-omit-frame-pointer -fcf-protection=none -mharden-sls=none -flto=thin -fwhole-program-vtables -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -w -fdiagnostics-color -ffunction-sections -fdata-sections -fprofile-generate="/home/marcus/toolchain/llvm/stage2-prof-gen/profiles" -Xclang -mllvm -Xclang -vp-counters-per-site=6 -fno-common -Woverloaded-virtual -Wno-nested-anon-types -O3 -DNDEBUG -Wl,--lto-CGO3 -Wl,--gc-sections -Wl,--icf=all -Wl,--lto-O2,-O2,-Bsymbolic-functions,--as-needed -fuse-ld=lld -flto=thin -fwhole-program-vtables -Wl,--push-state -Wl,-whole-archive -lmimalloc -Wl,--pop-state -lpthread -lstdc++ -lm -ldl -fuse-ld=/home/marcus/toolchain/llvm/llvm-bolt/bin/ld.lld -Wl,--color-diagnostics -fprofile-generate="/home/marcus/toolchain/llvm/stage2-prof-gen/profiles" -Wl,--gc-sections -Xlinker --dependency-file=tools/clang/tools/driver/CMakeFiles/clang.dir/link.d tools/clang/tools/driver/CMakeFiles/clang.dir/driver.cpp.o tools/clang/tools/driver/CMakeFiles/clang.dir/cc1_main.cpp.o tools/clang/tools/driver/CMakeFiles/clang.dir/cc1as_main.cpp.o tools/clang/tools/driver/CMakeFiles/clang.dir/cc1gen_reproducer_main.cpp.o tools/clang/tools/driver/CMakeFiles/clang.dir/clang-driver.cpp.o -o bin/clang-21 -Wl,-rpath,"\$ORIGIN/../lib:/home/marcus/toolchain/llvm/stage2-prof-gen/lib:" lib/libLLVM.so.21.0git -lclang-cpp && :
ld.lld: error: undefined symbol: clang::ProcessWarningOptions(clang::DiagnosticsEngine&, clang::DiagnosticOptions const&, llvm::vfs::FileSystem&, bool)
>>> referenced by driver.cpp:339 (/home/marcus/toolchain/llvm/llvm-project/clang/tools/driver/driver.cpp:339)
>>> tools/clang/tools/driver/CMakeFiles/clang.dir/clang-21.lto.driver.cpp.o:(clang_main(int, char**, llvm::ToolContext const&))
>>> referenced by cc1gen_reproducer_main.cpp:125 (/home/marcus/toolchain/llvm/llvm-project/clang/tools/driver/cc1gen_reproducer_main.cpp:125)
>>> tools/clang/tools/driver/CMakeFiles/clang.dir/clang-21.lto.cc1gen_reproducer_main.cpp.o:(cc1gen_reproducer_main(llvm::ArrayRef<char const*>, char const*, void*, llvm::ToolContext const&))
ld.lld: error: undefined symbol: clang::DiagnosticBuilder::DiagnosticBuilder(clang::DiagnosticsEngine*, clang::SourceLocation, unsigned int)
>>> referenced by Diagnostic.h:1499 (/home/marcus/toolchain/llvm/llvm-project/clang/include/clang/Basic/Diagnostic.h:1499)
>>> tools/clang/tools/driver/CMakeFiles/clang.dir/clang-21.lto.driver.cpp.o:(clang_main(int, char**, llvm::ToolContext const&))
>>> referenced by Diagnostic.h:1499 (/home/marcus/toolchain/llvm/llvm-project/clang/include/clang/Basic/Diagnostic.h:1499)
>>> tools/clang/tools/driver/CMakeFiles/clang.dir/clang-21.lto.driver.cpp.o:(clang_main(int, char**, llvm::ToolContext const&))
>>> referenced by Diagnostic.h:1499 (/home/marcus/toolchain/llvm/llvm-project/clang/include/clang/Basic/Diagnostic.h:1499)
>>> tools/clang/tools/driver/CMakeFiles/clang.dir/clang-21.lto.driver.cpp.o:(clang_main(int, char**, llvm::ToolContext const&))
>>> referenced 12 more times
ld.lld: error: undefined symbol: clang::DiagnosticsEngine::EmitDiagnostic(clang::DiagnosticBuilder const&, bool)
>>> referenced by Diagnostic.h:1281 (/home/marcus/toolchain/llvm/llvm-project/clang/include/clang/Basic/Diagnostic.h:1281)
>>> tools/clang/tools/driver/CMakeFiles/clang.dir/clang-21.lto.driver.cpp.o:(clang::DiagnosticBuilder::~DiagnosticBuilder())
ld.lld: error: undefined symbol: clang::CompilerInstance::createDiagnostics(llvm::vfs::FileSystem&, clang::DiagnosticConsumer*, bool)
>>> referenced by cc1_main.cpp:268 (/home/marcus/toolchain/llvm/llvm-project/clang/tools/driver/cc1_main.cpp:268)
>>> tools/clang/tools/driver/CMakeFiles/clang.dir/clang-21.lto.cc1_main.cpp.o:(cc1_main(llvm::ArrayRef<char const*>, char const*, void*))
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWV9v4zYS_zT0y4CGRdmO_eAHx14vAqTNYtO97FtAkSOJF4oUSMrZvNxnP1CSY8fnJG2S7RVFASGRyOHM8Dd_SXPvVWEQF2RyTibrAW9Cad2i8snZbJBZ-bC4Dlh7CBYc1s7KRiBJl2QUn4SwOXzGAKF0iJA1Skvwwqk6eMidrTrKMoTax1e2IWxTqFA22VDYirBNK4ewDXeirO-KloMnbBMcYpzmysQva7UouTIUf9ToVIUmcE3YRuttRTOrA-2l0or7gK5Tj8IbJGfaZu-RzDYeQ1PfRoJbh7UdZtyX_z9tWla3PvACk7-OKozWzua0QIOOB9wpRkZLFn3qF36HEEqsAH-gaALPNAI3ElxjunHV_odCbdGAdRLdsFu_-vKNpEu4MAE1fOV1sA4u-R2S0fLqOs6suCgfrq476t9KhMbjzmu792Dh3ro7yJVBaExQGlSAzNk7BG8rhMqaUHrghe2Fkumof0ZLMjlPJ-OUsE16lk7JZA2XytwpU8Dq-_fD_WQtkEJzU1CWkNFys7y4_LSOOj6dgsg1XQJhU8KmQNimtFUXHk40_tAavQEO7RCB37Mj7Jywc6BXDGiRAo0sSpKuDQ9qi0Cr0Bg8-M65VoWheWNEUNZ4kq5TBjQ3lnqsuAlKUGUCutp6FSm6OVupQHPHK6S1beeB5iKPVg_YcooyrIkSS-4kGuq1fxzLdbAkXYdSRX73pdUYlxaOV3TboueB5l8uVq9oslVeZUqr8ECV0cqgp6WSEg3QG3TOOpKuJQ9Ig6rwYKwxRRO1kpRvudK852HwHug90FwqXhjrgxKeCqtt3N0OIuq7DUYNJQ_88Ds6vdL46PckXRPGfp9Bj-KGsE3PzRPGgH5vzQu0iuT7z21NhW0iLJ7W6KhXrdRpB5ywVRWBurFbdNryuOOtcqHhGuiNsdSgDxEFYw0ND3WE_SoFuv51_en822egN5qwFaU6WLr6HGf6gUIcbLsfUyIn6Zpr_WTZFYuv3d9z_1BlVitx4G-RjntqECVKoHnjkWpJ0rXW8nc6Si-tbnxJfeABd0MdfYyA1td1pSqutRX7JbberdB1LHJcAtU-SLGLI10B1VIfKvbW-NRy2O6pl936FT3wtJ_rPycMB_S7VuYuxi6VWKORaMQDjWsi5tZqv08rm923dGrbpvtVzOKbTkBHNZQqTkSmw5hm38qgoxiKuh7ad7ARIrmN5ewjGHH_YawKNLePvZb7ILZtKXmCG7XHZab3AVfzUBK2ip41WRE2vvp68fniV8I2w2FrvaxrHN7kc7vVDOJb-315-a9fht4OWTIcFSoAUN2pJOr6sea1jWQXIbEU9ol6CY2RGOu0hC53xLEOnjTWzC_OCvT-hjujTHFV9zlldkCy3kfYJ1Mog63IFZwk6TmAsMaHnrDda0u3zX33Ek1w_eADVj1NZq0mbN4W8k_dAw5zdGgESsgeYG8bki7TdA6Ezf5AJqmd_TeK8JJzHEs41ue93sWSoQ52eOhkrak7sG-7xnGmTGjRLbkjbNk-hxD-Zq1eWRPwRzgA-X90fYrd80FD0mXCJh-P5WsSfxK2L2WHHuuTFITN9hAvneMPXzEn6SpaYQdzq21vmf0YW8HWKvkH7fSWUN0H2Xk8J6B7bvi16F0eRe-1bZzASyt423eyFTSmPfRKaJ3xJc_asx-W0bLj-fsDUxmhG4kHI-fcK0HY5oS0v0-Q_gPlP1D-xaBMGFTWIcTTn39_3tploHb4U6XCfuq5pNXntCf9xOu9wrFF2Cz5E-3PZsmfa_8X68N_ThWI91Wila1qpdFdGB-4Eb1BhUMe8MDaT4rq863fyS2srPFNha534tdNfnhWIemSTWc_pak5kvHz2phTjcsHtiq9-Q-uvJ44QH-sFbaquJGQc6VRwr0KJeAPFdOHRGhjqvEIdAvBgkcEZbaPbcT86N5vIBepnKdzPsBFcpbOxqMkSeaDcjGfzmYymWRszmQymQqeJXg2F7N8PMUzNs4HasFGbDJio2Q0T5LJfJhOJUvHOJNJejZhfEbGI6y40sOIzNC6YqC8b3CRsEk6TgeaZ6h9e4PPWPT1eHBbD9yiu2NoCk_GI6188HsGQQXdXvpfXq53d5ToOoSiJ8O3oxjxoAyQ6Uir7PF0RqYjkI1TpogzjzeZ01H_UwBhs2cOYCs4EbYrOE6aKzgRdfNB4_TihRvs027fQhbdskdtu2D_DQAA___gsy7q">