[llvm-dev] LLVM Developers Meeting JIT BoF -- Request for Topics of Interest

Geoff Levner via llvm-dev llvm-dev at lists.llvm.org
Mon Sep 28 14:05:12 PDT 2020


We use LLJIT. Do addObjectFile() and StaticLibraryDefinitionGenerator
work for ELF objects?

On Mon, Sep 28, 2020 at 10:57 PM Lang Hames <lhames at gmail.com> wrote:
>
> Hi Geoff,
>
>> Importing symbols into the JIT from an object file or static library...?
>
>
> Sure! Are you interested in doing this with the C API, LLJIT, or raw OrcV2 components?
>
> The high-level answer here (which we can dig into further in the BoF) is:
>
> For object files:
> - For raw OrcV2 components you'll want to create an RTDyldObjectLinkingLayer or ObjectLinkingLayer and use the 'add' method.
> - For an LLJIT instance you can just call the 'addObjectFile' method.
> - For the OrcV2 C API you can call the 'LLVMOrcLLJITAddObjectFile' function.
>
> For static libraries:
> - For raw OrcV2 components or an LLJIT instance you can attach a StaticLibraryDefinitionGenerator [1] to the JITDylib that you would like to load the library into. See [2] for an example.
> - For the OrcV2 C API we will just need to add a method to wrap the operation above. We already have 'LLVMOrcCreateDynamicLibrarySearchGeneratorForProcess'. We should add counterparts to that to load dynamic and static libraries from paths.
>
> -- Lang.
>
> [1] https://github.com/llvm/llvm-project/blob/5aa56b242951ab0f0181386ea58509f19b09206e/llvm/include/llvm/ExecutionEngine/Orc/ExecutionUtils.h#L361
> [2] https://github.com/llvm/llvm-project/blob/e7549dafcd33ced4280a81ca1d1ee4cc78ed253f/llvm/tools/lli/lli.cpp#L968
>
>
> On Mon, Sep 28, 2020 at 7:18 AM Geoff Levner <glevner at gmail.com> wrote:
>>
>> Importing symbols into the JIT from an object file or static library...?
>>
>> On Mon, Sep 28, 2020 at 5:29 AM Lang Hames <lhames at gmail.com> wrote:
>>>
>>> Hi Andres,
>>>
>>>> A topic that I'd find interesting is what it'd take to make it easier to
>>>> use profile guided optimization in the context of JIT.  A few years back
>>>> I crudely hacked this together, but it was fairly ugly. It'd be nice to
>>>> make that easier.  Possibly too complicated for that type of session?
>>>
>>>
>>> We couldn't go into detail, but we could kick off a discussion and identify who is interested in working on this. My pitch: We should solve this by investing in JITLink and implementing profiling (and debugger support) via ObjectLinkingLayer::Plugins. Maybe a brief overview of / discussion on how these work would be useful?
>>>
>>> -- Lang.
>>>
>>>
>>> On Fri, Sep 25, 2020 at 7:19 PM Andres Freund <andres at anarazel.de> wrote:
>>>>
>>>> Hi,
>>>>
>>>> On 2020-09-25 19:05:42 -0700, Lang Hames wrote:
>>>> > The 2020 Virtual LLVM Developer's Meeting is coming up the week after next.
>>>> > I'll be hosting a JIT Birds-of-a-Feather session on Thursday the 8th at
>>>> > 10:55am PDT (See http://llvm.org/devmtg/2020-09/schedule/). I'm planning to
>>>> > run this more like a Round Table: Minimal introduction, plenty of time for
>>>> > discussion.
>>>> >
>>>> > Does anyone have any LLVM JIT related topics that they would particularly
>>>> > like to discuss at this session? Any questions that they think could be
>>>> > best answered by a round-table style discussion? I'll aim to rope in the
>>>> > right people and prepare answers to make sure we get the most out of the
>>>> > session.
>>>>
>>>> A topic that I'd find interesting is what it'd take to make it easier to
>>>> use profile guided optimization in the context of JIT.  A few years back
>>>> I crudely hacked this together, but it was fairly ugly. It'd be nice to
>>>> make that easier.  Possibly too complicated for that type of session?
>>>>
>>>> I dimly recall that the main issue was that there is no good way to
>>>> extract the profile information without going through files / applying
>>>> the profile data without going through files.
>>>>
>>>> Greetings,
>>>>
>>>> Andres Freund


More information about the llvm-dev mailing list