David Blaikie via llvm-dev
2020-Jun-19 23:02 UTC
[llvm-dev] Assertion triggered when running simple hello-world code on iOS device using ORC/LLLazyJIT
FWIW - found out LLVM does produce zero length sections if you use function sections (or have an inline function) for functions like this: int f1() { } // at -O0 that'll include a trap instruction, above that it'll be completely empty/zero-length void f2() { __builtin_unreachable(); } // similar I Think - though maybe it's zero length even at -O0 (llvm_unreachable then adds the -O0-checking behavior on top, perhaps) On Fri, Jun 19, 2020 at 10:12 AM Lang Hames <lhames at gmail.com> wrote:> > Hi Igor, > > Thank you for that debugging output, and my apologies for the delayed reply -- I'm afraid this got buried. I see from the output that the text section contains a single block of zero size. I have not encountered this before in my test cases, but it is perfectly legal -- I see no problem with the input object itself. It tripped that assertion in JITLink because the assertion required symbols to start before the end of the block, which is impossible in an empty block. I've relaxed that assertion in 22d7a01dd72 to require that symbols end on or before the end of their blocks. This allows for the possibility of zero-sized symbols at the end of blocks (and at the start of empty blocks). > > I believe this should fix your issue, but if it does not please let me know and we can dig in further. > > Regards, > Lang. > > On Sat, Jun 6, 2020 at 9:06 AM Igor Gomon <igomonv at gmail.com> wrote: >> >> 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
Lang Hames via llvm-dev
2020-Jun-20 00:54 UTC
[llvm-dev] Assertion triggered when running simple hello-world code on iOS device using ORC/LLLazyJIT
Hi Dave, Yep. This is JITLink specific, so we could only have observed it on MachO x86-64 or arm64 until recently. It takes a little bit of poking to get IR to produce a zero-lengh section on MachO, but not much. Jared Wyles recently contributed an initial JITLink ELF implementation, so the fix seems timely -- we might have been about to see more of it. -- Lang. On Fri, Jun 19, 2020 at 4:02 PM David Blaikie <dblaikie at gmail.com> wrote:> FWIW - found out LLVM does produce zero length sections if you use > function sections (or have an inline function) for functions like > this: > > int f1() { } // at -O0 that'll include a trap instruction, above that > it'll be completely empty/zero-length > void f2() { __builtin_unreachable(); } // similar I Think - though > maybe it's zero length even at -O0 (llvm_unreachable then adds the > -O0-checking behavior on top, perhaps) > > On Fri, Jun 19, 2020 at 10:12 AM Lang Hames <lhames at gmail.com> wrote: > > > > Hi Igor, > > > > Thank you for that debugging output, and my apologies for the delayed > reply -- I'm afraid this got buried. I see from the output that the text > section contains a single block of zero size. I have not encountered this > before in my test cases, but it is perfectly legal -- I see no problem with > the input object itself. It tripped that assertion in JITLink because the > assertion required symbols to start before the end of the block, which is > impossible in an empty block. I've relaxed that assertion in 22d7a01dd72 to > require that symbols end on or before the end of their blocks. This allows > for the possibility of zero-sized symbols at the end of blocks (and at the > start of empty blocks). > > > > I believe this should fix your issue, but if it does not please let me > know and we can dig in further. > > > > Regards, > > Lang. > > > > On Sat, Jun 6, 2020 at 9:06 AM Igor Gomon <igomonv at gmail.com> wrote: > >> > >> 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/20200619/85d53838/attachment-0001.html>
David Blaikie via llvm-dev
2020-Jun-20 01:04 UTC
[llvm-dev] Assertion triggered when running simple hello-world code on iOS device using ORC/LLLazyJIT
On Fri, Jun 19, 2020 at 5:54 PM Lang Hames <lhames at gmail.com> wrote:> > Hi Dave, > > Yep. This is JITLink specific, so we could only have observed it on MachO x86-64 or arm64 until recently.Ah, fair enough -presumably if you had one of those empty functions as the only function in a module you'd get this, then? (& ORC likes small modules, so maybe not too much of a stretch to get such a situation)> It takes a little bit of poking to get IR to produce a zero-lengh section on MachO, but not much.Out of curiosity - what'd it take?> > Jared Wyles recently contributed an initial JITLink ELF implementation, so the fix seems timely -- we might have been about to see more of it. > > -- Lang. > > On Fri, Jun 19, 2020 at 4:02 PM David Blaikie <dblaikie at gmail.com> wrote: >> >> FWIW - found out LLVM does produce zero length sections if you use >> function sections (or have an inline function) for functions like >> this: >> >> int f1() { } // at -O0 that'll include a trap instruction, above that >> it'll be completely empty/zero-length >> void f2() { __builtin_unreachable(); } // similar I Think - though >> maybe it's zero length even at -O0 (llvm_unreachable then adds the >> -O0-checking behavior on top, perhaps) >> >> On Fri, Jun 19, 2020 at 10:12 AM Lang Hames <lhames at gmail.com> wrote: >> > >> > Hi Igor, >> > >> > Thank you for that debugging output, and my apologies for the delayed reply -- I'm afraid this got buried. I see from the output that the text section contains a single block of zero size. I have not encountered this before in my test cases, but it is perfectly legal -- I see no problem with the input object itself. It tripped that assertion in JITLink because the assertion required symbols to start before the end of the block, which is impossible in an empty block. I've relaxed that assertion in 22d7a01dd72 to require that symbols end on or before the end of their blocks. This allows for the possibility of zero-sized symbols at the end of blocks (and at the start of empty blocks). >> > >> > I believe this should fix your issue, but if it does not please let me know and we can dig in further. >> > >> > Regards, >> > Lang. >> > >> > On Sat, Jun 6, 2020 at 9:06 AM Igor Gomon <igomonv at gmail.com> wrote: >> >> >> >> 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