<div dir="ltr">For anyone interested, the reason our JIT compiled code was crashing is that, in LLVM 8, LLJIT::addIRModule() does not record constructors, so global variables were not constructed. (LLLazyJIT does record constructors, but we don't need LLLazyJIT.) The solution was to derive a subclass of LLJIT and provide an addIRModule() method that records constructors and destructors. Perhaps this was fixed in more recent versions of LLVM...<div><br></div><div>Geoff</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Dec 20, 2019 at 9:47 AM Geoff Levner <<a href="mailto:glevner@gmail.com">glevner@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hmm, the things of which you speak (LLJITBuilder, setNotifyLoaded(),<br>
ObjectLinkingLayer) do not seem to exist in LLVM 8. We may have to<br>
jump directly from LLVM 7 to LLVM 9 then....<br>
<br>
Thanks,<br>
Geoff<br>
<br>
On Fri, Dec 20, 2019 at 12:19 AM River Riddle via llvm-dev<br>
<<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br>
><br>
> If you are creating your own object linking layer via LLJITBuilder, you could add the notification yourself. For RTDyldObjectLinkingLayer, you can use `setNotifyLoaded`. For ObjectLinkingLayer, I think you would need to use a `ObjectLinkingLayer::Plugin`. I was able to hook the existing GDB registration listener this way.<br>
><br>
> -- River<br>
><br>
> On Thu, Dec 19, 2019 at 12:02 PM Praveen Velliengiri via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br>
>><br>
>> Dear Geoff,<br>
>> As for as ORCv2 is concerned, there is no event listener facility available as of now.<br>
>><br>
>> Thanks<br>
>><br>
>> On Fri, 20 Dec 2019 at 01:21, David Blaikie via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br>
>>><br>
>>> +Lang HamesĀ  the author/owner of the ORC JIT - though he's out of teh office at the moment I think, so might not get a reply until the new year I'd expect. Perhaps other folks familiar with it might chime in, though.<br>
>>><br>
>>> On Thu, Dec 19, 2019 at 7:31 AM Geoff Levner via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br>
>>>><br>
>>>> I too am in the process of porting our ORC code to ORC v2 and LLJIT. The new API allows me to remove much of our own code, which can only be a good thing. I sometimes get crashes, however, when executing my JIT compiled function, so I thought I would use gdb to try to figure out what is going wrong. And I am dismayed to see that there seems to be no way to provide an event listener to register compiled functions with gdb. LLJIT creates an object linking layer with no listeners, and no way to add listeners afterwards that I can see.<br>
>>>><br>
>>>> Am I missing something? Is there another way to debug JIT compiled code?<br>
>>>><br>
>>>> Geoff<br>
</blockquote></div>