[ORC] Break up C-API header Orc.h, and add JITEventListener support.
authorLang Hames <lhames@gmail.com>
Fri, 16 Oct 2020 23:50:24 +0000 (16:50 -0700)
committerLang Hames <lhames@gmail.com>
Mon, 19 Oct 2020 08:59:04 +0000 (01:59 -0700)
commitf35707047e216e99052c15b04fe508d075b6121b
treea3867da8d28de2e5305b48052298ab16f1650650
parent00369849e10943b3afd35505504368a8cdc77100
[ORC] Break up C-API header Orc.h, and add JITEventListener support.

This patch breaks Orc.h up into Orc.h, LLJIT.h and OrcEE.h.

Orc.h contain core Orc utilities.
LLJIT.h contains LLJIT specific types and functions.
OrcEE.h contains types and functions that depend on ExecutionEngine.

The intent is that these headers should match future library divisions: Clients
who only use Orc.h should only need to link againt the Orc core libraries,
clients using LLJIT.h will also need to link against LLVM core, and clients
using OrcEE.h will also have to link against ExecutionEngine.

In addition to breaking up the Orc.h header this patch introduces functions to:
(1) Set the object linking layer creation function on LLJITBuilder.
(2) Create an RTDyldObjectLinkingLayer instance (particularly for use in (1)).
(3) Register JITEventListeners with an RTDyldObjectLinkingLayer.

Together (1), (2) and (3) can be used to force use of RTDyldObjectLinkingLayer
as the underlying JIT linker for LLJIT, rather than the platform default, and
to register event listeners with the RTDyldObjectLinkingLayer.
llvm/examples/OrcV2Examples/OrcV2CBindingsAddObjectFile/OrcV2CBindingsAddObjectFile.c
llvm/examples/OrcV2Examples/OrcV2CBindingsBasicUsage/OrcV2CBindingsBasicUsage.c
llvm/examples/OrcV2Examples/OrcV2CBindingsReflectProcessSymbols/OrcV2CBindingsReflectProcessSymbols.c
llvm/examples/OrcV2Examples/OrcV2CBindingsRemovableCode/OrcV2CBindingsRemovableCode.c
llvm/include/llvm-c/LLJIT.h [new file with mode: 0644]
llvm/include/llvm-c/Orc.h
llvm/include/llvm-c/OrcEE.h [new file with mode: 0644]
llvm/lib/ExecutionEngine/Orc/OrcV2CBindings.cpp