Igor Gomon via llvm-dev
2020-May-23 18:22 UTC
[llvm-dev] Assertion triggered when running simple hello-world code on iOS device using ORC/LLLazyJIT
Hello, I am trying to run this basic C++ hello-world code in my iOS app that has LLVM libraries linked in (the app runs on the actual device - iPad Pro, iOS 13.4.1). #include <iostream> int main (int argh, char *argv[]) { std::cout << "Hello World!" << std::endl; return 0; } So below is the break down of the steps that I do: First I compile this code to an instance of llvm::Module by using the logic borrowed from the lli tool. Once I have the Module instance I construct an instance of orc::LLLazyJIT (J), configure it (again closely following the logic in lli tool) to which I then add the module like this: // Add the main module. ExitOnErr(J->addLazyIRModule(orc::ThreadSafeModule(std::move(MainModule), TSCtx))); Finally the module is executed like this: // Run main. auto MainSym = ExitOnErr(J->lookup("main")); typedef int (*MainFnPtr)(int, char *[]); auto Result = orc::runAsMain( jitTargetAddressToFunction<MainFnPtr>(MainSym.getAddress()), Args, StringRef("lli")); The Xcode halts the execution when an assertion is triggered in llvm::jitlink::Symbol::constructNamedDef (the full call stack is below). The line that triggers the assertion is this: assert(Offset < Base.getSize() && "Symbol offset is outside block"); because both Offset and Base.getSize() evaluate to 0). The data referred to by the Base block is "Hello World!". I don't understand why this assertion happens. Should the Base block size be > 0 ? I am relatively new to LLVM, I did read the documentation on OCR Design and Implementation - but still can't figure out what's going on. If there is any additional documentation I can read on running code using ORC/JIT APIs that would shed more light on the internals/implementation? Any help would be greatly appreciated. Thank you. -- Best, Igor #4 0x0000000106696d70 in llvm::jitlink::Symbol::constructNamedDef(void*, llvm::jitlink::Block&, unsigned long long, llvm::StringRef, unsigned long long, llvm::jitlink::Linkage, llvm::jitlink::Scope, bool, bool) at /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:366 #5 0x0000000106691e8c in llvm::jitlink::LinkGraph::addDefinedSymbol(llvm::jitlink::Block&, unsigned long long, llvm::StringRef, unsigned long long, llvm::jitlink::Linkage, llvm::jitlink::Scope, bool, bool) at /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:897 #6 0x000000010668f654 in llvm::jitlink::MachOLinkGraphBuilder::graphifyRegularSymbols() at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachOLinkGraphBuilder.cpp:502 #7 0x000000010668d16c in llvm::jitlink::MachOLinkGraphBuilder::buildGraph() at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachOLinkGraphBuilder.cpp:36 #8 0x000000010666cd08 in llvm::jitlink::MachOJITLinker_arm64::buildGraph(llvm::MemoryBufferRef) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachO_arm64.cpp:493 #9 0x00000001066236bc in llvm::jitlink::JITLinkerBase::linkPhase1(std::__1::unique_ptr<llvm::jitlink::JITLinkerBase, std::__1::default_delete<llvm::jitlink::JITLinkerBase> >) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.cpp:28 #10 0x000000010665fc10 in void llvm::jitlink::JITLinker<llvm::jitlink::MachOJITLinker_arm64>::link<std::__1::unique_ptr<llvm::jitlink::JITLinkContext, std::__1::default_delete<llvm::jitlink::JITLinkContext> >, llvm::jitlink::PassConfiguration>(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, std::__1::default_delete<llvm::jitlink::JITLinkContext> >&&, llvm::jitlink::PassConfiguration&&) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.h:139 #11 0x000000010665f93c in llvm::jitlink::jitLink_MachO_arm64(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachO_arm64.cpp:685 #12 0x000000010665e604 in llvm::jitlink::jitLink_MachO(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachO.cpp:69 #13 0x0000000106616f58 in llvm::jitlink::jitLink(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLink.cpp:306 #14 0x00000001063db144 in llvm::orc::ObjectLinkingLayer::emit(llvm::orc::MaterializationResponsibility, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer> >) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp:343 #15 0x00000001064044f4 in llvm::orc::ObjectTransformLayer::emit(llvm::orc::MaterializationResponsibility, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer> >) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ObjectTransformLayer.cpp:35 #16 0x000000010638e9c8 in llvm::orc::IRCompileLayer::emit(llvm::orc::MaterializationResponsibility, llvm::orc::ThreadSafeModule) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/IRCompileLayer.cpp:35 #17 0x000000010638ff64 in llvm::orc::IRTransformLayer::emit(llvm::orc::MaterializationResponsibility, llvm::orc::ThreadSafeModule) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/IRTransformLayer.cpp:25 #18 0x00000001062b2b5c in llvm::orc::CompileOnDemandLayer::emitPartition(llvm::orc::MaterializationResponsibility, llvm::orc::ThreadSafeModule, std::__1::map<llvm::orc::SymbolStringPtr, llvm::GlobalValue*, std::__1::less<llvm::orc::SymbolStringPtr>, std::__1::allocator<std::__1::pair<llvm::orc::SymbolStringPtr const, llvm::GlobalValue*> > >) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/CompileOnDemandLayer.cpp:320 #19 0x00000001062b8470 in llvm::orc::PartitioningIRMaterializationUnit::materialize(llvm::orc::MaterializationResponsibility) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/CompileOnDemandLayer.cpp:86 #20 0x00000001062e2844 in llvm::orc::MaterializationUnit::doMaterialize(llvm::orc::JITDylib&) at /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:563 #21 0x00000001062db744 in llvm::orc::ExecutionSession::materializeOnCurrentThread(llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >) at /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:1212 #22 0x00000001062eaf98 in decltype(std::__1::forward<void (*&)(llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit>>)>(fp)(std::__1::forward<llvm::orc::JITDylib&>(fp0),std::__1::forward<std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> > >(fp0))) std::__1::__invoke<void (*&)(llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >), llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> > >(void (*&)(llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >), llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4425 #23 0x00000001062eaef8 in void std::__1::__invoke_void_return_wrapper<void>::__call<void (*&)(llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >), llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> > >(void (*&)(llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >), llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:348 #24 0x00000001062eae94 in std::__1::__function::__alloc_func<void (*)(llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >), std::__1::allocator<void (*)(llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >)>, void (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit>>)>::operator()(llvm::orc::JITDylib&,std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1533 #25 0x00000001062e980c in std::__1::__function::__func<void (*)(llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >), std::__1::allocator<void (*)(llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >)>, void (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit>>)>::operator()(llvm::orc::JITDylib&,std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1707 #26 0x00000001062e2314 in std::__1::__function::__value_func<void (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit>>)>::operator()(llvm::orc::JITDylib&,std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) const at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1860 #27 0x00000001062e2198 in std::__1::function<void (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit>>)>::operator()(llvm::orc::JITDylib&,std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >) const at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2419 #28 0x00000001062d76b4 in llvm::orc::ExecutionSession::dispatchMaterialization(llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >) at /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:1198 #29 0x00000001062d955c in llvm::orc::ExecutionSession::runOutstandingMUs() at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2161 #30 0x00000001062d623c in llvm::orc::ExecutionSession::lookup(llvm::orc::LookupKind, std::__1::vector<std::__1::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>, std::__1::allocator<std::__1::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolLookupSet, llvm::orc::SymbolState, llvm::unique_function<void (llvm::Expected<llvm::DenseMap<llvm::orc::SymbolStringPtr, llvm::JITEvaluatedSymbol, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr>, llvm::detail::DenseMapPair<llvm::orc::SymbolStringPtr, llvm::JITEvaluatedSymbol> > >)>, std::__1::function<void (llvm::DenseMap<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> >, llvm::DenseMapInfo<llvm::orc::JITDylib*>, llvm::detail::DenseMapPair<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> > > > const&)>) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2058 #31 0x00000001063e5128 in llvm::orc::ObjectLinkingLayerJITLinkContext::lookup(llvm::DenseMap<llvm::StringRef, llvm::jitlink::SymbolLookupFlags, llvm::DenseMapInfo<llvm::StringRef>, llvm::detail::DenseMapPair<llvm::StringRef, llvm::jitlink::SymbolLookupFlags> > const&, std::__1::unique_ptr<llvm::jitlink::JITLinkAsyncLookupContinuation, std::__1::default_delete<llvm::jitlink::JITLinkAsyncLookupContinuation> >) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp:87 #32 0x0000000106623bac in llvm::jitlink::JITLinkerBase::linkPhase1(std::__1::unique_ptr<llvm::jitlink::JITLinkerBase, std::__1::default_delete<llvm::jitlink::JITLinkerBase> >) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.cpp:77 #33 0x000000010665fc10 in void llvm::jitlink::JITLinker<llvm::jitlink::MachOJITLinker_arm64>::link<std::__1::unique_ptr<llvm::jitlink::JITLinkContext, std::__1::default_delete<llvm::jitlink::JITLinkContext> >, llvm::jitlink::PassConfiguration>(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, std::__1::default_delete<llvm::jitlink::JITLinkContext> >&&, llvm::jitlink::PassConfiguration&&) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.h:139 #34 0x000000010665f93c in llvm::jitlink::jitLink_MachO_arm64(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachO_arm64.cpp:685 #35 0x000000010665e604 in llvm::jitlink::jitLink_MachO(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachO.cpp:69 #36 0x0000000106616f58 in llvm::jitlink::jitLink(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLink.cpp:306 #37 0x00000001063db144 in llvm::orc::ObjectLinkingLayer::emit(llvm::orc::MaterializationResponsibility, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer> >) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp:343 #38 0x00000001064044f4 in llvm::orc::ObjectTransformLayer::emit(llvm::orc::MaterializationResponsibility, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer> >) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ObjectTransformLayer.cpp:35 #39 0x000000010638e9c8 in llvm::orc::IRCompileLayer::emit(llvm::orc::MaterializationResponsibility, llvm::orc::ThreadSafeModule) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/IRCompileLayer.cpp:35 #40 0x000000010638ff64 in llvm::orc::IRTransformLayer::emit(llvm::orc::MaterializationResponsibility, llvm::orc::ThreadSafeModule) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/IRTransformLayer.cpp:25 #41 0x00000001062b2b5c in llvm::orc::CompileOnDemandLayer::emitPartition(llvm::orc::MaterializationResponsibility, llvm::orc::ThreadSafeModule, std::__1::map<llvm::orc::SymbolStringPtr, llvm::GlobalValue*, std::__1::less<llvm::orc::SymbolStringPtr>, std::__1::allocator<std::__1::pair<llvm::orc::SymbolStringPtr const, llvm::GlobalValue*> > >) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/CompileOnDemandLayer.cpp:320 #42 0x00000001062b8470 in llvm::orc::PartitioningIRMaterializationUnit::materialize(llvm::orc::MaterializationResponsibility) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/CompileOnDemandLayer.cpp:86 #43 0x00000001062e2844 in llvm::orc::MaterializationUnit::doMaterialize(llvm::orc::JITDylib&) at /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:563 #44 0x00000001062db744 in llvm::orc::ExecutionSession::materializeOnCurrentThread(llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >) at /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:1212 #45 0x00000001062eaf98 in decltype(std::__1::forward<void (*&)(llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit>>)>(fp)(std::__1::forward<llvm::orc::JITDylib&>(fp0),std::__1::forward<std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> > >(fp0))) std::__1::__invoke<void (*&)(llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >), llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> > >(void (*&)(llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >), llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4425 #46 0x00000001062eaef8 in void std::__1::__invoke_void_return_wrapper<void>::__call<void (*&)(llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >), llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> > >(void (*&)(llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >), llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:348 #47 0x00000001062eae94 in std::__1::__function::__alloc_func<void (*)(llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >), std::__1::allocator<void (*)(llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >)>, void (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit>>)>::operator()(llvm::orc::JITDylib&,std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1533 #48 0x00000001062e980c in std::__1::__function::__func<void (*)(llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >), std::__1::allocator<void (*)(llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >)>, void (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit>>)>::operator()(llvm::orc::JITDylib&,std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1707 #49 0x00000001062e2314 in std::__1::__function::__value_func<void (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit>>)>::operator()(llvm::orc::JITDylib&,std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) const at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1860 #50 0x00000001062e2198 in std::__1::function<void (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit>>)>::operator()(llvm::orc::JITDylib&,std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >) const at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2419 #51 0x00000001062d76b4 in llvm::orc::ExecutionSession::dispatchMaterialization(llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, std::__1::default_delete<llvm::orc::MaterializationUnit> >) at /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:1198 #52 0x00000001062d955c in llvm::orc::ExecutionSession::runOutstandingMUs() at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2161 #53 0x00000001062d623c in llvm::orc::ExecutionSession::lookup(llvm::orc::LookupKind, std::__1::vector<std::__1::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>, std::__1::allocator<std::__1::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolLookupSet, llvm::orc::SymbolState, llvm::unique_function<void (llvm::Expected<llvm::DenseMap<llvm::orc::SymbolStringPtr, llvm::JITEvaluatedSymbol, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr>, llvm::detail::DenseMapPair<llvm::orc::SymbolStringPtr, llvm::JITEvaluatedSymbol> > >)>, std::__1::function<void (llvm::DenseMap<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> >, llvm::DenseMapInfo<llvm::orc::JITDylib*>, llvm::detail::DenseMapPair<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> > > > const&)>) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2058 #54 0x00000001062dc4b0 in llvm::orc::ExecutionSession::lookup(std::__1::vector<std::__1::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>, std::__1::allocator<std::__1::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolLookupSet const&, llvm::orc::LookupKind, llvm::orc::SymbolState, std::__1::function<void (llvm::DenseMap<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> >, llvm::DenseMapInfo<llvm::orc::JITDylib*>, llvm::detail::DenseMapPair<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> > > > const&)>) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2095 #55 0x00000001062dc6f8 in llvm::orc::ExecutionSession::lookup(std::__1::vector<std::__1::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>, std::__1::allocator<std::__1::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolStringPtr) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2120 #56 0x0000000106392c40 in llvm::orc::LazyCallThroughManager::callThroughToSymbol(unsigned long long) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/LazyReexports.cpp:54 #57 0x00000001063a07a8 in llvm::Error llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned long long)::operator()(unsigned long long) const at /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/LazyReexports.h:120 #58 0x00000001063a0760 in decltype(std::__1::forward<llvm::Error llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned long long)&>(fp)(std::__1::forward<unsigned long long>(fp0))) std::__1::__invoke<llvm::Error llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned long long)&, unsigned long long>(llvm::Error llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned long long)&, unsigned long long&&) at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4425 #59 0x00000001063a06f4 in unsigned long long std::__1::__invoke_void_return_wrapper<unsigned long long>::__call<llvm::Error llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned long long)&, unsigned long long>(llvm::Error llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned long long)&, unsigned long long&&) at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:317 #60 0x00000001063a06a8 in std::__1::__function::__alloc_func<llvm::Error llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned long long), std::__1::allocator<llvm::Error llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned long long)>, unsigned long long (unsigned long long)>::operator()(unsigned long long&&) at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1533 #61 0x000000010639f038 in std::__1::__function::__func<llvm::Error llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned long long), std::__1::allocator<llvm::Error llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned long long)>, unsigned long long (unsigned long long)>::operator()(unsigned long long&&) at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1707 #62 0x0000000106349f94 in std::__1::__function::__value_func<unsigned long long (unsigned long long)>::operator()(unsigned long long&&) const at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1860 #63 0x0000000106349f30 in std::__1::function<unsigned long long (unsigned long long)>::operator()(unsigned long long) const at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2419 #64 0x0000000106349858 in llvm::orc::LocalTrampolinePool<llvm::orc::OrcAArch64>::reenter(void*, void*) at /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/IndirectionUtils.h:111 #65 0x0000000117634090 in 0x117634090 () #66 0x0000000106323a08 in llvm::orc::runAsMain(int (*)(int, char**), llvm::ArrayRef<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, llvm::Optional<llvm::StringRef>) at /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ExecutionUtils.cpp:45 -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200523/9ebbc6d3/attachment-0001.html>
David Blaikie via llvm-dev
2020-May-25 21:47 UTC
[llvm-dev] Assertion triggered when running simple hello-world code on iOS device using ORC/LLLazyJIT
+Lang for ORC stuff On Mon, May 25, 2020 at 2:35 PM Igor Gomon via llvm-dev < llvm-dev at lists.llvm.org> wrote:> Hello, > > I am trying to run this basic C++ hello-world code in my iOS app that has > LLVM libraries linked in (the app runs on the actual device - iPad Pro, iOS > 13.4.1). > > #include <iostream> > int main (int argh, char *argv[]) { > std::cout << "Hello World!" << std::endl; > return 0; > } > > So below is the break down of the steps that I do: > First I compile this code to an instance of llvm::Module by using the > logic borrowed from the lli tool. > Once I have the Module instance I construct an instance of orc::LLLazyJIT > (J), configure it (again closely following the logic in lli tool) > to which I then add the module like this: > > // Add the main module. > > > ExitOnErr(J->addLazyIRModule(orc::ThreadSafeModule(std::move(MainModule), > TSCtx))); > > > Finally the module is executed like this: > > // Run main. > > auto MainSym = ExitOnErr(J->lookup("main")); > > > typedef int (*MainFnPtr)(int, char *[]); > > auto Result = orc::runAsMain( > > jitTargetAddressToFunction<MainFnPtr>(MainSym.getAddress()), Args, > > StringRef("lli")); > > > The Xcode halts the execution when an assertion is triggered in llvm::jitlink::Symbol::constructNamedDef > (the full call stack is below). > > The line that triggers the assertion is this: > > > assert(Offset < Base.getSize() && "Symbol offset is outside block"); > > > because both Offset and Base.getSize() evaluate to 0). > > The data referred to by the Base block is "Hello World!". > > > I don't understand why this assertion happens. Should the Base block size > be > 0 ? > > I am relatively new to LLVM, I did read the documentation on OCR Design > and Implementation - but still can't figure out what's going on. > > If there is any additional documentation I can read on running code using > ORC/JIT APIs that would shed more light on the internals/implementation? > > > Any help would be greatly appreciated. > > Thank you. > > > -- > > Best, > > Igor > > > > #4 0x0000000106696d70 in llvm::jitlink::Symbol::constructNamedDef(void*, > llvm::jitlink::Block&, unsigned long long, llvm::StringRef, unsigned long > long, llvm::jitlink::Linkage, llvm::jitlink::Scope, bool, bool) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:366 > > #5 0x0000000106691e8c in > llvm::jitlink::LinkGraph::addDefinedSymbol(llvm::jitlink::Block&, unsigned > long long, llvm::StringRef, unsigned long long, llvm::jitlink::Linkage, > llvm::jitlink::Scope, bool, bool) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:897 > > #6 0x000000010668f654 in > llvm::jitlink::MachOLinkGraphBuilder::graphifyRegularSymbols() at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachOLinkGraphBuilder.cpp:502 > > #7 0x000000010668d16c in > llvm::jitlink::MachOLinkGraphBuilder::buildGraph() at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachOLinkGraphBuilder.cpp:36 > > #8 0x000000010666cd08 in > llvm::jitlink::MachOJITLinker_arm64::buildGraph(llvm::MemoryBufferRef) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachO_arm64.cpp:493 > > #9 0x00000001066236bc in > llvm::jitlink::JITLinkerBase::linkPhase1(std::__1::unique_ptr<llvm::jitlink::JITLinkerBase, > std::__1::default_delete<llvm::jitlink::JITLinkerBase> >) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.cpp:28 > > #10 0x000000010665fc10 in void > llvm::jitlink::JITLinker<llvm::jitlink::MachOJITLinker_arm64>::link<std::__1::unique_ptr<llvm::jitlink::JITLinkContext, > std::__1::default_delete<llvm::jitlink::JITLinkContext> >, > llvm::jitlink::PassConfiguration>(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, > std::__1::default_delete<llvm::jitlink::JITLinkContext> >&&, > llvm::jitlink::PassConfiguration&&) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.h:139 > > #11 0x000000010665f93c in > llvm::jitlink::jitLink_MachO_arm64(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, > std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachO_arm64.cpp:685 > > #12 0x000000010665e604 in > llvm::jitlink::jitLink_MachO(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, > std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachO.cpp:69 > > #13 0x0000000106616f58 in > llvm::jitlink::jitLink(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, > std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLink.cpp:306 > > #14 0x00000001063db144 in > llvm::orc::ObjectLinkingLayer::emit(llvm::orc::MaterializationResponsibility, > std::__1::unique_ptr<llvm::MemoryBuffer, > std::__1::default_delete<llvm::MemoryBuffer> >) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp:343 > > #15 0x00000001064044f4 in > llvm::orc::ObjectTransformLayer::emit(llvm::orc::MaterializationResponsibility, > std::__1::unique_ptr<llvm::MemoryBuffer, > std::__1::default_delete<llvm::MemoryBuffer> >) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ObjectTransformLayer.cpp:35 > > #16 0x000000010638e9c8 in > llvm::orc::IRCompileLayer::emit(llvm::orc::MaterializationResponsibility, > llvm::orc::ThreadSafeModule) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/IRCompileLayer.cpp:35 > > #17 0x000000010638ff64 in > llvm::orc::IRTransformLayer::emit(llvm::orc::MaterializationResponsibility, > llvm::orc::ThreadSafeModule) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/IRTransformLayer.cpp:25 > > #18 0x00000001062b2b5c in > llvm::orc::CompileOnDemandLayer::emitPartition(llvm::orc::MaterializationResponsibility, > llvm::orc::ThreadSafeModule, std::__1::map<llvm::orc::SymbolStringPtr, > llvm::GlobalValue*, std::__1::less<llvm::orc::SymbolStringPtr>, > std::__1::allocator<std::__1::pair<llvm::orc::SymbolStringPtr const, > llvm::GlobalValue*> > >) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/CompileOnDemandLayer.cpp:320 > > #19 0x00000001062b8470 in > llvm::orc::PartitioningIRMaterializationUnit::materialize(llvm::orc::MaterializationResponsibility) > at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/CompileOnDemandLayer.cpp:86 > > #20 0x00000001062e2844 in > llvm::orc::MaterializationUnit::doMaterialize(llvm::orc::JITDylib&) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:563 > > #21 0x00000001062db744 in > llvm::orc::ExecutionSession::materializeOnCurrentThread(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:1212 > > #22 0x00000001062eaf98 in decltype(std::__1::forward<void > (*&)(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> > >)>(fp)(std::__1::forward<llvm::orc::JITDylib&>(fp0), > std::__1::forward<std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> > >(fp0))) > std::__1::__invoke<void (*&)(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >), > llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> > >(void > (*&)(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >), > llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at > /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4425 > > #23 0x00000001062eaef8 in void > std::__1::__invoke_void_return_wrapper<void>::__call<void > (*&)(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >), > llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> > >(void > (*&)(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >), > llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at > /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:348 > > #24 0x00000001062eae94 in std::__1::__function::__alloc_func<void > (*)(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >), > std::__1::allocator<void (*)(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >)>, void > (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> > >)>::operator()(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at > /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1533 > > #25 0x00000001062e980c in std::__1::__function::__func<void > (*)(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >), > std::__1::allocator<void (*)(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >)>, void > (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> > >)>::operator()(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at > /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1707 > > #26 0x00000001062e2314 in std::__1::__function::__value_func<void > (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> > >)>::operator()(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) const at > /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1860 > > #27 0x00000001062e2198 in std::__1::function<void (llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> > >)>::operator()(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >) const at > /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2419 > > #28 0x00000001062d76b4 in > llvm::orc::ExecutionSession::dispatchMaterialization(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:1198 > > #29 0x00000001062d955c in > llvm::orc::ExecutionSession::runOutstandingMUs() at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2161 > > #30 0x00000001062d623c in > llvm::orc::ExecutionSession::lookup(llvm::orc::LookupKind, > std::__1::vector<std::__1::pair<llvm::orc::JITDylib*, > llvm::orc::JITDylibLookupFlags>, > std::__1::allocator<std::__1::pair<llvm::orc::JITDylib*, > llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolLookupSet, > llvm::orc::SymbolState, llvm::unique_function<void > (llvm::Expected<llvm::DenseMap<llvm::orc::SymbolStringPtr, > llvm::JITEvaluatedSymbol, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr>, > llvm::detail::DenseMapPair<llvm::orc::SymbolStringPtr, > llvm::JITEvaluatedSymbol> > >)>, std::__1::function<void > (llvm::DenseMap<llvm::orc::JITDylib*, > llvm::DenseSet<llvm::orc::SymbolStringPtr, > llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> >, > llvm::DenseMapInfo<llvm::orc::JITDylib*>, > llvm::detail::DenseMapPair<llvm::orc::JITDylib*, > llvm::DenseSet<llvm::orc::SymbolStringPtr, > llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> > > > const&)>) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2058 > > #31 0x00000001063e5128 in > llvm::orc::ObjectLinkingLayerJITLinkContext::lookup(llvm::DenseMap<llvm::StringRef, > llvm::jitlink::SymbolLookupFlags, llvm::DenseMapInfo<llvm::StringRef>, > llvm::detail::DenseMapPair<llvm::StringRef, > llvm::jitlink::SymbolLookupFlags> > const&, > std::__1::unique_ptr<llvm::jitlink::JITLinkAsyncLookupContinuation, > std::__1::default_delete<llvm::jitlink::JITLinkAsyncLookupContinuation> >) > at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp:87 > > #32 0x0000000106623bac in > llvm::jitlink::JITLinkerBase::linkPhase1(std::__1::unique_ptr<llvm::jitlink::JITLinkerBase, > std::__1::default_delete<llvm::jitlink::JITLinkerBase> >) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.cpp:77 > > #33 0x000000010665fc10 in void > llvm::jitlink::JITLinker<llvm::jitlink::MachOJITLinker_arm64>::link<std::__1::unique_ptr<llvm::jitlink::JITLinkContext, > std::__1::default_delete<llvm::jitlink::JITLinkContext> >, > llvm::jitlink::PassConfiguration>(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, > std::__1::default_delete<llvm::jitlink::JITLinkContext> >&&, > llvm::jitlink::PassConfiguration&&) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.h:139 > > #34 0x000000010665f93c in > llvm::jitlink::jitLink_MachO_arm64(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, > std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachO_arm64.cpp:685 > > #35 0x000000010665e604 in > llvm::jitlink::jitLink_MachO(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, > std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachO.cpp:69 > > #36 0x0000000106616f58 in > llvm::jitlink::jitLink(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, > std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLink.cpp:306 > > #37 0x00000001063db144 in > llvm::orc::ObjectLinkingLayer::emit(llvm::orc::MaterializationResponsibility, > std::__1::unique_ptr<llvm::MemoryBuffer, > std::__1::default_delete<llvm::MemoryBuffer> >) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp:343 > > #38 0x00000001064044f4 in > llvm::orc::ObjectTransformLayer::emit(llvm::orc::MaterializationResponsibility, > std::__1::unique_ptr<llvm::MemoryBuffer, > std::__1::default_delete<llvm::MemoryBuffer> >) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ObjectTransformLayer.cpp:35 > > #39 0x000000010638e9c8 in > llvm::orc::IRCompileLayer::emit(llvm::orc::MaterializationResponsibility, > llvm::orc::ThreadSafeModule) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/IRCompileLayer.cpp:35 > > #40 0x000000010638ff64 in > llvm::orc::IRTransformLayer::emit(llvm::orc::MaterializationResponsibility, > llvm::orc::ThreadSafeModule) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/IRTransformLayer.cpp:25 > > #41 0x00000001062b2b5c in > llvm::orc::CompileOnDemandLayer::emitPartition(llvm::orc::MaterializationResponsibility, > llvm::orc::ThreadSafeModule, std::__1::map<llvm::orc::SymbolStringPtr, > llvm::GlobalValue*, std::__1::less<llvm::orc::SymbolStringPtr>, > std::__1::allocator<std::__1::pair<llvm::orc::SymbolStringPtr const, > llvm::GlobalValue*> > >) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/CompileOnDemandLayer.cpp:320 > > #42 0x00000001062b8470 in > llvm::orc::PartitioningIRMaterializationUnit::materialize(llvm::orc::MaterializationResponsibility) > at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/CompileOnDemandLayer.cpp:86 > > #43 0x00000001062e2844 in > llvm::orc::MaterializationUnit::doMaterialize(llvm::orc::JITDylib&) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:563 > > #44 0x00000001062db744 in > llvm::orc::ExecutionSession::materializeOnCurrentThread(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:1212 > > #45 0x00000001062eaf98 in decltype(std::__1::forward<void > (*&)(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> > >)>(fp)(std::__1::forward<llvm::orc::JITDylib&>(fp0), > std::__1::forward<std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> > >(fp0))) > std::__1::__invoke<void (*&)(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >), > llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> > >(void > (*&)(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >), > llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at > /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4425 > > #46 0x00000001062eaef8 in void > std::__1::__invoke_void_return_wrapper<void>::__call<void > (*&)(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >), > llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> > >(void > (*&)(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >), > llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at > /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:348 > > #47 0x00000001062eae94 in std::__1::__function::__alloc_func<void > (*)(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >), > std::__1::allocator<void (*)(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >)>, void > (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> > >)>::operator()(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at > /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1533 > > #48 0x00000001062e980c in std::__1::__function::__func<void > (*)(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >), > std::__1::allocator<void (*)(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >)>, void > (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> > >)>::operator()(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at > /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1707 > > #49 0x00000001062e2314 in std::__1::__function::__value_func<void > (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> > >)>::operator()(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) const at > /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1860 > > #50 0x00000001062e2198 in std::__1::function<void (llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> > >)>::operator()(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >) const at > /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2419 > > #51 0x00000001062d76b4 in > llvm::orc::ExecutionSession::dispatchMaterialization(llvm::orc::JITDylib&, > std::__1::unique_ptr<llvm::orc::MaterializationUnit, > std::__1::default_delete<llvm::orc::MaterializationUnit> >) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:1198 > > #52 0x00000001062d955c in > llvm::orc::ExecutionSession::runOutstandingMUs() at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2161 > > #53 0x00000001062d623c in > llvm::orc::ExecutionSession::lookup(llvm::orc::LookupKind, > std::__1::vector<std::__1::pair<llvm::orc::JITDylib*, > llvm::orc::JITDylibLookupFlags>, > std::__1::allocator<std::__1::pair<llvm::orc::JITDylib*, > llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolLookupSet, > llvm::orc::SymbolState, llvm::unique_function<void > (llvm::Expected<llvm::DenseMap<llvm::orc::SymbolStringPtr, > llvm::JITEvaluatedSymbol, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr>, > llvm::detail::DenseMapPair<llvm::orc::SymbolStringPtr, > llvm::JITEvaluatedSymbol> > >)>, std::__1::function<void > (llvm::DenseMap<llvm::orc::JITDylib*, > llvm::DenseSet<llvm::orc::SymbolStringPtr, > llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> >, > llvm::DenseMapInfo<llvm::orc::JITDylib*>, > llvm::detail::DenseMapPair<llvm::orc::JITDylib*, > llvm::DenseSet<llvm::orc::SymbolStringPtr, > llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> > > > const&)>) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2058 > > #54 0x00000001062dc4b0 in > llvm::orc::ExecutionSession::lookup(std::__1::vector<std::__1::pair<llvm::orc::JITDylib*, > llvm::orc::JITDylibLookupFlags>, > std::__1::allocator<std::__1::pair<llvm::orc::JITDylib*, > llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolLookupSet > const&, llvm::orc::LookupKind, llvm::orc::SymbolState, > std::__1::function<void (llvm::DenseMap<llvm::orc::JITDylib*, > llvm::DenseSet<llvm::orc::SymbolStringPtr, > llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> >, > llvm::DenseMapInfo<llvm::orc::JITDylib*>, > llvm::detail::DenseMapPair<llvm::orc::JITDylib*, > llvm::DenseSet<llvm::orc::SymbolStringPtr, > llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> > > > const&)>) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2095 > > #55 0x00000001062dc6f8 in > llvm::orc::ExecutionSession::lookup(std::__1::vector<std::__1::pair<llvm::orc::JITDylib*, > llvm::orc::JITDylibLookupFlags>, > std::__1::allocator<std::__1::pair<llvm::orc::JITDylib*, > llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolStringPtr) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2120 > > #56 0x0000000106392c40 in > llvm::orc::LazyCallThroughManager::callThroughToSymbol(unsigned long long) > at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/LazyReexports.cpp:54 > > #57 0x00000001063a07a8 in llvm::Error > llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned > long long)::operator()(unsigned long long) const at > /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/LazyReexports.h:120 > > #58 0x00000001063a0760 in decltype(std::__1::forward<llvm::Error > llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned > long long)&>(fp)(std::__1::forward<unsigned long long>(fp0))) > std::__1::__invoke<llvm::Error > llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned > long long)&, unsigned long long>(llvm::Error > llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned > long long)&, unsigned long long&&) at > /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4425 > > #59 0x00000001063a06f4 in unsigned long long > std::__1::__invoke_void_return_wrapper<unsigned long > long>::__call<llvm::Error > llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned > long long)&, unsigned long long>(llvm::Error > llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned > long long)&, unsigned long long&&) at > /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:317 > > #60 0x00000001063a06a8 in std::__1::__function::__alloc_func<llvm::Error > llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned > long long), std::__1::allocator<llvm::Error > llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned > long long)>, unsigned long long (unsigned long long)>::operator()(unsigned > long long&&) at > /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1533 > > #61 0x000000010639f038 in std::__1::__function::__func<llvm::Error > llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned > long long), std::__1::allocator<llvm::Error > llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned > long long)>, unsigned long long (unsigned long long)>::operator()(unsigned > long long&&) at > /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1707 > > #62 0x0000000106349f94 in std::__1::__function::__value_func<unsigned > long long (unsigned long long)>::operator()(unsigned long long&&) const at > /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1860 > > #63 0x0000000106349f30 in std::__1::function<unsigned long long (unsigned > long long)>::operator()(unsigned long long) const at > /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2419 > > #64 0x0000000106349858 in > llvm::orc::LocalTrampolinePool<llvm::orc::OrcAArch64>::reenter(void*, > void*) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/IndirectionUtils.h:111 > > #65 0x0000000117634090 in 0x117634090 () > > #66 0x0000000106323a08 in llvm::orc::runAsMain(int (*)(int, char**), > llvm::ArrayRef<std::__1::basic_string<char, std::__1::char_traits<char>, > std::__1::allocator<char> > >, llvm::Optional<llvm::StringRef>) at > /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ExecutionUtils.cpp:45 > > > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200525/65adc3c4/attachment.html>
Lang Hames via llvm-dev
2020-Jun-01 18:01 UTC
[llvm-dev] Assertion triggered when running simple hello-world code on iOS device using ORC/LLLazyJIT
Hi Igor, Thanks for the walkthrough! This sounds like it might be a JITLink MachO parser bug. Are you able to share the module that causes the failure? It may also be interesting to run your tool with '-debug-only=jitlink' and capture the output. Regards, Lang. On Sun, May 31, 2020 at 2:08 PM Igor Gomon <igomonv at gmail.com> wrote:> Hello Lang, > > I was just wondering if you had a chance to look at my issue or maybe have > an idea what may have caused it. > Thanks! > > > — > Best Regards, > Igor Gomon > Sent from my iPad > > On May 25, 2020, at 5:48 PM, David Blaikie <dblaikie at gmail.com> wrote: > > > +Lang for ORC stuff > > On Mon, May 25, 2020 at 2:35 PM Igor Gomon via llvm-dev < > llvm-dev at lists.llvm.org> wrote: > >> Hello, >> >> I am trying to run this basic C++ hello-world code in my iOS app that has >> LLVM libraries linked in (the app runs on the actual device - iPad Pro, iOS >> 13.4.1). >> >> #include <iostream> >> int main (int argh, char *argv[]) { >> std::cout << "Hello World!" << std::endl; >> return 0; >> } >> >> So below is the break down of the steps that I do: >> First I compile this code to an instance of llvm::Module by using the >> logic borrowed from the lli tool. >> Once I have the Module instance I construct an instance of orc::LLLazyJIT >> (J), configure it (again closely following the logic in lli tool) >> to which I then add the module like this: >> >> // Add the main module. >> >> >> ExitOnErr(J->addLazyIRModule(orc::ThreadSafeModule(std::move(MainModule), >> TSCtx))); >> >> >> Finally the module is executed like this: >> >> // Run main. >> >> auto MainSym = ExitOnErr(J->lookup("main")); >> >> >> typedef int (*MainFnPtr)(int, char *[]); >> >> auto Result = orc::runAsMain( >> >> jitTargetAddressToFunction<MainFnPtr>(MainSym.getAddress()), Args, >> >> StringRef("lli")); >> >> >> The Xcode halts the execution when an assertion is triggered in llvm::jitlink::Symbol::constructNamedDef >> (the full call stack is below). >> >> The line that triggers the assertion is this: >> >> >> assert(Offset < Base.getSize() && "Symbol offset is outside block"); >> >> >> because both Offset and Base.getSize() evaluate to 0). >> >> The data referred to by the Base block is "Hello World!". >> >> >> I don't understand why this assertion happens. Should the Base block size >> be > 0 ? >> >> I am relatively new to LLVM, I did read the documentation on OCR Design >> and Implementation - but still can't figure out what's going on. >> >> If there is any additional documentation I can read on running code >> using ORC/JIT APIs that would shed more light on the internals/ >> implementation? >> >> >> Any help would be greatly appreciated. >> >> Thank you. >> >> >> -- >> >> Best, >> >> Igor >> >> >> >> #4 0x0000000106696d70 in llvm::jitlink::Symbol::constructNamedDef(void*, >> llvm::jitlink::Block&, unsigned long long, llvm::StringRef, unsigned long >> long, llvm::jitlink::Linkage, llvm::jitlink::Scope, bool, bool) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:366 >> >> #5 0x0000000106691e8c in >> llvm::jitlink::LinkGraph::addDefinedSymbol(llvm::jitlink::Block&, unsigned >> long long, llvm::StringRef, unsigned long long, llvm::jitlink::Linkage, >> llvm::jitlink::Scope, bool, bool) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:897 >> >> #6 0x000000010668f654 in >> llvm::jitlink::MachOLinkGraphBuilder::graphifyRegularSymbols() at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachOLinkGraphBuilder.cpp:502 >> >> #7 0x000000010668d16c in >> llvm::jitlink::MachOLinkGraphBuilder::buildGraph() at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachOLinkGraphBuilder.cpp:36 >> >> #8 0x000000010666cd08 in >> llvm::jitlink::MachOJITLinker_arm64::buildGraph(llvm::MemoryBufferRef) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachO_arm64.cpp:493 >> >> #9 0x00000001066236bc in >> llvm::jitlink::JITLinkerBase::linkPhase1(std::__1::unique_ptr<llvm::jitlink::JITLinkerBase, >> std::__1::default_delete<llvm::jitlink::JITLinkerBase> >) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.cpp:28 >> >> #10 0x000000010665fc10 in void >> llvm::jitlink::JITLinker<llvm::jitlink::MachOJITLinker_arm64>::link<std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >> std::__1::default_delete<llvm::jitlink::JITLinkContext> >, >> llvm::jitlink::PassConfiguration>(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >> std::__1::default_delete<llvm::jitlink::JITLinkContext> >&&, >> llvm::jitlink::PassConfiguration&&) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.h:139 >> >> #11 0x000000010665f93c in >> llvm::jitlink::jitLink_MachO_arm64(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >> std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachO_arm64.cpp:685 >> >> #12 0x000000010665e604 in >> llvm::jitlink::jitLink_MachO(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >> std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachO.cpp:69 >> >> #13 0x0000000106616f58 in >> llvm::jitlink::jitLink(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >> std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLink.cpp:306 >> >> #14 0x00000001063db144 in >> llvm::orc::ObjectLinkingLayer::emit(llvm::orc::MaterializationResponsibility, >> std::__1::unique_ptr<llvm::MemoryBuffer, >> std::__1::default_delete<llvm::MemoryBuffer> >) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp:343 >> >> #15 0x00000001064044f4 in >> llvm::orc::ObjectTransformLayer::emit(llvm::orc::MaterializationResponsibility, >> std::__1::unique_ptr<llvm::MemoryBuffer, >> std::__1::default_delete<llvm::MemoryBuffer> >) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ObjectTransformLayer.cpp:35 >> >> #16 0x000000010638e9c8 in >> llvm::orc::IRCompileLayer::emit(llvm::orc::MaterializationResponsibility, >> llvm::orc::ThreadSafeModule) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/IRCompileLayer.cpp:35 >> >> #17 0x000000010638ff64 in >> llvm::orc::IRTransformLayer::emit(llvm::orc::MaterializationResponsibility, >> llvm::orc::ThreadSafeModule) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/IRTransformLayer.cpp:25 >> >> #18 0x00000001062b2b5c in >> llvm::orc::CompileOnDemandLayer::emitPartition(llvm::orc::MaterializationResponsibility, >> llvm::orc::ThreadSafeModule, std::__1::map<llvm::orc::SymbolStringPtr, >> llvm::GlobalValue*, std::__1::less<llvm::orc::SymbolStringPtr>, >> std::__1::allocator<std::__1::pair<llvm::orc::SymbolStringPtr const, >> llvm::GlobalValue*> > >) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/CompileOnDemandLayer.cpp:320 >> >> #19 0x00000001062b8470 in >> llvm::orc::PartitioningIRMaterializationUnit::materialize(llvm::orc::MaterializationResponsibility) >> at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/CompileOnDemandLayer.cpp:86 >> >> #20 0x00000001062e2844 in >> llvm::orc::MaterializationUnit::doMaterialize(llvm::orc::JITDylib&) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:563 >> >> #21 0x00000001062db744 in >> llvm::orc::ExecutionSession::materializeOnCurrentThread(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:1212 >> >> #22 0x00000001062eaf98 in decltype(std::__1::forward<void >> (*&)(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >> >)>(fp)(std::__1::forward<llvm::orc::JITDylib&>(fp0), >> std::__1::forward<std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> > >(fp0))) >> std::__1::__invoke<void (*&)(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >> llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> > >(void >> (*&)(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >> llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at >> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4425 >> >> #23 0x00000001062eaef8 in void >> std::__1::__invoke_void_return_wrapper<void>::__call<void >> (*&)(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >> llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> > >(void >> (*&)(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >> llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at >> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:348 >> >> #24 0x00000001062eae94 in std::__1::__function::__alloc_func<void >> (*)(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >> std::__1::allocator<void (*)(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >)>, void >> (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >> >)>::operator()(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at >> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1533 >> >> #25 0x00000001062e980c in std::__1::__function::__func<void >> (*)(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >> std::__1::allocator<void (*)(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >)>, void >> (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >> >)>::operator()(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at >> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1707 >> >> #26 0x00000001062e2314 in std::__1::__function::__value_func<void >> (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >> >)>::operator()(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) const at >> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1860 >> >> #27 0x00000001062e2198 in std::__1::function<void (llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >> >)>::operator()(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >) const at >> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2419 >> >> #28 0x00000001062d76b4 in >> llvm::orc::ExecutionSession::dispatchMaterialization(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:1198 >> >> #29 0x00000001062d955c in >> llvm::orc::ExecutionSession::runOutstandingMUs() at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2161 >> >> #30 0x00000001062d623c in >> llvm::orc::ExecutionSession::lookup(llvm::orc::LookupKind, >> std::__1::vector<std::__1::pair<llvm::orc::JITDylib*, >> llvm::orc::JITDylibLookupFlags>, >> std::__1::allocator<std::__1::pair<llvm::orc::JITDylib*, >> llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolLookupSet, >> llvm::orc::SymbolState, llvm::unique_function<void >> (llvm::Expected<llvm::DenseMap<llvm::orc::SymbolStringPtr, >> llvm::JITEvaluatedSymbol, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr>, >> llvm::detail::DenseMapPair<llvm::orc::SymbolStringPtr, >> llvm::JITEvaluatedSymbol> > >)>, std::__1::function<void >> (llvm::DenseMap<llvm::orc::JITDylib*, >> llvm::DenseSet<llvm::orc::SymbolStringPtr, >> llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> >, >> llvm::DenseMapInfo<llvm::orc::JITDylib*>, >> llvm::detail::DenseMapPair<llvm::orc::JITDylib*, >> llvm::DenseSet<llvm::orc::SymbolStringPtr, >> llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> > > > const&)>) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2058 >> >> #31 0x00000001063e5128 in >> llvm::orc::ObjectLinkingLayerJITLinkContext::lookup(llvm::DenseMap<llvm::StringRef, >> llvm::jitlink::SymbolLookupFlags, llvm::DenseMapInfo<llvm::StringRef>, >> llvm::detail::DenseMapPair<llvm::StringRef, >> llvm::jitlink::SymbolLookupFlags> > const&, >> std::__1::unique_ptr<llvm::jitlink::JITLinkAsyncLookupContinuation, >> std::__1::default_delete<llvm::jitlink::JITLinkAsyncLookupContinuation> >) >> at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp:87 >> >> #32 0x0000000106623bac in >> llvm::jitlink::JITLinkerBase::linkPhase1(std::__1::unique_ptr<llvm::jitlink::JITLinkerBase, >> std::__1::default_delete<llvm::jitlink::JITLinkerBase> >) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.cpp:77 >> >> #33 0x000000010665fc10 in void >> llvm::jitlink::JITLinker<llvm::jitlink::MachOJITLinker_arm64>::link<std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >> std::__1::default_delete<llvm::jitlink::JITLinkContext> >, >> llvm::jitlink::PassConfiguration>(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >> std::__1::default_delete<llvm::jitlink::JITLinkContext> >&&, >> llvm::jitlink::PassConfiguration&&) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.h:139 >> >> #34 0x000000010665f93c in >> llvm::jitlink::jitLink_MachO_arm64(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >> std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachO_arm64.cpp:685 >> >> #35 0x000000010665e604 in >> llvm::jitlink::jitLink_MachO(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >> std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachO.cpp:69 >> >> #36 0x0000000106616f58 in >> llvm::jitlink::jitLink(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >> std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLink.cpp:306 >> >> #37 0x00000001063db144 in >> llvm::orc::ObjectLinkingLayer::emit(llvm::orc::MaterializationResponsibility, >> std::__1::unique_ptr<llvm::MemoryBuffer, >> std::__1::default_delete<llvm::MemoryBuffer> >) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp:343 >> >> #38 0x00000001064044f4 in >> llvm::orc::ObjectTransformLayer::emit(llvm::orc::MaterializationResponsibility, >> std::__1::unique_ptr<llvm::MemoryBuffer, >> std::__1::default_delete<llvm::MemoryBuffer> >) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ObjectTransformLayer.cpp:35 >> >> #39 0x000000010638e9c8 in >> llvm::orc::IRCompileLayer::emit(llvm::orc::MaterializationResponsibility, >> llvm::orc::ThreadSafeModule) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/IRCompileLayer.cpp:35 >> >> #40 0x000000010638ff64 in >> llvm::orc::IRTransformLayer::emit(llvm::orc::MaterializationResponsibility, >> llvm::orc::ThreadSafeModule) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/IRTransformLayer.cpp:25 >> >> #41 0x00000001062b2b5c in >> llvm::orc::CompileOnDemandLayer::emitPartition(llvm::orc::MaterializationResponsibility, >> llvm::orc::ThreadSafeModule, std::__1::map<llvm::orc::SymbolStringPtr, >> llvm::GlobalValue*, std::__1::less<llvm::orc::SymbolStringPtr>, >> std::__1::allocator<std::__1::pair<llvm::orc::SymbolStringPtr const, >> llvm::GlobalValue*> > >) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/CompileOnDemandLayer.cpp:320 >> >> #42 0x00000001062b8470 in >> llvm::orc::PartitioningIRMaterializationUnit::materialize(llvm::orc::MaterializationResponsibility) >> at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/CompileOnDemandLayer.cpp:86 >> >> #43 0x00000001062e2844 in >> llvm::orc::MaterializationUnit::doMaterialize(llvm::orc::JITDylib&) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:563 >> >> #44 0x00000001062db744 in >> llvm::orc::ExecutionSession::materializeOnCurrentThread(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:1212 >> >> #45 0x00000001062eaf98 in decltype(std::__1::forward<void >> (*&)(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >> >)>(fp)(std::__1::forward<llvm::orc::JITDylib&>(fp0), >> std::__1::forward<std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> > >(fp0))) >> std::__1::__invoke<void (*&)(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >> llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> > >(void >> (*&)(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >> llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at >> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4425 >> >> #46 0x00000001062eaef8 in void >> std::__1::__invoke_void_return_wrapper<void>::__call<void >> (*&)(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >> llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> > >(void >> (*&)(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >> llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at >> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:348 >> >> #47 0x00000001062eae94 in std::__1::__function::__alloc_func<void >> (*)(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >> std::__1::allocator<void (*)(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >)>, void >> (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >> >)>::operator()(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at >> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1533 >> >> #48 0x00000001062e980c in std::__1::__function::__func<void >> (*)(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >> std::__1::allocator<void (*)(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >)>, void >> (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >> >)>::operator()(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at >> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1707 >> >> #49 0x00000001062e2314 in std::__1::__function::__value_func<void >> (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >> >)>::operator()(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) const at >> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1860 >> >> #50 0x00000001062e2198 in std::__1::function<void (llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >> >)>::operator()(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >) const at >> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2419 >> >> #51 0x00000001062d76b4 in >> llvm::orc::ExecutionSession::dispatchMaterialization(llvm::orc::JITDylib&, >> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >> std::__1::default_delete<llvm::orc::MaterializationUnit> >) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:1198 >> >> #52 0x00000001062d955c in >> llvm::orc::ExecutionSession::runOutstandingMUs() at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2161 >> >> #53 0x00000001062d623c in >> llvm::orc::ExecutionSession::lookup(llvm::orc::LookupKind, >> std::__1::vector<std::__1::pair<llvm::orc::JITDylib*, >> llvm::orc::JITDylibLookupFlags>, >> std::__1::allocator<std::__1::pair<llvm::orc::JITDylib*, >> llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolLookupSet, >> llvm::orc::SymbolState, llvm::unique_function<void >> (llvm::Expected<llvm::DenseMap<llvm::orc::SymbolStringPtr, >> llvm::JITEvaluatedSymbol, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr>, >> llvm::detail::DenseMapPair<llvm::orc::SymbolStringPtr, >> llvm::JITEvaluatedSymbol> > >)>, std::__1::function<void >> (llvm::DenseMap<llvm::orc::JITDylib*, >> llvm::DenseSet<llvm::orc::SymbolStringPtr, >> llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> >, >> llvm::DenseMapInfo<llvm::orc::JITDylib*>, >> llvm::detail::DenseMapPair<llvm::orc::JITDylib*, >> llvm::DenseSet<llvm::orc::SymbolStringPtr, >> llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> > > > const&)>) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2058 >> >> #54 0x00000001062dc4b0 in >> llvm::orc::ExecutionSession::lookup(std::__1::vector<std::__1::pair<llvm::orc::JITDylib*, >> llvm::orc::JITDylibLookupFlags>, >> std::__1::allocator<std::__1::pair<llvm::orc::JITDylib*, >> llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolLookupSet >> const&, llvm::orc::LookupKind, llvm::orc::SymbolState, >> std::__1::function<void (llvm::DenseMap<llvm::orc::JITDylib*, >> llvm::DenseSet<llvm::orc::SymbolStringPtr, >> llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> >, >> llvm::DenseMapInfo<llvm::orc::JITDylib*>, >> llvm::detail::DenseMapPair<llvm::orc::JITDylib*, >> llvm::DenseSet<llvm::orc::SymbolStringPtr, >> llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> > > > const&)>) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2095 >> >> #55 0x00000001062dc6f8 in >> llvm::orc::ExecutionSession::lookup(std::__1::vector<std::__1::pair<llvm::orc::JITDylib*, >> llvm::orc::JITDylibLookupFlags>, >> std::__1::allocator<std::__1::pair<llvm::orc::JITDylib*, >> llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolStringPtr) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2120 >> >> #56 0x0000000106392c40 in >> llvm::orc::LazyCallThroughManager::callThroughToSymbol(unsigned long long) >> at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/LazyReexports.cpp:54 >> >> #57 0x00000001063a07a8 in llvm::Error >> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >> long long)::operator()(unsigned long long) const at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/LazyReexports.h:120 >> >> #58 0x00000001063a0760 in decltype(std::__1::forward<llvm::Error >> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >> long long)&>(fp)(std::__1::forward<unsigned long long>(fp0))) >> std::__1::__invoke<llvm::Error >> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >> long long)&, unsigned long long>(llvm::Error >> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >> long long)&, unsigned long long&&) at >> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4425 >> >> #59 0x00000001063a06f4 in unsigned long long >> std::__1::__invoke_void_return_wrapper<unsigned long >> long>::__call<llvm::Error >> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >> long long)&, unsigned long long>(llvm::Error >> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >> long long)&, unsigned long long&&) at >> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:317 >> >> #60 0x00000001063a06a8 in std::__1::__function::__alloc_func<llvm::Error >> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >> long long), std::__1::allocator<llvm::Error >> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >> long long)>, unsigned long long (unsigned long long)>::operator()(unsigned >> long long&&) at >> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1533 >> >> #61 0x000000010639f038 in std::__1::__function::__func<llvm::Error >> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >> long long), std::__1::allocator<llvm::Error >> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >> long long)>, unsigned long long (unsigned long long)>::operator()(unsigned >> long long&&) at >> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1707 >> >> #62 0x0000000106349f94 in std::__1::__function::__value_func<unsigned >> long long (unsigned long long)>::operator()(unsigned long long&&) const at >> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1860 >> >> #63 0x0000000106349f30 in std::__1::function<unsigned long long >> (unsigned long long)>::operator()(unsigned long long) const at >> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2419 >> >> #64 0x0000000106349858 in >> llvm::orc::LocalTrampolinePool<llvm::orc::OrcAArch64>::reenter(void*, >> void*) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/IndirectionUtils.h:111 >> >> #65 0x0000000117634090 in 0x117634090 () >> >> #66 0x0000000106323a08 in llvm::orc::runAsMain(int (*)(int, char**), >> llvm::ArrayRef<std::__1::basic_string<char, std::__1::char_traits<char>, >> std::__1::allocator<char> > >, llvm::Optional<llvm::StringRef>) at >> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ExecutionUtils.cpp:45 >> >> >> >> _______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org >> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200601/d9e0c9a3/attachment-0001.html>
Lang Hames via llvm-dev
2020-Jun-02 16:07 UTC
[llvm-dev] Assertion triggered when running simple hello-world code on iOS device using ORC/LLLazyJIT
Hi Igor, The -debug-only option should be provided to your tool's main function, rather than to the JIT'd main. As long as you're calling: cl::ParseCommandLineOptions(argc, argv, "<tool name>"); in your tool's code that should handle the '-debug-only' option. Regards, Lang. On Mon, Jun 1, 2020 at 9:03 PM Igor Gomon <igomonv at gmail.com> wrote:> Hi Lang, > > Sure. Please find attached is the bitcode file along with the source cpp. > I also followed your suggestion and provided the '-debug-only=jitlink' > option to the orc::runAsMain() function call but I didn't see any > meaningful output produced other than: > > *Assertion failed: (Offset < Base.getSize() && "Symbol offset is outside > block"), function constructNamedDef, file > /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h, > line 366.* > > Thanks for your help! > > -- > Best Regards, > Igor > > On Mon, Jun 1, 2020 at 2:01 PM Lang Hames <lhames at gmail.com> wrote: > >> Hi Igor, >> >> Thanks for the walkthrough! This sounds like it might be a JITLink MachO >> parser bug. Are you able to share the module that causes the failure? It >> may also be interesting to run your tool with '-debug-only=jitlink' and >> capture the output. >> >> Regards, >> Lang. >> >> On Sun, May 31, 2020 at 2:08 PM Igor Gomon <igomonv at gmail.com> wrote: >> >>> Hello Lang, >>> >>> I was just wondering if you had a chance to look at my issue or maybe >>> have an idea what may have caused it. >>> Thanks! >>> >>> >>> — >>> Best Regards, >>> Igor Gomon >>> Sent from my iPad >>> >>> On May 25, 2020, at 5:48 PM, David Blaikie <dblaikie at gmail.com> wrote: >>> >>> >>> +Lang for ORC stuff >>> >>> On Mon, May 25, 2020 at 2:35 PM Igor Gomon via llvm-dev < >>> llvm-dev at lists.llvm.org> wrote: >>> >>>> Hello, >>>> >>>> I am trying to run this basic C++ hello-world code in my iOS app that >>>> has LLVM libraries linked in (the app runs on the actual device - iPad Pro, >>>> iOS 13.4.1). >>>> >>>> #include <iostream> >>>> int main (int argh, char *argv[]) { >>>> std::cout << "Hello World!" << std::endl; >>>> return 0; >>>> } >>>> >>>> So below is the break down of the steps that I do: >>>> First I compile this code to an instance of llvm::Module by using the >>>> logic borrowed from the lli tool. >>>> Once I have the Module instance I construct an instance of orc::LLLazyJIT >>>> (J), configure it (again closely following the logic in lli tool) >>>> to which I then add the module like this: >>>> >>>> // Add the main module. >>>> >>>> >>>> ExitOnErr(J->addLazyIRModule(orc::ThreadSafeModule(std::move(MainModule), >>>> TSCtx))); >>>> >>>> >>>> Finally the module is executed like this: >>>> >>>> // Run main. >>>> >>>> auto MainSym = ExitOnErr(J->lookup("main")); >>>> >>>> >>>> typedef int (*MainFnPtr)(int, char *[]); >>>> >>>> auto Result = orc::runAsMain( >>>> >>>> jitTargetAddressToFunction<MainFnPtr>(MainSym.getAddress()), Args, >>>> >>>> StringRef("lli")); >>>> >>>> >>>> The Xcode halts the execution when an assertion is triggered in llvm::jitlink::Symbol::constructNamedDef >>>> (the full call stack is below). >>>> >>>> The line that triggers the assertion is this: >>>> >>>> >>>> assert(Offset < Base.getSize() && "Symbol offset is outside block" >>>> ); >>>> >>>> >>>> because both Offset and Base.getSize() evaluate to 0). >>>> >>>> The data referred to by the Base block is "Hello World!". >>>> >>>> >>>> I don't understand why this assertion happens. Should the Base block >>>> size be > 0 ? >>>> >>>> I am relatively new to LLVM, I did read the documentation on OCR Design >>>> and Implementation - but still can't figure out what's going on. >>>> >>>> If there is any additional documentation I can read on running code >>>> using ORC/JIT APIs that would shed more light on the internals/ >>>> implementation? >>>> >>>> >>>> Any help would be greatly appreciated. >>>> >>>> Thank you. >>>> >>>> >>>> -- >>>> >>>> Best, >>>> >>>> Igor >>>> >>>> >>>> >>>> #4 0x0000000106696d70 in >>>> llvm::jitlink::Symbol::constructNamedDef(void*, llvm::jitlink::Block&, >>>> unsigned long long, llvm::StringRef, unsigned long long, >>>> llvm::jitlink::Linkage, llvm::jitlink::Scope, bool, bool) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:366 >>>> >>>> #5 0x0000000106691e8c in >>>> llvm::jitlink::LinkGraph::addDefinedSymbol(llvm::jitlink::Block&, unsigned >>>> long long, llvm::StringRef, unsigned long long, llvm::jitlink::Linkage, >>>> llvm::jitlink::Scope, bool, bool) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:897 >>>> >>>> #6 0x000000010668f654 in >>>> llvm::jitlink::MachOLinkGraphBuilder::graphifyRegularSymbols() at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachOLinkGraphBuilder.cpp:502 >>>> >>>> #7 0x000000010668d16c in >>>> llvm::jitlink::MachOLinkGraphBuilder::buildGraph() at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachOLinkGraphBuilder.cpp:36 >>>> >>>> #8 0x000000010666cd08 in >>>> llvm::jitlink::MachOJITLinker_arm64::buildGraph(llvm::MemoryBufferRef) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachO_arm64.cpp:493 >>>> >>>> #9 0x00000001066236bc in >>>> llvm::jitlink::JITLinkerBase::linkPhase1(std::__1::unique_ptr<llvm::jitlink::JITLinkerBase, >>>> std::__1::default_delete<llvm::jitlink::JITLinkerBase> >) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.cpp:28 >>>> >>>> #10 0x000000010665fc10 in void >>>> llvm::jitlink::JITLinker<llvm::jitlink::MachOJITLinker_arm64>::link<std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >>>> std::__1::default_delete<llvm::jitlink::JITLinkContext> >, >>>> llvm::jitlink::PassConfiguration>(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >>>> std::__1::default_delete<llvm::jitlink::JITLinkContext> >&&, >>>> llvm::jitlink::PassConfiguration&&) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.h:139 >>>> >>>> #11 0x000000010665f93c in >>>> llvm::jitlink::jitLink_MachO_arm64(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >>>> std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachO_arm64.cpp:685 >>>> >>>> #12 0x000000010665e604 in >>>> llvm::jitlink::jitLink_MachO(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >>>> std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachO.cpp:69 >>>> >>>> #13 0x0000000106616f58 in >>>> llvm::jitlink::jitLink(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >>>> std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLink.cpp:306 >>>> >>>> #14 0x00000001063db144 in >>>> llvm::orc::ObjectLinkingLayer::emit(llvm::orc::MaterializationResponsibility, >>>> std::__1::unique_ptr<llvm::MemoryBuffer, >>>> std::__1::default_delete<llvm::MemoryBuffer> >) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp:343 >>>> >>>> #15 0x00000001064044f4 in >>>> llvm::orc::ObjectTransformLayer::emit(llvm::orc::MaterializationResponsibility, >>>> std::__1::unique_ptr<llvm::MemoryBuffer, >>>> std::__1::default_delete<llvm::MemoryBuffer> >) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ObjectTransformLayer.cpp:35 >>>> >>>> #16 0x000000010638e9c8 in >>>> llvm::orc::IRCompileLayer::emit(llvm::orc::MaterializationResponsibility, >>>> llvm::orc::ThreadSafeModule) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/IRCompileLayer.cpp:35 >>>> >>>> #17 0x000000010638ff64 in >>>> llvm::orc::IRTransformLayer::emit(llvm::orc::MaterializationResponsibility, >>>> llvm::orc::ThreadSafeModule) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/IRTransformLayer.cpp:25 >>>> >>>> #18 0x00000001062b2b5c in >>>> llvm::orc::CompileOnDemandLayer::emitPartition(llvm::orc::MaterializationResponsibility, >>>> llvm::orc::ThreadSafeModule, std::__1::map<llvm::orc::SymbolStringPtr, >>>> llvm::GlobalValue*, std::__1::less<llvm::orc::SymbolStringPtr>, >>>> std::__1::allocator<std::__1::pair<llvm::orc::SymbolStringPtr const, >>>> llvm::GlobalValue*> > >) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/CompileOnDemandLayer.cpp:320 >>>> >>>> #19 0x00000001062b8470 in >>>> llvm::orc::PartitioningIRMaterializationUnit::materialize(llvm::orc::MaterializationResponsibility) >>>> at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/CompileOnDemandLayer.cpp:86 >>>> >>>> #20 0x00000001062e2844 in >>>> llvm::orc::MaterializationUnit::doMaterialize(llvm::orc::JITDylib&) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:563 >>>> >>>> #21 0x00000001062db744 in >>>> llvm::orc::ExecutionSession::materializeOnCurrentThread(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:1212 >>>> >>>> #22 0x00000001062eaf98 in decltype(std::__1::forward<void >>>> (*&)(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >>>> >)>(fp)(std::__1::forward<llvm::orc::JITDylib&>(fp0), >>>> std::__1::forward<std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> > >(fp0))) >>>> std::__1::__invoke<void (*&)(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >>>> llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> > >(void >>>> (*&)(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >>>> llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at >>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4425 >>>> >>>> #23 0x00000001062eaef8 in void >>>> std::__1::__invoke_void_return_wrapper<void>::__call<void >>>> (*&)(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >>>> llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> > >(void >>>> (*&)(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >>>> llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at >>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:348 >>>> >>>> #24 0x00000001062eae94 in std::__1::__function::__alloc_func<void >>>> (*)(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >>>> std::__1::allocator<void (*)(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >)>, void >>>> (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >>>> >)>::operator()(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at >>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1533 >>>> >>>> #25 0x00000001062e980c in std::__1::__function::__func<void >>>> (*)(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >>>> std::__1::allocator<void (*)(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >)>, void >>>> (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >>>> >)>::operator()(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at >>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1707 >>>> >>>> #26 0x00000001062e2314 in std::__1::__function::__value_func<void >>>> (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >>>> >)>::operator()(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) const at >>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1860 >>>> >>>> #27 0x00000001062e2198 in std::__1::function<void >>>> (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >>>> >)>::operator()(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >) const at >>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2419 >>>> >>>> #28 0x00000001062d76b4 in >>>> llvm::orc::ExecutionSession::dispatchMaterialization(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:1198 >>>> >>>> #29 0x00000001062d955c in >>>> llvm::orc::ExecutionSession::runOutstandingMUs() at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2161 >>>> >>>> #30 0x00000001062d623c in >>>> llvm::orc::ExecutionSession::lookup(llvm::orc::LookupKind, >>>> std::__1::vector<std::__1::pair<llvm::orc::JITDylib*, >>>> llvm::orc::JITDylibLookupFlags>, >>>> std::__1::allocator<std::__1::pair<llvm::orc::JITDylib*, >>>> llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolLookupSet, >>>> llvm::orc::SymbolState, llvm::unique_function<void >>>> (llvm::Expected<llvm::DenseMap<llvm::orc::SymbolStringPtr, >>>> llvm::JITEvaluatedSymbol, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr>, >>>> llvm::detail::DenseMapPair<llvm::orc::SymbolStringPtr, >>>> llvm::JITEvaluatedSymbol> > >)>, std::__1::function<void >>>> (llvm::DenseMap<llvm::orc::JITDylib*, >>>> llvm::DenseSet<llvm::orc::SymbolStringPtr, >>>> llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> >, >>>> llvm::DenseMapInfo<llvm::orc::JITDylib*>, >>>> llvm::detail::DenseMapPair<llvm::orc::JITDylib*, >>>> llvm::DenseSet<llvm::orc::SymbolStringPtr, >>>> llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> > > > const&)>) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2058 >>>> >>>> #31 0x00000001063e5128 in >>>> llvm::orc::ObjectLinkingLayerJITLinkContext::lookup(llvm::DenseMap<llvm::StringRef, >>>> llvm::jitlink::SymbolLookupFlags, llvm::DenseMapInfo<llvm::StringRef>, >>>> llvm::detail::DenseMapPair<llvm::StringRef, >>>> llvm::jitlink::SymbolLookupFlags> > const&, >>>> std::__1::unique_ptr<llvm::jitlink::JITLinkAsyncLookupContinuation, >>>> std::__1::default_delete<llvm::jitlink::JITLinkAsyncLookupContinuation> >) >>>> at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp:87 >>>> >>>> #32 0x0000000106623bac in >>>> llvm::jitlink::JITLinkerBase::linkPhase1(std::__1::unique_ptr<llvm::jitlink::JITLinkerBase, >>>> std::__1::default_delete<llvm::jitlink::JITLinkerBase> >) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.cpp:77 >>>> >>>> #33 0x000000010665fc10 in void >>>> llvm::jitlink::JITLinker<llvm::jitlink::MachOJITLinker_arm64>::link<std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >>>> std::__1::default_delete<llvm::jitlink::JITLinkContext> >, >>>> llvm::jitlink::PassConfiguration>(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >>>> std::__1::default_delete<llvm::jitlink::JITLinkContext> >&&, >>>> llvm::jitlink::PassConfiguration&&) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.h:139 >>>> >>>> #34 0x000000010665f93c in >>>> llvm::jitlink::jitLink_MachO_arm64(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >>>> std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachO_arm64.cpp:685 >>>> >>>> #35 0x000000010665e604 in >>>> llvm::jitlink::jitLink_MachO(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >>>> std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachO.cpp:69 >>>> >>>> #36 0x0000000106616f58 in >>>> llvm::jitlink::jitLink(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >>>> std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLink.cpp:306 >>>> >>>> #37 0x00000001063db144 in >>>> llvm::orc::ObjectLinkingLayer::emit(llvm::orc::MaterializationResponsibility, >>>> std::__1::unique_ptr<llvm::MemoryBuffer, >>>> std::__1::default_delete<llvm::MemoryBuffer> >) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp:343 >>>> >>>> #38 0x00000001064044f4 in >>>> llvm::orc::ObjectTransformLayer::emit(llvm::orc::MaterializationResponsibility, >>>> std::__1::unique_ptr<llvm::MemoryBuffer, >>>> std::__1::default_delete<llvm::MemoryBuffer> >) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ObjectTransformLayer.cpp:35 >>>> >>>> #39 0x000000010638e9c8 in >>>> llvm::orc::IRCompileLayer::emit(llvm::orc::MaterializationResponsibility, >>>> llvm::orc::ThreadSafeModule) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/IRCompileLayer.cpp:35 >>>> >>>> #40 0x000000010638ff64 in >>>> llvm::orc::IRTransformLayer::emit(llvm::orc::MaterializationResponsibility, >>>> llvm::orc::ThreadSafeModule) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/IRTransformLayer.cpp:25 >>>> >>>> #41 0x00000001062b2b5c in >>>> llvm::orc::CompileOnDemandLayer::emitPartition(llvm::orc::MaterializationResponsibility, >>>> llvm::orc::ThreadSafeModule, std::__1::map<llvm::orc::SymbolStringPtr, >>>> llvm::GlobalValue*, std::__1::less<llvm::orc::SymbolStringPtr>, >>>> std::__1::allocator<std::__1::pair<llvm::orc::SymbolStringPtr const, >>>> llvm::GlobalValue*> > >) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/CompileOnDemandLayer.cpp:320 >>>> >>>> #42 0x00000001062b8470 in >>>> llvm::orc::PartitioningIRMaterializationUnit::materialize(llvm::orc::MaterializationResponsibility) >>>> at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/CompileOnDemandLayer.cpp:86 >>>> >>>> #43 0x00000001062e2844 in >>>> llvm::orc::MaterializationUnit::doMaterialize(llvm::orc::JITDylib&) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:563 >>>> >>>> #44 0x00000001062db744 in >>>> llvm::orc::ExecutionSession::materializeOnCurrentThread(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:1212 >>>> >>>> #45 0x00000001062eaf98 in decltype(std::__1::forward<void >>>> (*&)(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >>>> >)>(fp)(std::__1::forward<llvm::orc::JITDylib&>(fp0), >>>> std::__1::forward<std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> > >(fp0))) >>>> std::__1::__invoke<void (*&)(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >>>> llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> > >(void >>>> (*&)(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >>>> llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at >>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4425 >>>> >>>> #46 0x00000001062eaef8 in void >>>> std::__1::__invoke_void_return_wrapper<void>::__call<void >>>> (*&)(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >>>> llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> > >(void >>>> (*&)(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >>>> llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at >>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:348 >>>> >>>> #47 0x00000001062eae94 in std::__1::__function::__alloc_func<void >>>> (*)(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >>>> std::__1::allocator<void (*)(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >)>, void >>>> (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >>>> >)>::operator()(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at >>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1533 >>>> >>>> #48 0x00000001062e980c in std::__1::__function::__func<void >>>> (*)(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >>>> std::__1::allocator<void (*)(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >)>, void >>>> (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >>>> >)>::operator()(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at >>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1707 >>>> >>>> #49 0x00000001062e2314 in std::__1::__function::__value_func<void >>>> (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >>>> >)>::operator()(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) const at >>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1860 >>>> >>>> #50 0x00000001062e2198 in std::__1::function<void >>>> (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >>>> >)>::operator()(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >) const at >>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2419 >>>> >>>> #51 0x00000001062d76b4 in >>>> llvm::orc::ExecutionSession::dispatchMaterialization(llvm::orc::JITDylib&, >>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:1198 >>>> >>>> #52 0x00000001062d955c in >>>> llvm::orc::ExecutionSession::runOutstandingMUs() at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2161 >>>> >>>> #53 0x00000001062d623c in >>>> llvm::orc::ExecutionSession::lookup(llvm::orc::LookupKind, >>>> std::__1::vector<std::__1::pair<llvm::orc::JITDylib*, >>>> llvm::orc::JITDylibLookupFlags>, >>>> std::__1::allocator<std::__1::pair<llvm::orc::JITDylib*, >>>> llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolLookupSet, >>>> llvm::orc::SymbolState, llvm::unique_function<void >>>> (llvm::Expected<llvm::DenseMap<llvm::orc::SymbolStringPtr, >>>> llvm::JITEvaluatedSymbol, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr>, >>>> llvm::detail::DenseMapPair<llvm::orc::SymbolStringPtr, >>>> llvm::JITEvaluatedSymbol> > >)>, std::__1::function<void >>>> (llvm::DenseMap<llvm::orc::JITDylib*, >>>> llvm::DenseSet<llvm::orc::SymbolStringPtr, >>>> llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> >, >>>> llvm::DenseMapInfo<llvm::orc::JITDylib*>, >>>> llvm::detail::DenseMapPair<llvm::orc::JITDylib*, >>>> llvm::DenseSet<llvm::orc::SymbolStringPtr, >>>> llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> > > > const&)>) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2058 >>>> >>>> #54 0x00000001062dc4b0 in >>>> llvm::orc::ExecutionSession::lookup(std::__1::vector<std::__1::pair<llvm::orc::JITDylib*, >>>> llvm::orc::JITDylibLookupFlags>, >>>> std::__1::allocator<std::__1::pair<llvm::orc::JITDylib*, >>>> llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolLookupSet >>>> const&, llvm::orc::LookupKind, llvm::orc::SymbolState, >>>> std::__1::function<void (llvm::DenseMap<llvm::orc::JITDylib*, >>>> llvm::DenseSet<llvm::orc::SymbolStringPtr, >>>> llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> >, >>>> llvm::DenseMapInfo<llvm::orc::JITDylib*>, >>>> llvm::detail::DenseMapPair<llvm::orc::JITDylib*, >>>> llvm::DenseSet<llvm::orc::SymbolStringPtr, >>>> llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> > > > const&)>) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2095 >>>> >>>> #55 0x00000001062dc6f8 in >>>> llvm::orc::ExecutionSession::lookup(std::__1::vector<std::__1::pair<llvm::orc::JITDylib*, >>>> llvm::orc::JITDylibLookupFlags>, >>>> std::__1::allocator<std::__1::pair<llvm::orc::JITDylib*, >>>> llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolStringPtr) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2120 >>>> >>>> #56 0x0000000106392c40 in >>>> llvm::orc::LazyCallThroughManager::callThroughToSymbol(unsigned long long) >>>> at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/LazyReexports.cpp:54 >>>> >>>> #57 0x00000001063a07a8 in llvm::Error >>>> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >>>> long long)::operator()(unsigned long long) const at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/LazyReexports.h:120 >>>> >>>> #58 0x00000001063a0760 in decltype(std::__1::forward<llvm::Error >>>> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >>>> long long)&>(fp)(std::__1::forward<unsigned long long>(fp0))) >>>> std::__1::__invoke<llvm::Error >>>> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >>>> long long)&, unsigned long long>(llvm::Error >>>> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >>>> long long)&, unsigned long long&&) at >>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4425 >>>> >>>> #59 0x00000001063a06f4 in unsigned long long >>>> std::__1::__invoke_void_return_wrapper<unsigned long >>>> long>::__call<llvm::Error >>>> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >>>> long long)&, unsigned long long>(llvm::Error >>>> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >>>> long long)&, unsigned long long&&) at >>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:317 >>>> >>>> #60 0x00000001063a06a8 in >>>> std::__1::__function::__alloc_func<llvm::Error >>>> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >>>> long long), std::__1::allocator<llvm::Error >>>> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >>>> long long)>, unsigned long long (unsigned long long)>::operator()(unsigned >>>> long long&&) at >>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1533 >>>> >>>> #61 0x000000010639f038 in std::__1::__function::__func<llvm::Error >>>> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >>>> long long), std::__1::allocator<llvm::Error >>>> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >>>> long long)>, unsigned long long (unsigned long long)>::operator()(unsigned >>>> long long&&) at >>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1707 >>>> >>>> #62 0x0000000106349f94 in std::__1::__function::__value_func<unsigned >>>> long long (unsigned long long)>::operator()(unsigned long long&&) const at >>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1860 >>>> >>>> #63 0x0000000106349f30 in std::__1::function<unsigned long long >>>> (unsigned long long)>::operator()(unsigned long long) const at >>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2419 >>>> >>>> #64 0x0000000106349858 in >>>> llvm::orc::LocalTrampolinePool<llvm::orc::OrcAArch64>::reenter(void*, >>>> void*) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/IndirectionUtils.h:111 >>>> >>>> #65 0x0000000117634090 in 0x117634090 () >>>> >>>> #66 0x0000000106323a08 in llvm::orc::runAsMain(int (*)(int, char**), >>>> llvm::ArrayRef<std::__1::basic_string<char, std::__1::char_traits<char>, >>>> std::__1::allocator<char> > >, llvm::Optional<llvm::StringRef>) at >>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ExecutionUtils.cpp:45 >>>> >>>> >>>> >>>> _______________________________________________ >>>> LLVM Developers mailing list >>>> llvm-dev at lists.llvm.org >>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >>>> >>>-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200602/3692cdae/attachment-0001.html>
Igor Gomon via llvm-dev
2020-Jun-06 16:06 UTC
[llvm-dev] Assertion triggered when running simple hello-world code on iOS device using ORC/LLLazyJIT
Hi Lang, Please see below is the trace. -- Thanks, Igor *2020-06-06 12:05:21.016705-0400 CppDevProCompiler[6613:3000073] Running...* *jitLink_MachO: magic = 0xfeedfacf, identifier "llvm-link.submodule-jitted-objectbuffer"* *jitLink_MachO: cputype = 0x0100000c, cpusubtype = 0x00000000* *Creating normalized sections...* * __text: 0x0000000000000000 -- 0x0000000000000064, align: 4, index: 0* * __compact_unwind: 0x0000000000000068 -- 0x0000000000000088, align: 8, index: 1* *Creating normalized symbols...* * ltmp0: value = 0x0000000000000000, type = 0x0e, desc = 0x0000, sect = 0* * ltmp1: value = 0x0000000000000068, type = 0x0e, desc = 0x0000, sect = 1* * _main: value = 0x0000000000000000, type = 0x0f, desc = 0x0000, sect = 0* * __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRS3_S4_E: value 0x0000000000000000, type = 0x01, desc = 0x0000, sect = none* * __ZNSt3__14coutE: value = 0x0000000000000000, type = 0x01, desc 0x0000, sect = none* * __ZNSt3__14endlIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_: value = 0x0000000000000000, type = 0x01, desc = 0x0000, sect = none* * __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc: value = 0x0000000000000000, type = 0x01, desc = 0x0000, sect = none* * ___orc_lcl..str.0: value = 0x0000000000000000, type = 0x01, desc 0x0000, sect = none* *Creating graph symbols...* * Processing section __text...* * Creating block for 0x0000000000000000 -- 0x0000000000000064: __text + 0x0000000000000000 with 2 symbol(s)...* * 0x0000000000000000 -- 0x0000000000000064: _main* * 0x0000000000000000 -- 0x0000000000000064: ltmp0 [non-canonical]* * Processing section __compact_unwind...* * Creating block for 0x0000000000000068 -- 0x0000000000000088: __compact_unwind + 0x0000000000000000 with 1 symbol(s)...* * 0x0000000000000068 -- 0x0000000000000088: ltmp1* *Processing Branch26 relocation at 0x000000000000004c* *edge at 0x000000000000004c: 0x0000000000000000 + 76 -- Branch26 -> <__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRS3_S4_E: flags SD-, size = 0x00000000, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* *Processing Branch26 relocation at 0x0000000000000044* *edge at 0x0000000000000044: 0x0000000000000000 + 68 -- Branch26 -> <__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc: flags = SD-, size = 0x00000000, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* *Processing PageOffset12 relocation at 0x0000000000000024* *edge at 0x0000000000000024: 0x0000000000000000 + 36 -- PageOffset12 -> <__ZNSt3__14endlIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_: flags = SD-, size = 0x00000000, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* *Processing Page21 relocation at 0x0000000000000020* *edge at 0x0000000000000020: 0x0000000000000000 + 32 -- Page21 -> <__ZNSt3__14endlIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_: flags = SD-, size = 0x00000000, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* *Processing PageOffset12 relocation at 0x000000000000001c* *edge at 0x000000000000001c: 0x0000000000000000 + 28 -- PageOffset12 -> <___orc_lcl..str.0: flags = SD-, size = 0x00000000, addr 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* *Processing Page21 relocation at 0x0000000000000018* *edge at 0x0000000000000018: 0x0000000000000000 + 24 -- Page21 -> <___orc_lcl..str.0: flags = SD-, size = 0x00000000, addr 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* *Processing GOTPageOffset12 relocation at 0x0000000000000014* *edge at 0x0000000000000014: 0x0000000000000000 + 20 -- GOTPageOffset12 -> <__ZNSt3__14coutE: flags = SD-, size = 0x00000000, addr 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* *Processing GOTPage21 relocation at 0x0000000000000010* *edge at 0x0000000000000010: 0x0000000000000000 + 16 -- GOTPage21 -> <__ZNSt3__14coutE: flags = SD-, size = 0x00000000, addr 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* *Processing Pointer64Anon relocation at 0x0000000000000068* *edge at 0x0000000000000068: 0x0000000000000068 + 0 -- Pointer64Anon -> <_main: flags = SD-, size = 0x00000064, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000 __text)> + 0* *Link graph "llvm-link.submodule-jitted-objectbuffer" pre-pruning:* *Symbols:* * 0x0000000000000000: <_main: flags = SD+, size = 0x00000064, addr 0x0000000000000000 (0x0000000000000000 + 0x00000000 __text)>* * edge at 0x000000000000004c: 0x0000000000000000 + 76 -- Branch26 -> <__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRS3_S4_E: flags SD-, size = 0x00000000, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* * edge at 0x0000000000000044: 0x0000000000000000 + 68 -- Branch26 -> <__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc: flags = SD-, size = 0x00000000, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* * edge at 0x0000000000000024: 0x0000000000000000 + 36 -- PageOffset12 -> <__ZNSt3__14endlIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_: flags = SD-, size = 0x00000000, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* * edge at 0x0000000000000020: 0x0000000000000000 + 32 -- Page21 -> <__ZNSt3__14endlIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_: flags = SD-, size = 0x00000000, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* * edge at 0x000000000000001c: 0x0000000000000000 + 28 -- PageOffset12 -> <___orc_lcl..str.0: flags = SD-, size = 0x00000000, addr 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* * edge at 0x0000000000000018: 0x0000000000000000 + 24 -- Page21 -> <___orc_lcl..str.0: flags = SD-, size = 0x00000000, addr 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* * edge at 0x0000000000000014: 0x0000000000000000 + 20 -- GOTPageOffset12 -> <__ZNSt3__14coutE: flags = SD-, size = 0x00000000, addr 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* * edge at 0x0000000000000010: 0x0000000000000000 + 16 -- GOTPage21 -> <__ZNSt3__14coutE: flags = SD-, size = 0x00000000, addr 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* * 0x0000000000000000: <ltmp0: flags = SL-, size = 0x00000064, addr 0x0000000000000000 (0x0000000000000000 + 0x00000000 __text)>* * edge at 0x000000000000004c: 0x0000000000000000 + 76 -- Branch26 -> <__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRS3_S4_E: flags SD-, size = 0x00000000, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* * edge at 0x0000000000000044: 0x0000000000000000 + 68 -- Branch26 -> <__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc: flags = SD-, size = 0x00000000, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* * edge at 0x0000000000000024: 0x0000000000000000 + 36 -- PageOffset12 -> <__ZNSt3__14endlIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_: flags = SD-, size = 0x00000000, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* * edge at 0x0000000000000020: 0x0000000000000000 + 32 -- Page21 -> <__ZNSt3__14endlIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_: flags = SD-, size = 0x00000000, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* * edge at 0x000000000000001c: 0x0000000000000000 + 28 -- PageOffset12 -> <___orc_lcl..str.0: flags = SD-, size = 0x00000000, addr 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* * edge at 0x0000000000000018: 0x0000000000000000 + 24 -- Page21 -> <___orc_lcl..str.0: flags = SD-, size = 0x00000000, addr 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* * edge at 0x0000000000000014: 0x0000000000000000 + 20 -- GOTPageOffset12 -> <__ZNSt3__14coutE: flags = SD-, size = 0x00000000, addr 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* * edge at 0x0000000000000010: 0x0000000000000000 + 16 -- GOTPage21 -> <__ZNSt3__14coutE: flags = SD-, size = 0x00000000, addr 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* * 0x0000000000000068: <ltmp1: flags = SL-, size = 0x00000020, addr 0x0000000000000068 (0x0000000000000068 + 0x00000000 __compact_unwind)>* * edge at 0x0000000000000068: 0x0000000000000068 + 0 -- Pointer64Anon -> <_main: flags = SD+, size = 0x00000064, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000 __text)> + 0* *Absolute symbols:* *External symbols:* * 0x0000000000000000: <__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc: flags = SD-, size = 0x00000000, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000)>* * 0x0000000000000000: <__ZNSt3__14coutE: flags = SD-, size = 0x00000000, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000)>* * 0x0000000000000000: <___orc_lcl..str.0: flags = SD-, size = 0x00000000, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000)>* * 0x0000000000000000: <__ZNSt3__14endlIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_: flags = SD-, size = 0x00000000, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000)>* * 0x0000000000000000: <__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRS3_S4_E: flags SD-, size = 0x00000000, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000)>* *Dead-stripping symbols:* * <ltmp0: flags = SL-, size = 0x00000064, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000 __text)>...* * <ltmp1: flags = SL-, size = 0x00000020, addr = 0x0000000000000068 (0x0000000000000068 + 0x00000000 __compact_unwind)>...* *Dead-stripping blocks:* * 0x0000000000000068 -- 0x0000000000000088: content, align = 8, align-ofs = 0, section = __compact_unwind...* *Link graph "llvm-link.submodule-jitted-objectbuffer" post-pruning:* *Symbols:* * 0x0000000000000000: <_main: flags = SD+, size = 0x00000064, addr 0x0000000000000000 (0x0000000000000000 + 0x00000000 __text)>* * edge at 0x000000000000004c: 0x0000000000000000 + 76 -- Branch26 -> <__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRS3_S4_E: flags SD-, size = 0x00000000, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* * edge at 0x0000000000000044: 0x0000000000000000 + 68 -- Branch26 -> <__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc: flags = SD-, size = 0x00000000, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* * edge at 0x0000000000000024: 0x0000000000000000 + 36 -- PageOffset12 -> <__ZNSt3__14endlIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_: flags = SD-, size = 0x00000000, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* * edge at 0x0000000000000020: 0x0000000000000000 + 32 -- Page21 -> <__ZNSt3__14endlIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_: flags = SD-, size = 0x00000000, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* * edge at 0x000000000000001c: 0x0000000000000000 + 28 -- PageOffset12 -> <___orc_lcl..str.0: flags = SD-, size = 0x00000000, addr 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* * edge at 0x0000000000000018: 0x0000000000000000 + 24 -- Page21 -> <___orc_lcl..str.0: flags = SD-, size = 0x00000000, addr 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* * edge at 0x0000000000000014: 0x0000000000000000 + 20 -- GOTPageOffset12 -> <__ZNSt3__14coutE: flags = SD-, size = 0x00000000, addr 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* * edge at 0x0000000000000010: 0x0000000000000000 + 16 -- GOTPage21 -> <__ZNSt3__14coutE: flags = SD-, size = 0x00000000, addr 0x0000000000000000 (0x0000000000000000 + 0x00000000)> + 0* *Absolute symbols:* *External symbols:* * 0x0000000000000000: <__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc: flags = SD-, size = 0x00000000, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000)>* * 0x0000000000000000: <__ZNSt3__14coutE: flags = SD-, size = 0x00000000, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000)>* * 0x0000000000000000: <___orc_lcl..str.0: flags = SD-, size = 0x00000000, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000)>* * 0x0000000000000000: <__ZNSt3__14endlIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_: flags = SD-, size = 0x00000000, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000)>* * 0x0000000000000000: <__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRS3_S4_E: flags SD-, size = 0x00000000, addr = 0x0000000000000000 (0x0000000000000000 + 0x00000000)>* *Segment ordering:* * Segment R-X:* * content block:* * 0x0000000000000000 -- 0x0000000000000064: content, align = 4, align-ofs = 0, section = __text* * 0x0000000000000000 -- 0x0000000000000008: content, align = 1, align-ofs = 0, section = $__STUBS* * 0x0000000000000000 -- 0x0000000000000008: content, align = 1, align-ofs = 0, section = $__STUBS* * zero-fill block:* * Segment R--:* * content block:* * 0x0000000000000000 -- 0x0000000000000008: content, align = 8, align-ofs = 0, section = $__GOT* * 0x0000000000000000 -- 0x0000000000000008: content, align = 8, align-ofs = 0, section = $__GOT* * 0x0000000000000000 -- 0x0000000000000008: content, align = 8, align-ofs = 0, section = $__GOT* * zero-fill block:* *JIT linker requesting: { R-X: alignment = 4, content size = 116, zero-fill size = 0; R--: alignment = 8, content size = 24, zero-fill size = 0 }* *JIT linker got working memory:* * R-X: 0x1235dc000* * R--: 0x1235e0000* *jitLink_MachO: magic = 0xfeedfacf, identifier "llvm-link.submodule-jitted-objectbuffer"* *jitLink_MachO: cputype = 0x0100000c, cpusubtype = 0x00000000* *Creating normalized sections...* * __text: 0x0000000000000000 -- 0x0000000000000000, align: 1, index: 0* * __const: 0x0000000000000000 -- 0x000000000000000d, align: 1, index: 1* *Creating normalized symbols...* * ltmp0: value = 0x0000000000000000, type = 0x0e, desc = 0x0000, sect = 0* * ltmp1: value = 0x0000000000000000, type = 0x0e, desc = 0x0000, sect = 1* * ___orc_lcl..str.0: value = 0x0000000000000000, type = 0x1f, desc 0x0000, sect = 1* *Creating graph symbols...* * Processing section __text...* * Creating block for 0x0000000000000000 -- 0x0000000000000000: __text + 0x0000000000000000 with 1 symbol(s)...* * 0x0000000000000000 -- 0x0000000000000000: ltmp0* *Assertion failed: (Offset < Base.getSize() && "Symbol offset is outside block"), function constructNamedDef, file /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h, line 366.* On Tue, Jun 2, 2020 at 12:07 PM Lang Hames <lhames at gmail.com> wrote:> Hi Igor, > > The -debug-only option should be provided to your tool's main function, > rather than to the JIT'd main. As long as you're calling: > > cl::ParseCommandLineOptions(argc, argv, "<tool name>"); > > in your tool's code that should handle the '-debug-only' option. > > Regards, > Lang. > > On Mon, Jun 1, 2020 at 9:03 PM Igor Gomon <igomonv at gmail.com> wrote: > >> Hi Lang, >> >> Sure. Please find attached is the bitcode file along with the source cpp. >> I also followed your suggestion and provided the '-debug-only=jitlink' >> option to the orc::runAsMain() function call but I didn't see any >> meaningful output produced other than: >> >> *Assertion failed: (Offset < Base.getSize() && "Symbol offset is outside >> block"), function constructNamedDef, file >> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h, >> line 366.* >> >> Thanks for your help! >> >> -- >> Best Regards, >> Igor >> >> On Mon, Jun 1, 2020 at 2:01 PM Lang Hames <lhames at gmail.com> wrote: >> >>> Hi Igor, >>> >>> Thanks for the walkthrough! This sounds like it might be a JITLink MachO >>> parser bug. Are you able to share the module that causes the failure? It >>> may also be interesting to run your tool with '-debug-only=jitlink' and >>> capture the output. >>> >>> Regards, >>> Lang. >>> >>> On Sun, May 31, 2020 at 2:08 PM Igor Gomon <igomonv at gmail.com> wrote: >>> >>>> Hello Lang, >>>> >>>> I was just wondering if you had a chance to look at my issue or maybe >>>> have an idea what may have caused it. >>>> Thanks! >>>> >>>> >>>> — >>>> Best Regards, >>>> Igor Gomon >>>> Sent from my iPad >>>> >>>> On May 25, 2020, at 5:48 PM, David Blaikie <dblaikie at gmail.com> wrote: >>>> >>>> >>>> +Lang for ORC stuff >>>> >>>> On Mon, May 25, 2020 at 2:35 PM Igor Gomon via llvm-dev < >>>> llvm-dev at lists.llvm.org> wrote: >>>> >>>>> Hello, >>>>> >>>>> I am trying to run this basic C++ hello-world code in my iOS app that >>>>> has LLVM libraries linked in (the app runs on the actual device - iPad Pro, >>>>> iOS 13.4.1). >>>>> >>>>> #include <iostream> >>>>> int main (int argh, char *argv[]) { >>>>> std::cout << "Hello World!" << std::endl; >>>>> return 0; >>>>> } >>>>> >>>>> So below is the break down of the steps that I do: >>>>> First I compile this code to an instance of llvm::Module by using the >>>>> logic borrowed from the lli tool. >>>>> Once I have the Module instance I construct an instance of orc::LLLazyJIT >>>>> (J), configure it (again closely following the logic in lli tool) >>>>> to which I then add the module like this: >>>>> >>>>> // Add the main module. >>>>> >>>>> >>>>> ExitOnErr(J->addLazyIRModule(orc::ThreadSafeModule(std::move(MainModule), >>>>> TSCtx))); >>>>> >>>>> >>>>> Finally the module is executed like this: >>>>> >>>>> // Run main. >>>>> >>>>> auto MainSym = ExitOnErr(J->lookup("main")); >>>>> >>>>> >>>>> typedef int (*MainFnPtr)(int, char *[]); >>>>> >>>>> auto Result = orc::runAsMain( >>>>> >>>>> jitTargetAddressToFunction<MainFnPtr>(MainSym.getAddress()), Args, >>>>> >>>>> StringRef("lli")); >>>>> >>>>> >>>>> The Xcode halts the execution when an assertion is triggered in llvm::jitlink::Symbol::constructNamedDef >>>>> (the full call stack is below). >>>>> >>>>> The line that triggers the assertion is this: >>>>> >>>>> >>>>> assert(Offset < Base.getSize() && "Symbol offset is outside block" >>>>> ); >>>>> >>>>> >>>>> because both Offset and Base.getSize() evaluate to 0). >>>>> >>>>> The data referred to by the Base block is "Hello World!". >>>>> >>>>> >>>>> I don't understand why this assertion happens. Should the Base block >>>>> size be > 0 ? >>>>> >>>>> I am relatively new to LLVM, I did read the documentation on OCR >>>>> Design and Implementation - but still can't figure out what's going on. >>>>> >>>>> If there is any additional documentation I can read on running code >>>>> using ORC/JIT APIs that would shed more light on the internals/ >>>>> implementation? >>>>> >>>>> >>>>> Any help would be greatly appreciated. >>>>> >>>>> Thank you. >>>>> >>>>> >>>>> -- >>>>> >>>>> Best, >>>>> >>>>> Igor >>>>> >>>>> >>>>> >>>>> #4 0x0000000106696d70 in >>>>> llvm::jitlink::Symbol::constructNamedDef(void*, llvm::jitlink::Block&, >>>>> unsigned long long, llvm::StringRef, unsigned long long, >>>>> llvm::jitlink::Linkage, llvm::jitlink::Scope, bool, bool) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:366 >>>>> >>>>> #5 0x0000000106691e8c in >>>>> llvm::jitlink::LinkGraph::addDefinedSymbol(llvm::jitlink::Block&, unsigned >>>>> long long, llvm::StringRef, unsigned long long, llvm::jitlink::Linkage, >>>>> llvm::jitlink::Scope, bool, bool) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h:897 >>>>> >>>>> #6 0x000000010668f654 in >>>>> llvm::jitlink::MachOLinkGraphBuilder::graphifyRegularSymbols() at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachOLinkGraphBuilder.cpp:502 >>>>> >>>>> #7 0x000000010668d16c in >>>>> llvm::jitlink::MachOLinkGraphBuilder::buildGraph() at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachOLinkGraphBuilder.cpp:36 >>>>> >>>>> #8 0x000000010666cd08 in >>>>> llvm::jitlink::MachOJITLinker_arm64::buildGraph(llvm::MemoryBufferRef) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachO_arm64.cpp:493 >>>>> >>>>> #9 0x00000001066236bc in >>>>> llvm::jitlink::JITLinkerBase::linkPhase1(std::__1::unique_ptr<llvm::jitlink::JITLinkerBase, >>>>> std::__1::default_delete<llvm::jitlink::JITLinkerBase> >) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.cpp:28 >>>>> >>>>> #10 0x000000010665fc10 in void >>>>> llvm::jitlink::JITLinker<llvm::jitlink::MachOJITLinker_arm64>::link<std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >>>>> std::__1::default_delete<llvm::jitlink::JITLinkContext> >, >>>>> llvm::jitlink::PassConfiguration>(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >>>>> std::__1::default_delete<llvm::jitlink::JITLinkContext> >&&, >>>>> llvm::jitlink::PassConfiguration&&) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.h:139 >>>>> >>>>> #11 0x000000010665f93c in >>>>> llvm::jitlink::jitLink_MachO_arm64(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >>>>> std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachO_arm64.cpp:685 >>>>> >>>>> #12 0x000000010665e604 in >>>>> llvm::jitlink::jitLink_MachO(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >>>>> std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachO.cpp:69 >>>>> >>>>> #13 0x0000000106616f58 in >>>>> llvm::jitlink::jitLink(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >>>>> std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLink.cpp:306 >>>>> >>>>> #14 0x00000001063db144 in >>>>> llvm::orc::ObjectLinkingLayer::emit(llvm::orc::MaterializationResponsibility, >>>>> std::__1::unique_ptr<llvm::MemoryBuffer, >>>>> std::__1::default_delete<llvm::MemoryBuffer> >) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp:343 >>>>> >>>>> #15 0x00000001064044f4 in >>>>> llvm::orc::ObjectTransformLayer::emit(llvm::orc::MaterializationResponsibility, >>>>> std::__1::unique_ptr<llvm::MemoryBuffer, >>>>> std::__1::default_delete<llvm::MemoryBuffer> >) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ObjectTransformLayer.cpp:35 >>>>> >>>>> #16 0x000000010638e9c8 in >>>>> llvm::orc::IRCompileLayer::emit(llvm::orc::MaterializationResponsibility, >>>>> llvm::orc::ThreadSafeModule) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/IRCompileLayer.cpp:35 >>>>> >>>>> #17 0x000000010638ff64 in >>>>> llvm::orc::IRTransformLayer::emit(llvm::orc::MaterializationResponsibility, >>>>> llvm::orc::ThreadSafeModule) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/IRTransformLayer.cpp:25 >>>>> >>>>> #18 0x00000001062b2b5c in >>>>> llvm::orc::CompileOnDemandLayer::emitPartition(llvm::orc::MaterializationResponsibility, >>>>> llvm::orc::ThreadSafeModule, std::__1::map<llvm::orc::SymbolStringPtr, >>>>> llvm::GlobalValue*, std::__1::less<llvm::orc::SymbolStringPtr>, >>>>> std::__1::allocator<std::__1::pair<llvm::orc::SymbolStringPtr const, >>>>> llvm::GlobalValue*> > >) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/CompileOnDemandLayer.cpp:320 >>>>> >>>>> #19 0x00000001062b8470 in >>>>> llvm::orc::PartitioningIRMaterializationUnit::materialize(llvm::orc::MaterializationResponsibility) >>>>> at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/CompileOnDemandLayer.cpp:86 >>>>> >>>>> #20 0x00000001062e2844 in >>>>> llvm::orc::MaterializationUnit::doMaterialize(llvm::orc::JITDylib&) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:563 >>>>> >>>>> #21 0x00000001062db744 in >>>>> llvm::orc::ExecutionSession::materializeOnCurrentThread(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:1212 >>>>> >>>>> #22 0x00000001062eaf98 in decltype(std::__1::forward<void >>>>> (*&)(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >>>>> >)>(fp)(std::__1::forward<llvm::orc::JITDylib&>(fp0), >>>>> std::__1::forward<std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> > >(fp0))) >>>>> std::__1::__invoke<void (*&)(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >>>>> llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> > >(void >>>>> (*&)(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >>>>> llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at >>>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4425 >>>>> >>>>> #23 0x00000001062eaef8 in void >>>>> std::__1::__invoke_void_return_wrapper<void>::__call<void >>>>> (*&)(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >>>>> llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> > >(void >>>>> (*&)(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >>>>> llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at >>>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:348 >>>>> >>>>> #24 0x00000001062eae94 in std::__1::__function::__alloc_func<void >>>>> (*)(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >>>>> std::__1::allocator<void (*)(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >)>, void >>>>> (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >>>>> >)>::operator()(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at >>>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1533 >>>>> >>>>> #25 0x00000001062e980c in std::__1::__function::__func<void >>>>> (*)(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >>>>> std::__1::allocator<void (*)(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >)>, void >>>>> (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >>>>> >)>::operator()(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at >>>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1707 >>>>> >>>>> #26 0x00000001062e2314 in std::__1::__function::__value_func<void >>>>> (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >>>>> >)>::operator()(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) const at >>>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1860 >>>>> >>>>> #27 0x00000001062e2198 in std::__1::function<void >>>>> (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >>>>> >)>::operator()(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >) const at >>>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2419 >>>>> >>>>> #28 0x00000001062d76b4 in >>>>> llvm::orc::ExecutionSession::dispatchMaterialization(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:1198 >>>>> >>>>> #29 0x00000001062d955c in >>>>> llvm::orc::ExecutionSession::runOutstandingMUs() at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2161 >>>>> >>>>> #30 0x00000001062d623c in >>>>> llvm::orc::ExecutionSession::lookup(llvm::orc::LookupKind, >>>>> std::__1::vector<std::__1::pair<llvm::orc::JITDylib*, >>>>> llvm::orc::JITDylibLookupFlags>, >>>>> std::__1::allocator<std::__1::pair<llvm::orc::JITDylib*, >>>>> llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolLookupSet, >>>>> llvm::orc::SymbolState, llvm::unique_function<void >>>>> (llvm::Expected<llvm::DenseMap<llvm::orc::SymbolStringPtr, >>>>> llvm::JITEvaluatedSymbol, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr>, >>>>> llvm::detail::DenseMapPair<llvm::orc::SymbolStringPtr, >>>>> llvm::JITEvaluatedSymbol> > >)>, std::__1::function<void >>>>> (llvm::DenseMap<llvm::orc::JITDylib*, >>>>> llvm::DenseSet<llvm::orc::SymbolStringPtr, >>>>> llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> >, >>>>> llvm::DenseMapInfo<llvm::orc::JITDylib*>, >>>>> llvm::detail::DenseMapPair<llvm::orc::JITDylib*, >>>>> llvm::DenseSet<llvm::orc::SymbolStringPtr, >>>>> llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> > > > const&)>) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2058 >>>>> >>>>> #31 0x00000001063e5128 in >>>>> llvm::orc::ObjectLinkingLayerJITLinkContext::lookup(llvm::DenseMap<llvm::StringRef, >>>>> llvm::jitlink::SymbolLookupFlags, llvm::DenseMapInfo<llvm::StringRef>, >>>>> llvm::detail::DenseMapPair<llvm::StringRef, >>>>> llvm::jitlink::SymbolLookupFlags> > const&, >>>>> std::__1::unique_ptr<llvm::jitlink::JITLinkAsyncLookupContinuation, >>>>> std::__1::default_delete<llvm::jitlink::JITLinkAsyncLookupContinuation> >) >>>>> at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp:87 >>>>> >>>>> #32 0x0000000106623bac in >>>>> llvm::jitlink::JITLinkerBase::linkPhase1(std::__1::unique_ptr<llvm::jitlink::JITLinkerBase, >>>>> std::__1::default_delete<llvm::jitlink::JITLinkerBase> >) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.cpp:77 >>>>> >>>>> #33 0x000000010665fc10 in void >>>>> llvm::jitlink::JITLinker<llvm::jitlink::MachOJITLinker_arm64>::link<std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >>>>> std::__1::default_delete<llvm::jitlink::JITLinkContext> >, >>>>> llvm::jitlink::PassConfiguration>(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >>>>> std::__1::default_delete<llvm::jitlink::JITLinkContext> >&&, >>>>> llvm::jitlink::PassConfiguration&&) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.h:139 >>>>> >>>>> #34 0x000000010665f93c in >>>>> llvm::jitlink::jitLink_MachO_arm64(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >>>>> std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachO_arm64.cpp:685 >>>>> >>>>> #35 0x000000010665e604 in >>>>> llvm::jitlink::jitLink_MachO(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >>>>> std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/MachO.cpp:69 >>>>> >>>>> #36 0x0000000106616f58 in >>>>> llvm::jitlink::jitLink(std::__1::unique_ptr<llvm::jitlink::JITLinkContext, >>>>> std::__1::default_delete<llvm::jitlink::JITLinkContext> >) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/JITLink/JITLink.cpp:306 >>>>> >>>>> #37 0x00000001063db144 in >>>>> llvm::orc::ObjectLinkingLayer::emit(llvm::orc::MaterializationResponsibility, >>>>> std::__1::unique_ptr<llvm::MemoryBuffer, >>>>> std::__1::default_delete<llvm::MemoryBuffer> >) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp:343 >>>>> >>>>> #38 0x00000001064044f4 in >>>>> llvm::orc::ObjectTransformLayer::emit(llvm::orc::MaterializationResponsibility, >>>>> std::__1::unique_ptr<llvm::MemoryBuffer, >>>>> std::__1::default_delete<llvm::MemoryBuffer> >) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ObjectTransformLayer.cpp:35 >>>>> >>>>> #39 0x000000010638e9c8 in >>>>> llvm::orc::IRCompileLayer::emit(llvm::orc::MaterializationResponsibility, >>>>> llvm::orc::ThreadSafeModule) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/IRCompileLayer.cpp:35 >>>>> >>>>> #40 0x000000010638ff64 in >>>>> llvm::orc::IRTransformLayer::emit(llvm::orc::MaterializationResponsibility, >>>>> llvm::orc::ThreadSafeModule) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/IRTransformLayer.cpp:25 >>>>> >>>>> #41 0x00000001062b2b5c in >>>>> llvm::orc::CompileOnDemandLayer::emitPartition(llvm::orc::MaterializationResponsibility, >>>>> llvm::orc::ThreadSafeModule, std::__1::map<llvm::orc::SymbolStringPtr, >>>>> llvm::GlobalValue*, std::__1::less<llvm::orc::SymbolStringPtr>, >>>>> std::__1::allocator<std::__1::pair<llvm::orc::SymbolStringPtr const, >>>>> llvm::GlobalValue*> > >) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/CompileOnDemandLayer.cpp:320 >>>>> >>>>> #42 0x00000001062b8470 in >>>>> llvm::orc::PartitioningIRMaterializationUnit::materialize(llvm::orc::MaterializationResponsibility) >>>>> at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/CompileOnDemandLayer.cpp:86 >>>>> >>>>> #43 0x00000001062e2844 in >>>>> llvm::orc::MaterializationUnit::doMaterialize(llvm::orc::JITDylib&) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:563 >>>>> >>>>> #44 0x00000001062db744 in >>>>> llvm::orc::ExecutionSession::materializeOnCurrentThread(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:1212 >>>>> >>>>> #45 0x00000001062eaf98 in decltype(std::__1::forward<void >>>>> (*&)(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >>>>> >)>(fp)(std::__1::forward<llvm::orc::JITDylib&>(fp0), >>>>> std::__1::forward<std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> > >(fp0))) >>>>> std::__1::__invoke<void (*&)(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >>>>> llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> > >(void >>>>> (*&)(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >>>>> llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at >>>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4425 >>>>> >>>>> #46 0x00000001062eaef8 in void >>>>> std::__1::__invoke_void_return_wrapper<void>::__call<void >>>>> (*&)(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >>>>> llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> > >(void >>>>> (*&)(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >>>>> llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at >>>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:348 >>>>> >>>>> #47 0x00000001062eae94 in std::__1::__function::__alloc_func<void >>>>> (*)(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >>>>> std::__1::allocator<void (*)(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >)>, void >>>>> (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >>>>> >)>::operator()(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at >>>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1533 >>>>> >>>>> #48 0x00000001062e980c in std::__1::__function::__func<void >>>>> (*)(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >), >>>>> std::__1::allocator<void (*)(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >)>, void >>>>> (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >>>>> >)>::operator()(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) at >>>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1707 >>>>> >>>>> #49 0x00000001062e2314 in std::__1::__function::__value_func<void >>>>> (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >>>>> >)>::operator()(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >&&) const at >>>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1860 >>>>> >>>>> #50 0x00000001062e2198 in std::__1::function<void >>>>> (llvm::orc::JITDylib&, std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >>>>> >)>::operator()(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >) const at >>>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2419 >>>>> >>>>> #51 0x00000001062d76b4 in >>>>> llvm::orc::ExecutionSession::dispatchMaterialization(llvm::orc::JITDylib&, >>>>> std::__1::unique_ptr<llvm::orc::MaterializationUnit, >>>>> std::__1::default_delete<llvm::orc::MaterializationUnit> >) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/Core.h:1198 >>>>> >>>>> #52 0x00000001062d955c in >>>>> llvm::orc::ExecutionSession::runOutstandingMUs() at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2161 >>>>> >>>>> #53 0x00000001062d623c in >>>>> llvm::orc::ExecutionSession::lookup(llvm::orc::LookupKind, >>>>> std::__1::vector<std::__1::pair<llvm::orc::JITDylib*, >>>>> llvm::orc::JITDylibLookupFlags>, >>>>> std::__1::allocator<std::__1::pair<llvm::orc::JITDylib*, >>>>> llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolLookupSet, >>>>> llvm::orc::SymbolState, llvm::unique_function<void >>>>> (llvm::Expected<llvm::DenseMap<llvm::orc::SymbolStringPtr, >>>>> llvm::JITEvaluatedSymbol, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr>, >>>>> llvm::detail::DenseMapPair<llvm::orc::SymbolStringPtr, >>>>> llvm::JITEvaluatedSymbol> > >)>, std::__1::function<void >>>>> (llvm::DenseMap<llvm::orc::JITDylib*, >>>>> llvm::DenseSet<llvm::orc::SymbolStringPtr, >>>>> llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> >, >>>>> llvm::DenseMapInfo<llvm::orc::JITDylib*>, >>>>> llvm::detail::DenseMapPair<llvm::orc::JITDylib*, >>>>> llvm::DenseSet<llvm::orc::SymbolStringPtr, >>>>> llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> > > > const&)>) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2058 >>>>> >>>>> #54 0x00000001062dc4b0 in >>>>> llvm::orc::ExecutionSession::lookup(std::__1::vector<std::__1::pair<llvm::orc::JITDylib*, >>>>> llvm::orc::JITDylibLookupFlags>, >>>>> std::__1::allocator<std::__1::pair<llvm::orc::JITDylib*, >>>>> llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolLookupSet >>>>> const&, llvm::orc::LookupKind, llvm::orc::SymbolState, >>>>> std::__1::function<void (llvm::DenseMap<llvm::orc::JITDylib*, >>>>> llvm::DenseSet<llvm::orc::SymbolStringPtr, >>>>> llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> >, >>>>> llvm::DenseMapInfo<llvm::orc::JITDylib*>, >>>>> llvm::detail::DenseMapPair<llvm::orc::JITDylib*, >>>>> llvm::DenseSet<llvm::orc::SymbolStringPtr, >>>>> llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> > > > const&)>) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2095 >>>>> >>>>> #55 0x00000001062dc6f8 in >>>>> llvm::orc::ExecutionSession::lookup(std::__1::vector<std::__1::pair<llvm::orc::JITDylib*, >>>>> llvm::orc::JITDylibLookupFlags>, >>>>> std::__1::allocator<std::__1::pair<llvm::orc::JITDylib*, >>>>> llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolStringPtr) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/Core.cpp:2120 >>>>> >>>>> #56 0x0000000106392c40 in >>>>> llvm::orc::LazyCallThroughManager::callThroughToSymbol(unsigned long long) >>>>> at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/LazyReexports.cpp:54 >>>>> >>>>> #57 0x00000001063a07a8 in llvm::Error >>>>> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >>>>> long long)::operator()(unsigned long long) const at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/LazyReexports.h:120 >>>>> >>>>> #58 0x00000001063a0760 in decltype(std::__1::forward<llvm::Error >>>>> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >>>>> long long)&>(fp)(std::__1::forward<unsigned long long>(fp0))) >>>>> std::__1::__invoke<llvm::Error >>>>> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >>>>> long long)&, unsigned long long>(llvm::Error >>>>> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >>>>> long long)&, unsigned long long&&) at >>>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4425 >>>>> >>>>> #59 0x00000001063a06f4 in unsigned long long >>>>> std::__1::__invoke_void_return_wrapper<unsigned long >>>>> long>::__call<llvm::Error >>>>> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >>>>> long long)&, unsigned long long>(llvm::Error >>>>> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >>>>> long long)&, unsigned long long&&) at >>>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:317 >>>>> >>>>> #60 0x00000001063a06a8 in >>>>> std::__1::__function::__alloc_func<llvm::Error >>>>> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >>>>> long long), std::__1::allocator<llvm::Error >>>>> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >>>>> long long)>, unsigned long long (unsigned long long)>::operator()(unsigned >>>>> long long&&) at >>>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1533 >>>>> >>>>> #61 0x000000010639f038 in std::__1::__function::__func<llvm::Error >>>>> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >>>>> long long), std::__1::allocator<llvm::Error >>>>> llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(unsigned >>>>> long long)>, unsigned long long (unsigned long long)>::operator()(unsigned >>>>> long long&&) at >>>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1707 >>>>> >>>>> #62 0x0000000106349f94 in std::__1::__function::__value_func<unsigned >>>>> long long (unsigned long long)>::operator()(unsigned long long&&) const at >>>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1860 >>>>> >>>>> #63 0x0000000106349f30 in std::__1::function<unsigned long long >>>>> (unsigned long long)>::operator()(unsigned long long) const at >>>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2419 >>>>> >>>>> #64 0x0000000106349858 in >>>>> llvm::orc::LocalTrampolinePool<llvm::orc::OrcAArch64>::reenter(void*, >>>>> void*) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/include/llvm/ExecutionEngine/Orc/IndirectionUtils.h:111 >>>>> >>>>> #65 0x0000000117634090 in 0x117634090 () >>>>> >>>>> #66 0x0000000106323a08 in llvm::orc::runAsMain(int (*)(int, char**), >>>>> llvm::ArrayRef<std::__1::basic_string<char, std::__1::char_traits<char>, >>>>> std::__1::allocator<char> > >, llvm::Optional<llvm::StringRef>) at >>>>> /Users/igorgomon/dev/third-party/llvm-project/llvm/lib/ExecutionEngine/Orc/ExecutionUtils.cpp:45 >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> LLVM Developers mailing list >>>>> llvm-dev at lists.llvm.org >>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >>>>> >>>>-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200606/034516bc/attachment-0001.html>
Possibly Parallel Threads
- Assertion triggered when running simple hello-world code on iOS device using ORC/LLLazyJIT
- Assertion triggered when running simple hello-world code on iOS device using ORC/LLLazyJIT
- ORC Assertion failure
- JIT interaction with linkonce_odr global variables
- OrcV1 removal