Issue 125343
Summary [LLD] Linker errors: Undefined symbols in `libclang-cpp` during `clang-21` build (ProcessWarningOptions, DiagnosticBuilder, EmitDiagnostic, createDiagnostics)
Labels lld
Assignees
Reporter ms178
    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)
```

_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to