[llvm-dev] Moving to ORCv2 - Compiling debuggable code?

Geoff Levner via llvm-dev llvm-dev at lists.llvm.org
Fri Dec 20 04:52:03 PST 2019


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

Geoff

On Fri, Dec 20, 2019 at 9:47 AM Geoff Levner <glevner at gmail.com> wrote:

> Hmm, the things of which you speak (LLJITBuilder, setNotifyLoaded(),
> ObjectLinkingLayer) do not seem to exist in LLVM 8. We may have to
> jump directly from LLVM 7 to LLVM 9 then....
>
> Thanks,
> Geoff
>
> On Fri, Dec 20, 2019 at 12:19 AM River Riddle via llvm-dev
> <llvm-dev at lists.llvm.org> wrote:
> >
> > 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.
> >
> > -- River
> >
> > On Thu, Dec 19, 2019 at 12:02 PM Praveen Velliengiri via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
> >>
> >> Dear Geoff,
> >> As for as ORCv2 is concerned, there is no event listener facility
> available as of now.
> >>
> >> Thanks
> >>
> >> On Fri, 20 Dec 2019 at 01:21, David Blaikie via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
> >>>
> >>> +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.
> >>>
> >>> On Thu, Dec 19, 2019 at 7:31 AM Geoff Levner via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
> >>>>
> >>>> 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.
> >>>>
> >>>> Am I missing something? Is there another way to debug JIT compiled
> code?
> >>>>
> >>>> Geoff
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20191220/ca59c773/attachment.html>


More information about the llvm-dev mailing list