[clang] [llvm] Non constant size and offset in DWARF (PR #141106)
Nathan Chancellor via cfe-commits
cfe-commits at lists.llvm.org
Thu Jun 26 18:16:49 PDT 2025
nathanchance wrote:
I am seeing an assertion failure when building the Linux kernel for aarch64 with LTO enabled. `cvise` spits out:
```
$ cat hda_bind.i
void snd_hda_codec_shutdown();
void hda_codec_driver_shutdown() { snd_hda_codec_shutdown(); }
$ cat hda_codec.i
struct {
int mfg;
} hda_set_power_state_codec;
void snd_hda_codec_shutdown() {}
$ clang --target=aarch64-linux-gnu -flto=thin -fsplit-lto-unit -fvisibility=hidden -g -O2 -c hda_bind.i
$ clang --target=aarch64-linux-gnu -flto=thin -fsplit-lto-unit -fvisibility=hidden -g -O2 -c hda_codec.i
$ ld.lld -EL -maarch64elf -r -o /dev/null hda_{bind,codec}.o
ld.lld: llvm/include/llvm/Support/Casting.h:578: decltype(auto) llvm::cast(From *) [To = llvm::MDNode, From = llvm::Metadata]: Assertion `isa<To>(Val) && "cast<Ty>() argument of incompatible type!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
#0 0x0000000001de7f88 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (lld+0x1de7f88)
#1 0x0000000001de5d90 llvm::sys::RunSignalHandlers() (lld+0x1de5d90)
#2 0x0000000001de8820 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#3 0x0000ffffae6a0868 (linux-vdso.so.1+0x868)
#4 0x0000ffffae0af71c __pthread_kill_implementation (/lib64/libc.so.6+0x8f71c)
#5 0x0000ffffae05b63c gsignal (/lib64/libc.so.6+0x3b63c)
#6 0x0000ffffae045b88 abort (/lib64/libc.so.6+0x25b88)
#7 0x0000ffffae0540a0 __assert_fail_base (/lib64/libc.so.6+0x340a0)
#8 0x0000000004801710 (anonymous namespace)::BitcodeReaderMetadataList::getMetadataFwdRef(unsigned int) MetadataLoader.cpp:0:0
#9 0x00000000047f9524 llvm::MetadataLoader::MetadataLoaderImpl::resolveForwardRefsAndPlaceholders((anonymous namespace)::(anonymous namespace)::PlaceholderQueue&) MetadataLoader.cpp:0:0
#10 0x0000000004800ca4 llvm::MetadataLoader::MetadataLoaderImpl::getMetadataFwdRefOrLoad(unsigned int) MetadataLoader.cpp:0:0
#11 0x00000000047f8ae4 llvm::MetadataLoader::MetadataLoaderImpl::parseGlobalObjectAttachment(llvm::GlobalObject&, llvm::ArrayRef<unsigned long>) (lld+0x47f8ae4)
#12 0x00000000047f86d0 llvm::MetadataLoader::MetadataLoaderImpl::loadGlobalDeclAttachments() (lld+0x47f86d0)
#13 0x00000000047f90e8 llvm::MetadataLoader::MetadataLoaderImpl::parseMetadata(bool) (lld+0x47f90e8)
#14 0x00000000047cfe78 (anonymous namespace)::BitcodeReader::materializeMetadata() BitcodeReader.cpp:0:0
#15 0x00000000034c3d80 llvm::FunctionImporter::importFunctions(llvm::Module&, llvm::FunctionImporter::ImportMapTy const&) (lld+0x34c3d80)
#16 0x00000000028f0ee4 llvm::lto::thinBackend(llvm::lto::Config const&, unsigned int, std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine const&)>, llvm::Module&, llvm::ModuleSummaryIndex const&, llvm::FunctionImporter::ImportMapTy const&, llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*, llvm::DenseMapInfo<unsigned long, void>, llvm::detail::DenseMapPair<unsigned long, llvm::GlobalValueSummary*>> const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int>>, llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 0u>>*, bool, std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine const&)>, std::vector<unsigned char, std::allocator<unsigned char>> const&) (lld+0x28f0ee4)
#17 0x00000000028e4798 (anonymous namespace)::InProcessThinBackend::runThinLTOBackendThread(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine const&)>, llvm::FileCache, unsigned int, llvm::BitcodeModule, llvm::ModuleSummaryIndex&, llvm::FunctionImporter::ImportMapTy const&, llvm::DenseSet<llvm::ValueInfo, llvm::DenseMapInfo<llvm::ValueInfo, void>> const&, std::map<unsigned long, llvm::GlobalValue::LinkageTypes, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>>> const&, llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*, llvm::DenseMapInfo<unsigned long, void>, llvm::detail::DenseMapPair<unsigned long, llvm::GlobalValueSummary*>> const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int>>, llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 0u>>&)::'lambda'(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine const&)>)::operator()(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine const&)>) const LTO.cpp:0:0
#18 0x00000000028e3c98 (anonymous namespace)::InProcessThinBackend::runThinLTOBackendThread(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine const&)>, llvm::FileCache, unsigned int, llvm::BitcodeModule, llvm::ModuleSummaryIndex&, llvm::FunctionImporter::ImportMapTy const&, llvm::DenseSet<llvm::ValueInfo, llvm::DenseMapInfo<llvm::ValueInfo, void>> const&, std::map<unsigned long, llvm::GlobalValue::LinkageTypes, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>>> const&, llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*, llvm::DenseMapInfo<unsigned long, void>, llvm::detail::DenseMapPair<unsigned long, llvm::GlobalValueSummary*>> const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int>>, llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 0u>>&) LTO.cpp:0:0
#19 0x00000000028e4384 std::_Function_handler<void (), std::_Bind<(anonymous namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, llvm::FunctionImporter::ImportMapTy const&, llvm::DenseSet<llvm::ValueInfo, llvm::DenseMapInfo<llvm::ValueInfo, void>> const&, std::map<unsigned long, llvm::GlobalValue::LinkageTypes, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>>> const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int>>, llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 0u>>&)::'lambda'(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, llvm::FunctionImporter::ImportMapTy const&, llvm::DenseSet<llvm::ValueInfo, llvm::DenseMapInfo<llvm::ValueInfo, void>> const&, std::map<unsigned long, llvm::GlobalValue::LinkageTypes, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>>> const&, llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*, llvm::DenseMapInfo<unsigned long, void>, llvm::detail::DenseMapPair<unsigned long, llvm::GlobalValueSummary*>> const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int>>, llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 0u>>&) (llvm::BitcodeModule, std::reference_wrapper<llvm::ModuleSummaryIndex>, std::reference_wrapper<llvm::FunctionImporter::ImportMapTy const>, std::reference_wrapper<llvm::DenseSet<llvm::ValueInfo, llvm::DenseMapInfo<llvm::ValueInfo, void>> const>, std::reference_wrapper<std::map<unsigned long, llvm::GlobalValue::LinkageTypes, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>>> const>, std::reference_wrapper<llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*, llvm::DenseMapInfo<unsigned long, void>, llvm::detail::DenseMapPair<unsigned long, llvm::GlobalValueSummary*>> const>, std::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int>>, llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 0u>>>)>>::_M_invoke(std::_Any_data const&) LTO.cpp:0:0
#20 0x000000000212dde8 std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> (), std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<std::function<void ()>>>, void>>::_M_invoke(std::_Any_data const&) BalancedPartitioning.cpp:0:0
#21 0x0000000001e284f4 std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*) Driver.cpp:0:0
#22 0x0000ffffae0b3260 __pthread_once_slow.isra.0 (/lib64/libc.so.6+0x93260)
#23 0x0000ffffae0b3324 pthread_once@@GLIBC_2.34 (/lib64/libc.so.6+0x93324)
#24 0x000000000212e148 std::__future_base::_Deferred_state<std::thread::_Invoker<std::tuple<std::function<void ()>>>, void>::_M_complete_async() BalancedPartitioning.cpp:0:0
#25 0x000000000212e1e0 std::_Function_handler<void (), std::shared_future<void> llvm::ThreadPoolInterface::asyncImpl<void>(std::function<void ()>, llvm::ThreadPoolTaskGroup*)::'lambda'()>::_M_invoke(std::_Any_data const&) BalancedPartitioning.cpp:0:0
#26 0x000000000213503c llvm::StdThreadPool::processTasks(llvm::ThreadPoolTaskGroup*) (lld+0x213503c)
#27 0x00000000021363e4 void* llvm::thread::ThreadProxy<std::tuple<llvm::StdThreadPool::grow(int)::$_0>>(void*) ThreadPool.cpp:0:0
#28 0x0000ffffae0ad894 start_thread (/lib64/libc.so.6+0x8d894)
#29 0x0000ffffae11860c thread_start (/lib64/libc.so.6+0xf860c)
```
https://github.com/llvm/llvm-project/pull/141106
More information about the cfe-commits
mailing list