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

Lang Hames via llvm-dev llvm-dev at lists.llvm.org
Fri Jun 19 17:54:16 PDT 2020


Hi Dave,

Yep. This is JITLink specific, so we could only have observed it on MachO
x86-64 or arm64 until recently. It takes a little bit of poking to get IR
to produce a zero-lengh section on MachO, but not much.

Jared Wyles recently contributed an initial JITLink ELF implementation, so
the fix seems timely -- we might have been about to see more of it.

-- Lang.

On Fri, Jun 19, 2020 at 4:02 PM David Blaikie <dblaikie at gmail.com> wrote:

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


More information about the llvm-dev mailing list