[llvm-dev] Assertion triggered when running simple hello-world code on iOS device using ORC/LLLazyJIT

David Blaikie via llvm-dev
Fri, 19 Jun 2020 23:02:46 -0000

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
>>>>>>>