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

David Blaikie via llvm-dev
Sat, 20 Jun 2020 01:04:18 -0000

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