[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 19:54:19 PDT 2020


Hi Dave,

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


I'm not sure -- I never actually tried to reproduce from the IR. I'm just
inferring that it's simple from the debugging output that Igor attached --
the failing graph only includes a 13-byte constant string and a couple of
labels.

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


I've noticed that the MachO output streamer likes to put ltmpN labels at
the start of sections (which usually guarantees that relocations will be
symbol-based rather than anonymous*), so if anything tickles the streamer
in a way that causes it to output a .text directive then you'll also end up
with a label. If the section ends up being empty then you'll trigger the
assertion. With that in mind I just wrote an assembly test case manually.

-- Lang.

* Fun fact: Relocations for the __DWARF __debug_ranges section are emitted
as anonymous relocations even if the relocation targets have symbols
associated with them. This blew JITLink up a couple of weeks ago when I
first tried running code with debug sections, and resulted in
https://github.com/llvm/llvm-project/commit/d27cbf03cf9c43b4b98f031d63f23cfcfe3d587a#diff-a6ecc90f7f5883bb0fb7082d7afd1e9f
which causes JITLink to ignore all debugging sections.

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

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


More information about the llvm-dev mailing list