Issue 55432
Summary bolt fails to build with -DLLVM_BUILD_LLVM_DYLIB -DLLVM_LINK_LLVM_DYLIB
Labels new issue
Assignees
Reporter berolinux
    Building LLVM 14.0.3 with bolt enabled and LLVM_BUILD_LLVM_DYLIB and LLVM_LINK_LLVM_DYLIB enabled results in

```
[19/51] Linking CXX executable bin/llvm-bolt
FAILED: bin/llvm-bolt 
: && /usr/bin/clang++ -O3  -march=znver1 -mtune=znver1 -O3 -Qunused-arguments -Wl,-Bsymbolic-functions -g1 -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -fdiagnostics-color -ffunction-sections -fdata-sections-Wl,--disable-new-dtags,-rpath,/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/build/lib64,-rpath,/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/build/lib -fuse-ld=lld -Wl,--color-diagnostics    -Wl,--gc-sections tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o -o bin/llvm-bolt  lib64/libLLVM-14.so && :
ld.lld: error: undefined symbol: opts::PerfData[abi:cxx11]
>>> referenced by basic_string.h:1064 (/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/basic_string.h:1064)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(perf2boltMode(int, char**))
>>> referenced by basic_string.h:1064 (/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/basic_string.h:1064)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(heatmapMode(int, char**))
>>> referenced by basic_string.h:1064 (/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/basic_string.h:1064)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(main)

ld.lld: error: undefined symbol: llvm::bolt::DataAggregator::checkPerfDataMagic(llvm::StringRef)
>>> referenced by llvm-bolt.cpp:116 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/bolt/tools/driver/llvm-bolt.cpp:116)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(perf2boltMode(int, char**))

ld.lld: error: undefined symbol: opts::OutputFilename[abi:cxx11]
>>> referenced by basic_string.h:1064 (/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/basic_string.h:1064)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(perf2boltMode(int, char**))
>>> referenced by basic_string.h:1064 (/usr/bin/../lib64/gcc/x86_64-openmandriva-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/basic_string.h:1064)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(boltMode(int, char**))

ld.lld: error: undefined symbol: opts::AggregateOnly
>>> referenced by CommandLine.h:1412 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/llvm/include/llvm/Support/CommandLine.h:1412)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(perf2boltMode(int, char**))
>>> referenced by CommandLine.h:1412 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/llvm/include/llvm/Support/CommandLine.h:1412)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(heatmapMode(int, char**))
>>> referenced by CommandLine.h:1417 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/llvm/include/llvm/Support/CommandLine.h:1417)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(main)
>>> referenced 1 more times

ld.lld: error: undefined symbol: llvm::bolt::BoltRevision
>>> referenced by llvm-bolt.cpp:96 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/bolt/tools/driver/llvm-bolt.cpp:96)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(printBoltRevision(llvm::raw_ostream&))
>>> referenced by llvm-bolt.cpp:96 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/bolt/tools/driver/llvm-bolt.cpp:96)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(printBoltRevision(llvm::raw_ostream&))

ld.lld: error: undefined symbol: opts::HeatmapMode
>>> referenced by llvm-bolt.cpp:152 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/bolt/tools/driver/llvm-bolt.cpp:152)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(heatmapMode(int, char**))
>>> referenced by llvm-bolt.cpp:230 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/bolt/tools/driver/llvm-bolt.cpp:230)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(main)
>>> referenced by llvm-bolt.cpp:0 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/bolt/tools/driver/llvm-bolt.cpp:0)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(main)

ld.lld: error: undefined symbol: opts::DiffOnly
>>> referenced by CommandLine.h:1412 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/llvm/include/llvm/Support/CommandLine.h:1412)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(boltDiffMode(int, char**))
>>> referenced by CommandLine.h:1417 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/llvm/include/llvm/Support/CommandLine.h:1417)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(main)

ld.lld: error: undefined symbol: llvm::bolt::RewriteInstance::RewriteInstance(llvm::object::ELFObjectFileBase*, int, char const* const*, llvm::StringRef)
>>> referenced by llvm-bolt.cpp:305 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/bolt/tools/driver/llvm-bolt.cpp:305)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(main)
>>> referenced by llvm-bolt.cpp:308 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/bolt/tools/driver/llvm-bolt.cpp:308)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(main)
>>> referenced by llvm-bolt.cpp:255 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/bolt/tools/driver/llvm-bolt.cpp:255)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(main)

ld.lld: error: undefined symbol: llvm::bolt::RewriteInstance::setProfile(llvm::StringRef)
>>> referenced by llvm-bolt.cpp:306 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/bolt/tools/driver/llvm-bolt.cpp:306)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(main)
>>> referenced by llvm-bolt.cpp:309 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/bolt/tools/driver/llvm-bolt.cpp:309)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(main)
>>> referenced by llvm-bolt.cpp:264 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/bolt/tools/driver/llvm-bolt.cpp:264)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(main)
>>> referenced 1 more times

ld.lld: error: undefined symbol: llvm::bolt::MachORewriteInstance::MachORewriteInstance(llvm::object::MachOObjectFile*, llvm::StringRef)
>>> referenced by llvm-bolt.cpp:278 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/bolt/tools/driver/llvm-bolt.cpp:278)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(main)

ld.lld: error: undefined symbol: llvm::bolt::MachORewriteInstance::setProfile(llvm::StringRef)
>>> referenced by llvm-bolt.cpp:281 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/bolt/tools/driver/llvm-bolt.cpp:281)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(main)

ld.lld: error: undefined symbol: llvm::bolt::MachORewriteInstance::run()
>>> referenced by llvm-bolt.cpp:284 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/bolt/tools/driver/llvm-bolt.cpp:284)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(main)

ld.lld: error: undefined symbol: llvm::bolt::MachORewriteInstance::~MachORewriteInstance()
>>> referenced by llvm-bolt.cpp:285 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/bolt/tools/driver/llvm-bolt.cpp:285)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(main)
>>> referenced by llvm-bolt.cpp:285 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/bolt/tools/driver/llvm-bolt.cpp:285)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(main)

ld.lld: error: undefined symbol: llvm::bolt::RewriteInstance::run()
>>> referenced by llvm-bolt.cpp:315 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/bolt/tools/driver/llvm-bolt.cpp:315)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(main)
>>> referenced by llvm-bolt.cpp:320 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/bolt/tools/driver/llvm-bolt.cpp:320)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(main)
>>> referenced by llvm-bolt.cpp:276 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/bolt/tools/driver/llvm-bolt.cpp:276)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(main)

ld.lld: error: undefined symbol: llvm::bolt::RewriteInstance::compare(llvm::bolt::RewriteInstance&)
>>> referenced by llvm-bolt.cpp:321 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/bolt/tools/driver/llvm-bolt.cpp:321)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(main)

ld.lld: error: undefined symbol: llvm::bolt::RewriteInstance::~RewriteInstance()
>>> referenced by llvm-bolt.cpp:322 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/bolt/tools/driver/llvm-bolt.cpp:322)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(main)
>>> referenced by llvm-bolt.cpp:322 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/bolt/tools/driver/llvm-bolt.cpp:322)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(main)
>>> referenced by llvm-bolt.cpp:277 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/bolt/tools/driver/llvm-bolt.cpp:277)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(main)
>>> referenced 3 more times

ld.lld: error: undefined symbol: opts::BoltCategory
>>> referenced by CommandLine.h:466 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/llvm/include/llvm/Support/CommandLine.h:466)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(_GLOBAL__sub_I_llvm_bolt.cpp)
>>> referenced by llvm-bolt.cpp
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(opts::BoltCategories)

ld.lld: error: undefined symbol: opts::BoltDiffCategory
>>> referenced by CommandLine.h:466 (/home/bero/temp/abf/llvm/BUILD/llvm-project-14.0.3.src/llvm/include/llvm/Support/CommandLine.h:466)
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(_GLOBAL__sub_I_llvm_bolt.cpp)
>>> referenced by llvm-bolt.cpp
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(opts::BoltDiffCategories)

ld.lld: error: undefined symbol: opts::AggregatorCategory
>>> referenced by llvm-bolt.cpp
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(opts::Perf2BoltCategories)

ld.lld: error: undefined symbol: opts::BoltOutputCategory
>>> referenced by llvm-bolt.cpp
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(opts::Perf2BoltCategories)
>>> referenced by llvm-bolt.cpp
>>>               tools/bolt/tools/driver/CMakeFiles/llvm-bolt.dir/llvm-bolt.cpp.o:(opts::BoltCategories)

ld.lld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors)
clang-14: error: linker command failed with exit code 1 (use -v to see invocation)
```

Bolt seems to think its various sublibraries are part of libLLVM-14.so when they aren't.

The attached patch [llvm-bolt-dylib-link.patch.txt](https://github.com/llvm/llvm-project/files/8686965/llvm-bolt-dylib-link.patch.txt)
"fixes" it, but isn't the right thing to do for obvious reasons.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to